search for: refreshcallgraph

Displaying 7 results from an estimated 7 matches for "refreshcallgraph".

2013 Jan 24
2
[LLVMdev] FunctionPass question
...CallInst::setCalledFunction to replace the callee with the appropriate intrinsic (using Intrinsic::getDeclaration). After the pass runs I get an assertion from CallGraphSCCPass: clang-3.3: /home/predmond/src/ssg_llvm/llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp:338: bool {anonymous}::CGPassManager::RefreshCallGraph(llvm::CallGraphSCC&, llvm::CallGraph&, bool): Assertion `CallSites.empty() && "Dangling pointers found in call sites map"' failed. My guess is that I'm modifying the module illegally in a FunctionPass and things break. I see a similar approach used in InstCombineC...
2018 May 07
2
Preservation of CallGraph (by BasicBlockPass, FunctionPass)
...it seems to be legal to remove calls, and that should not impact the CFG, right? But it will impact the CallGraph. I believe that when the FunctionPass Manager is used from within the Call Graph SCC Pass Manager, then the CGPassManager will check the modification status from the FPManager and call RefreshCallGraph() (or set CallGraphUpToDate=false;) in case modification had been done. Thus, it seems to be legit for a FunctionPass (and thereby also the FunctionPassManager) to not always preserve the CallGraph. And I think this is handled within the CGPassManager, but not when FPManager is executed directly fr...
2018 May 07
0
Preservation of CallGraph (by BasicBlockPass, FunctionPass)
...ls, and that should not impact the CFG, right? But it will impact > the CallGraph. > > > > I believe that when the FunctionPass Manager is used from within the Call > Graph SCC Pass Manager, then the CGPassManager will check the modification > status from the FPManager and call RefreshCallGraph() (or set > CallGraphUpToDate=false;) in case modification had been done. Thus, it seems > to be legit for a FunctionPass (and thereby also the FunctionPassManager) to > not always preserve the CallGraph. And I think this is handled within the > CGPassManager, but not when FPManager is...
2018 May 08
2
Preservation of CallGraph (by BasicBlockPass, FunctionPass)
...right? But it will impact > > the CallGraph. > > > > > > > > I believe that when the FunctionPass Manager is used from within the Call > > Graph SCC Pass Manager, then the CGPassManager will check the > modification > > status from the FPManager and call RefreshCallGraph() (or set > > CallGraphUpToDate=false;) in case modification had been done. Thus, it > seems > > to be legit for a FunctionPass (and thereby also the FunctionPassManager) > to > > not always preserve the CallGraph. And I think this is handled within the > > CGPassManag...
2018 May 08
0
Preservation of CallGraph (by BasicBlockPass, FunctionPass)
...CallGraph. > > > > > > > > > > > > I believe that when the FunctionPass Manager is used from within the > Call > > > Graph SCC Pass Manager, then the CGPassManager will check the > > modification > > > status from the FPManager and call RefreshCallGraph() (or set > > > CallGraphUpToDate=false;) in case modification had been done. Thus, it > > seems > > > to be legit for a FunctionPass (and thereby also the > FunctionPassManager) > > to > > > not always preserve the CallGraph. And I think this is handled wi...
2013 Jan 24
0
[LLVMdev] FunctionPass question
...dFunction to replace the callee with the appropriate intrinsic (using Intrinsic::getDeclaration). > > After the pass runs I get an assertion from CallGraphSCCPass: > > clang-3.3: /home/predmond/src/ssg_llvm/llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp:338: bool {anonymous}::CGPassManager::RefreshCallGraph(llvm::CallGraphSCC&, llvm::CallGraph&, bool): Assertion `CallSites.empty() && "Dangling pointers found in call sites map"' failed. > > My guess is that I'm modifying the module illegally in a FunctionPass and things break. I see a similar approach used in Ins...
2016 Jul 15
2
RFC: Coroutine Optimization Passes
...ther virtual function to CGSCC pass: virtual bool restartRequested() const { return false; } a pass can override it and return true, if restart is required. Option 4: CoroSplit can add a fake indirect call to be replaced later with a direct call in a CoroElide function pass. CGPassManager::RefreshCallGraph will detect devirtualization and restart the pipeline. Hacky, but, no changes to CGPassManager required. Out of these four options, I have a slight preference for 2 or 3, but, I would like to hear your opinion. Thoughts on ThinLTO and LTO =========================== CoroEarly can run during...