================
@@ -1126,13 +1130,23 @@ PreservedAnalyses ExpandFpPass::run(Function &F,
FunctionAnalysisManager &FAM) {
AssumptionCache *AC = nullptr;
if (OptLevel != CodeGenOptLevel::None)
AC = &FAM.getResult<AssumptionAnalysis>(F);
+
+ auto &MAMProxy = FAM.getResult<ModuleAnalysisManagerFunctionProxy>(F);
+ const RTLIB::RuntimeLibcallsInfo *Libcalls =
+ MAMProxy.getCachedResult<RuntimeLibraryAnalysis>(*F.getParent());
----------------
frederik-h wrote:
@arsenm In the PR description, you wrote:
> Not sure I'm doing the new pass manager handling correctly. I do
> not like needing to manually check if the cached module pass is
> available and manually erroring in every pass.
I am not super familiar with the details of this, but I had a look at the
implementation and the documentation. The documentation on
`ModuleAnalysisManagerFunctionProxy` aka
`OuterAnalysisManagerProxy<ModuleAnalysisManager, Function>` in
`include/llvm/IR/PassManager.h` states that:
> This proxy only exposes the const interface of the outer analysis manager,
> to indicate that you cannot cause an outer analysis to run from within an
> inner pass. Instead, you must rely on the getCachedResult API.
> This is due to keeping potential future concurrency in mind.
Hence it seems to me that you cannot/should not request the computation of the
analysis information from here and you need to do it in this way.
https://github.com/llvm/llvm-project/pull/165197
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits