1818#include " llvm/ADT/SmallVector.h"
1919#include " llvm/Analysis/AssumptionCache.h"
2020#include " llvm/Analysis/GlobalsModRef.h"
21+ #include " llvm/Analysis/RuntimeLibcallInfo.h"
2122#include " llvm/Analysis/SimplifyQuery.h"
2223#include " llvm/Analysis/ValueTracking.h"
2324#include " llvm/CodeGen/ISDOpcodes.h"
@@ -1092,6 +1093,8 @@ class ExpandFpLegacyPass : public FunctionPass {
10921093 auto *TM = &getAnalysis<TargetPassConfig>().getTM <TargetMachine>();
10931094 auto *TLI = TM->getSubtargetImpl (F)->getTargetLowering ();
10941095 AssumptionCache *AC = nullptr ;
1096+ const RTLIB::RuntimeLibcallsInfo *Libcalls =
1097+ &getAnalysis<RuntimeLibraryInfoWrapper>().getRTLCI (*F.getParent ());
10951098
10961099 if (OptLevel != CodeGenOptLevel::None && !F.hasOptNone ())
10971100 AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache (F);
@@ -1104,6 +1107,7 @@ class ExpandFpLegacyPass : public FunctionPass {
11041107 AU.addRequired <AssumptionCacheTracker>();
11051108 AU.addPreserved <AAResultsWrapperPass>();
11061109 AU.addPreserved <GlobalsAAWrapperPass>();
1110+ AU.addRequired <RuntimeLibraryInfoWrapper>();
11071111 }
11081112};
11091113} // namespace
@@ -1126,13 +1130,23 @@ PreservedAnalyses ExpandFpPass::run(Function &F, FunctionAnalysisManager &FAM) {
11261130 AssumptionCache *AC = nullptr ;
11271131 if (OptLevel != CodeGenOptLevel::None)
11281132 AC = &FAM.getResult <AssumptionAnalysis>(F);
1133+
1134+ auto &MAMProxy = FAM.getResult <ModuleAnalysisManagerFunctionProxy>(F);
1135+ const RTLIB::RuntimeLibcallsInfo *Libcalls =
1136+ MAMProxy.getCachedResult <RuntimeLibraryAnalysis>(*F.getParent ());
1137+ if (!Libcalls) {
1138+ F.getContext ().emitError (" 'runtime-libcall-info' analysis required" );
1139+ return PreservedAnalyses::all ();
1140+ }
1141+
11291142 return runImpl (F, TLI, AC) ? PreservedAnalyses::none ()
11301143 : PreservedAnalyses::all ();
11311144}
11321145
11331146char ExpandFpLegacyPass::ID = 0 ;
11341147INITIALIZE_PASS_BEGIN (ExpandFpLegacyPass, " expand-fp" ,
11351148 " Expand certain fp instructions" , false , false )
1149+ INITIALIZE_PASS_DEPENDENCY(RuntimeLibraryInfoWrapper)
11361150INITIALIZE_PASS_END(ExpandFpLegacyPass, " expand-fp" , " Expand fp" , false , false )
11371151
11381152FunctionPass *llvm::createExpandFpPass(CodeGenOptLevel OptLevel) {
0 commit comments