search for: analysismanager

Displaying 20 results from an estimated 43 matches for "analysismanager".

2018 Sep 02
2
possible inconsistency in PassManagerInternal.h
...is. Is this intentional? My naive intuition is that we should have removed PreservedAnalysisT from the template and used PreservedAnalysis. However, everywhere else in the file PreservedAnalysisT is used as template parameter. Am I missing something obvious? 2- A similar issue arises when using AnalysisManager. Both PassConcept and PassModel have a template typename `AnalysisManagerT`. However, AnalysisPassConcept and AnalysisPassModel have no such template parameter; instead, they use the forward-declared AnalysisManager type, defined in PassManager.h Again, is there a particular reason for this appa...
2016 Jul 13
5
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...essing the dangling TargetLibraryInfo). How should we solve this? I see two potential solutions: 1. Analyses must somehow list the analyses they depend on (either by overriding "invalidate" to make sure that they invalidate them, or something "declarative" that would allow the AnalysisManager to walk the transitive dependencies). 2. The AnalysisManager must do a somewhat complicated dance to track when analyses call back into it in order to get other analyses. Any other ideas? Any thoughts about how best to fix this? For those interested, a reduced test case is /home/sean/pg/releas...
2018 Aug 21
2
Function optimization pass
Hi Philip, Thanks for the response. Under llvm-5.0.2 and llvm-6.0.1 in Debug mode, the crash hit at the same assertion: /usr/local/include/llvm/IR/PassManager.h:689: typename PassT::Result& llvm::AnalysisManager<IRUnitT, ExtraArgTs>::getResult(IRUnitT&, ExtraArgTs ...) [with PassT = llvm::InnerAnalysisManagerProxy<llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::Function>; IRUnitT = llvm::Function; ExtraArgTs = {}; typename PassT::Result = llvm::InnerAn...
2014 Jun 18
2
[LLVMdev] PM: High-level review of the new Pass Manager (so far)
...overview (assuming IIUC): - The driver supports simple declarative syntax for specifying passes to run. E.g., `module(a,b,function(c,d),e)` runs module passes `a` and `b`, then function passes `c` and `d` for each function, and then module pass `e`. - There is a new concept of an AnalysisManager (AM), which runs analyses on-demand and caches the results. - Analysis passes are split conceptually from transformation passes. - Analysis: run: (IRUnit*, AM*) -> Result - Transformation: run: (IRUnit*, AM*) -> PreservedAnalyses Note that neither of these ma...
2016 Jul 13
3
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...> >> How should we solve this? I see two potential solutions: >> 1. Analyses must somehow list the analyses they depend on (either by >> overriding "invalidate" to make sure that they invalidate them, or >> something "declarative" that would allow the AnalysisManager to walk the >> transitive dependencies). >> > > I think this is the right approach. I would personally start by overriding > the invalidate callback everywhere that it is necessary, and see how bad > that becomes. > > If it becomes common and burdensome, then we can ch...
2017 Jan 28
2
AliasAnalysis supported by the new Pass Manager in v3.9 ?
Looking at the InstructionCombining.cpp code: PreservedAnalyses InstCombinePass::run(Function &F,                                        AnalysisManager<Function> &AM) {   auto &AC = AM.getResult<AssumptionAnalysis>(F);   auto &DT = AM.getResult<DominatorTreeAnalysis>(F);   auto &TLI = AM.getResult<TargetLibraryAnalysis>(F);   auto *LI = AM.getCachedResult<LoopAnalysis>(F);   // FIXME: The AliasAnalys...
2019 Jun 13
3
Using the new pass manager for CodeGen
...me assembly utilities in BackendUtils.cpp. My initial thoughts in this direction were that there would need to be some new pass manager machinery, for example, things like FunctionToMachineFunctionPassAdaptor that handles what MachineFunctionPass::runOnFunction used to do, along with the associated AnalysisManager plumbing to understand units of MIR. 2. Are there any compile time improvements expected from porting CodeGen passes in the first place? As far as I can tell, the llc pass pipeline seems to be fairly well fixed in terms of phase ordering, and all the analyses are thrown out from opt anyway. Thank...
2018 Apr 18
2
LLVM Pass Managers
...e default, but we are really close > to switching over the the new one. Both opt and clang have switches to > enable the new one, by calling `opt -passes="...."` or `clang > -fexperimental-new-pass-manager`. PassBuilder is essentially a big > factory to produce PassManager and AnalysisManager objects for the passes > and analyses included in core LLVM. If you develop analyses and passes, I'd > suggest doing so against the new PM, especially if you plan on upstreaming > your work. > > Cheers, > Philip > -------------- next part -------------- An HTML attachment w...
2018 Aug 20
2
Function optimization pass
...d = ...load module from LLVM IR bitcode file go_back.bc... auto lift_func = mod->getFunction("go_back"); if (not lift_func) {     llvm::errs() << "Error: cannot get function\n";     return 0; } auto pass_builder = llvm::PassBuilder{}; auto fa_manager = llvm::FunctionAnalysisManager{}; pass_builder.registerFunctionAnalyses(fa_manager); auto fp_manager = pass_builder.buildFunctionSimplificationPipeline(llvm::PassBuilder::OptimizationLevel::O2); fp_manager.run(*lift_func, fa_manager); ...print mod... but the program crashes always at fp_manager.run. Strange enough, LLVM...
2019 Jul 22
2
Run llvm pass from standalone project
Hi all, I am trying to use LLVM's AliasAnalysis pass, but from a standalone tool that uses llvm libraries. The following is the code snippet I am currently using. PassBuilder PB; auto mod_manager = ModuleAnalysisManager { }; PB.registerModuleAnalyses(mod_manager); AAResults& AAR = mod_manager.getResult<AAManager>(*M); But the code fails at .getResult with the following error: /llvm/include/llvm/IR/PassManager.h:778: typename PassT::Result& llvm::AnalysisManager<IRUnitT, ExtraArgTs>::getResult(...
2018 Apr 17
0
LLVM Pass Managers
...s currently still the default, but we are really close to switching over the the new one. Both opt and clang have switches to enable the new one, by calling `opt -passes="...."` or `clang -fexperimental-new-pass-manager`. PassBuilder is essentially a big factory to produce PassManager and AnalysisManager objects for the passes and analyses included in core LLVM. If you develop analyses and passes, I'd suggest doing so against the new PM, especially if you plan on upstreaming your work. Cheers, Philip -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lis...
2018 Apr 19
0
LLVM Pass Managers
...e are really close >> to switching over the the new one. Both opt and clang have switches to >> enable the new one, by calling `opt -passes="...."` or `clang >> -fexperimental-new-pass-manager`. PassBuilder is essentially a big >> factory to produce PassManager and AnalysisManager objects for the passes >> and analyses included in core LLVM. If you develop analyses and passes, I'd >> suggest doing so against the new PM, especially if you plan on upstreaming >> your work. >> >> Cheers, >> Philip >> > > -------------- next pa...
2018 Jul 21
2
Registering passes on a module
...h the PassBuilder to optimize the result of MCJIT (I assume, this is a requirement for performance). So I do this: llvm::PassBuilder passBuilder; llvm::ModulePassManager modulePassManager = passBuilder.buildPerModuleDefaultPipeline(llvm::PassBuilder::OptimizationLevel::O3); llvm::ModuleAnalysisManager moduleAnalysisManager; passBuilder.registerModuleAnalyses(moduleAnalysisManager); modulePassManager.run(*module, moduleAnalysisManager); with module being a pointer to an LLVM module. Unfortunately, the moduleAnalysisManager has only the module passes, but not the function ones that are wr...
2016 Jul 13
3
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...d we solve this? I see two potential solutions: >>>> 1. Analyses must somehow list the analyses they depend on (either by >>>> overriding "invalidate" to make sure that they invalidate them, or >>>> something "declarative" that would allow the AnalysisManager to walk the >>>> transitive dependencies). >>>> >>> >>> I think this is the right approach. I would personally start by >>> overriding the invalidate callback everywhere that it is necessary, and see >>> how bad that becomes. >>>...
2018 Apr 17
2
LLVM Pass Managers
Hello all, I have 2 separate questions: 1, What are the differences between *LegacyPassManager* and *PassManager*? I see that *opt* uses the former most of the times while the latter is used via *PassBuilder* API when an user wants to build her own pipeline, but I have no idea why so. What to use and when to use it is not clear to me. 2, I've asked this question once but have had no answer,
2018 Apr 20
2
LLVM Pass Managers
...;>> close to switching over the the new one. Both opt and clang have switches >>> to enable the new one, by calling `opt -passes="...."` or `clang >>> -fexperimental-new-pass-manager`. PassBuilder is essentially a big >>> factory to produce PassManager and AnalysisManager objects for the passes >>> and analyses included in core LLVM. If you develop analyses and passes, I'd >>> suggest doing so against the new PM, especially if you plan on upstreaming >>> your work. >>> >>> Cheers, >>> Philip >>> >...
2012 Oct 07
2
[LLVMdev] getting pointer to CFG object for any given C program
...ing CFG object. From my main program main.cpp, how can I get pointer to CFG object if argv[1] = hello.c ? I have seen following places among many in clang/lib or clang/include: llvm-3.1.src/tools/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp:96 - calls checkASTCodeBody(const Decl *D, AnalysisManager& mgr, BugReporter &BR) if (CFG *cfg = mgr.getCFG(D)) call cfg->dump() llvm-3.1.src/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:472 - AnalysisConsumer::HandleCode(Decl *D, AnalysisMode Mode, SetOfConstDecls *VisitedCallees) /usr/home3/rks/llvm/llvm-3.1.src/too...
2016 Jul 25
3
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...analysis results from exposing a utility that transforms IR, and the result can certainly cache whether or not this transformation has been performed. > > ``` > FooTransformation.cpp<http://FooTransformation.cpp>: > > PreservedAnalyses FooTransformation::run(Function &F, AnalysisManager AM) { > // Must be called before getting analyses, as it might invalidate some. > canonicalizeIR<LCSSA>(F, AM); > > ... > } > > > include/IR/Canonicalization.h: > > template <typename CanonicalizationT, typename IRUnitT> > void canonicalizeIR(IRUni...
2018 Apr 20
2
LLVM Pass Managers
...ose to switching over the the new one. Both opt and clang have switches >>>> to enable the new one, by calling `opt -passes="...."` or `clang >>>> -fexperimental-new-pass-manager`. PassBuilder is essentially a big >>>> factory to produce PassManager and AnalysisManager objects for the passes >>>> and analyses included in core LLVM. If you develop analyses and passes, I'd >>>> suggest doing so against the new PM, especially if you plan on upstreaming >>>> your work. >>>> >>>> Cheers, >>>>...
2018 Apr 20
0
LLVM Pass Managers
...s currently still the default, but we are really close to switching over the the new one. Both opt and clang have switches to enable the new one, by calling `opt -passes="...."` or `clang -fexperimental-new-pass-manager`. PassBuilder is essentially a big factory to produce PassManager and AnalysisManager objects for the passes and analyses included in core LLVM. If you develop analyses and passes, I'd suggest doing so against the new PM, especially if you plan on upstreaming your work. > > Cheers, > Philip > > > -------------- next part -------------- An HTML attachment w...