search for: machinefunctionanalysis

Displaying 20 results from an estimated 34 matches for "machinefunctionanalysis".

2012 Jul 30
0
[LLVMdev] global control flow graph at machine code level
Hi Abhishek, On Sunday, July 29, 2012 18:32:11 AbhishekR wrote: > It seems like I may have to modify the way MachineFunction is instantiated in MachineFunctionAnalysis. Instead of doing it per Function, it may have to be done for the entire Module by instantiating MachineFunction objects for every Function inside the Module. This might require major changes to the PassManager framework as well. Is there some work in this direction and code that someone can share?...
2012 Jul 29
3
[LLVMdev] global control flow graph at machine code level
...tements inside the callee. Currently, the codegen module processes one MachineFunction at a time and hence I can't find a way to gather information about other MachineFunction's and their MachineBasicBlock's. It seems like I may have to modify the way MachineFunction is instantiated in MachineFunctionAnalysis. Instead of doing it per Function, it may have to be done for the entire Module by instantiating MachineFunction objects for every Function inside the Module. This might require major changes to the PassManager framework as well. Is there some work in this direction and code that someone can share?...
2009 Nov 07
2
[LLVMdev] MachineFunction::get
Hi I have a ModulePass in LLC that runs after most of codegen completes, right before OBJ emission. I want the ModulePass to iterate over all MachineFunctions, emulating them. I used to do this by iterating over all Module Function's, and using MachineFunction::get() to get the MachineFunction associated with said Function. In LLVM 2.6, MachineFunction::get() is gone. What is the new way
2009 Dec 03
0
[LLVMdev] PassManager again...
...v wrote: > > Andreas Neustifter wrote: >> >> When I use AU.addRequiredID(ProfileLoaderPassID) I get assertions >> that a normal constructor is not available. Interesting enough its >> not the ProfileInfoLoader constructor thats misssing but the one from >> MachineFunctionAnalysis, which indeed has none. > > Right. You cannot schedule any pass IR-level pass after > MachineFunctionAnalysis. I have no idea whether this is intentional or > not. I found out about that one too. As mentioned in MachineFunctionPass.h:42 a MachineFunctionPass that overrides getAnal...
2009 Nov 20
0
[LLVMdev] PassManager again...
...t not the one from ProfileInfoLoaderPass. (Which is immediately discarded after creation.) When I use AU.addRequiredID(ProfileLoaderPassID) I get assertions that a normal constructor is not available. Interesting enough its not the ProfileInfoLoader constructor thats misssing but the one from MachineFunctionAnalysis, which indeed has none. This raises the question why different passes are loaded (in a different order) when I use addRequiredID instead of addRequired<>. To get this clear: I try to use the ProfileInfo form a ModulePass in a subsequent FunctionPass, can this be a problem? Andi
2009 Nov 20
2
[LLVMdev] PassManager again...
On Fri, Nov 20, 2009 at 6:54 AM, Andreas Neustifter <astifter-llvm at gmx.at> wrote: > > If I use  AU.addRequired<ProfileInfo>() in SelectionDAGISel.cpp the > wrong ProfileInfo is used. It uses the "No ProfileInfo" implementation > if ProfileInfo but not the one from ProfileInfoLoaderPass. (Which is > immediately discarded after creation.) > You need to
2016 Mar 18
2
[GSoC 2016] Need more info on Add a MachineModulePass
...> Looking at the current implementation of the Module class, it seems that Module class maintains Linked List to GlobalVariables, Functions, GlobalAliasis ... and meta informations about the Module like file name , Module ID , Target Triple DataLayout etc. And currently for MachineFunction pass MachineFunctionAnalysis creates object of MachineFunction. The MachineFunction constructor takes Function, TargetMachine etc as arguments and creates MachineBasicBlocks and thus provides access to MachineInstr. Now I have very rough idea to inherit the Module Pass and use the information available in Module class to crea...
2013 Sep 06
5
[LLVMdev] Extracting libmachine from libcodegen (bug 1121)
...ption that we'll be moving only the modules that start with 'Machine' into the new library. These are: - MachineBasicBlock - MachineBlockFrequencyInfo - MachineBlockPlacement - MachineBranchProbabilityInfo - MachineCodeEmitter - MachineCopyPropagation - MachineCSE - MachineDominators - MachineFunctionAnalysis - MachineFunction - MachineFunctionPass - MachineFunctionPrinterPass - MachineInstrBundle - MachineInstr - MachineLICM - MachineLoopInfo - MachineModuleInfo - MachineModuleInfoImpls - MachinePassRegistry - MachinePostDominators - MachineRegisterInfo - MachineScheduler - MachineSink - MachineSSAUpda...
2013 Sep 11
0
[LLVMdev] Extracting libmachine from libcodegen (bug 1121)
...at start with 'Machine' into the new library. These are: > > - MachineBasicBlock > - MachineBlockFrequencyInfo > - MachineBlockPlacement > - MachineBranchProbabilityInfo > - MachineCodeEmitter > - MachineCopyPropagation > - MachineCSE > - MachineDominators > - MachineFunctionAnalysis > - MachineFunction > - MachineFunctionPass > - MachineFunctionPrinterPass > - MachineInstrBundle > - MachineInstr > - MachineLICM > - MachineLoopInfo > - MachineModuleInfo > - MachineModuleInfoImpls > - MachinePassRegistry > - MachinePostDominators > - MachineRe...
2009 Nov 17
4
[LLVMdev] PassManager again...
Hi, Devang Patel wrote: > On Tue, Nov 17, 2009 at 9:03 AM, Andreas Neustifter > <astifter-llvm at gmx.at> wrote: > >> Okay, so the ProfileInfoLoader is working, but when I examine the executions more closely I see that the ProfileInfo generated by the ProfileInfoLoader is immediately discarded, when the SelectionDAGISel kicks in the "No Profile Info"-Implementation
2011 Mar 11
1
[LLVMdev] Accessing an empty machine function before instruction selection?
...39;m trying to access the MachineFunctionInfo structure from a pre-ISel pass. In order to do this I have to get access to the MachineFunction and then call getInfo(). Currently in my pass I request it via: void AMDILBarrierDetect::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<MachineFunctionAnalysis>(); FunctionPass::getAnalysisUsage(AU); } However, I am getting an assert: assert(NormalCtor && "Cannot call createPass on PassInfo without default ctor!"); First question, is this possible? If so, how do I get NormalCtor to not be NULL? Second question, if I w...
2016 Sep 03
2
llc error
I updated to the latest revision and now llvm does not build and quits cmake with CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message): Found unknown source file ../llvm-revec/lib/CodeGen/MachineFunctionAnalysis.cpp Please update ../llvm-revec/lib/CodeGen/CMakeLists.txt Thanks On Sat, Sep 3, 2016 at 2:09 AM, Craig Topper <craig.topper at gmail.com> wrote: > What version of llvm are you using? This test doesn't fail on my trunk > build. But if you're using an older version I can...
2015 May 27
3
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...to a new header WinEHPrepare.h - Get rid of several unused #includes in MachineIR cpp files that include passes. After that it should be possible to move the Machine IR files out of CodeGen without them actually including any CodeGen headers. And all the Machine IR passes like MachineFunctionPass, MachineFunctionAnalysis, etc. will remain in CodeGen. Alex. > > >> Also, if we’re getting crazy here, CodeGen in clang should be renamed > to IRGen, AsmPrinter should be renamed to MCGen, and SelectionDAG should be > replaced ;-) > > > > I'm happy to actually do the CodeGen -> IRGe...
2016 Mar 16
3
[GSoC 2016] Need more info on Add a MachineModulePass
Hello, Probably this may be too late to start thinking about this project but I think this is particularly useful feature for LLVM. A quick use I can think of this is Implementing Inter-procedural Register Allocation ( for Research purpose ). I have start looking at the code for MachineFunctionPass, I think currently MachineModule class is not available ( the project work will include that ) but
2015 May 27
0
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...HPrepare.h > - Get rid of several unused #includes in MachineIR cpp files that include passes. > > After that it should be possible to move the Machine IR files out of CodeGen without them actually including any CodeGen headers. > And all the Machine IR passes like MachineFunctionPass, MachineFunctionAnalysis, etc. will remain in CodeGen. > > Alex. > Something Chandler pointed out on IRC is that #include dependencies aren't enough -- we also need to root out any symbol dependencies. Have you checked for symbols (mostly, functions) that are declared in a header you're planning to move...
2009 Nov 17
0
[LLVMdev] Getting optimization level in getAnalysisUsage()
Hi, Is it possible to access the optimization level in getAnalysisUsage() on a machine function pass? Once the pass is running, it is available through getAnalysis<MachineFunctionAnalysis>().getOptLevel(). That doesn't work during getAnalysisUsage(), though. /jakob
2015 May 19
2
[LLVMdev] Removing AvailableExternal values in GlobalDCE (was Re: RFC: ThinLTO Impementation Plan)
...o not codegen any 'available_externally' functions at all, they >> have >> 35| // definitions outside the translation unit. >> 36| if (F.hasAvailableExternallyLinkage()) >> 37| return false; >> 38| >> 39| MachineFunction &MF = getAnalysis<MachineFunctionAnalysis>().getMF(); >> 40| return runOnMachineFunction(MF); >> 41| } > > Ok, thanks for digging this up. I guess that would work for the > imported functions as well, but it seems like a waste of compile time > if they are not useful after inlining/global opt. Is there any reas...
2013 Sep 12
2
[LLVMdev] Extracting libmachine from libcodegen (bug 1121)
...he “Machine” modules you listed above include machine code analysis or transform passes that you probably don’t want. Pruning the list to basic IR support: > >> - MachineBasicBlock >> - MachineBranchProbabilityInfo >> - MachineCodeEmitter >> - MachineDominators >> - MachineFunctionAnalysis >> - MachineFunction >> - MachineFunctionPass >> - MachineFunctionPrinterPass >> - MachineInstrBundle >> - MachineInstr >> - MachineLoopInfo >> - MachineModuleInfo >> - MachineModuleInfoImpls >> - MachinePassRegistry >> - MachinePostDomina...
2015 May 27
1
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...gt; - Get rid of several unused #includes in MachineIR cpp files that include passes. >> >> After that it should be possible to move the Machine IR files out of CodeGen without them actually including any CodeGen headers. >> And all the Machine IR passes like MachineFunctionPass, MachineFunctionAnalysis, etc. will remain in CodeGen. >> >> Alex. >> > > Something Chandler pointed out on IRC is that #include dependencies > aren't enough -- we also need to root out any symbol dependencies. > Have you checked for symbols (mostly, functions) that are declared > in...
2015 Jun 03
2
[LLVMdev] Removing AvailableExternal values in GlobalDCE (was Re: RFC: ThinLTO Impementation Plan)
...// definitions outside the translation unit. >> >> >> 36| if (F.hasAvailableExternallyLinkage()) >> >> >> 37| return false; >> >> >> 38| >> >> >> 39| MachineFunction &MF = >> >> >> getAnalysis<MachineFunctionAnalysis>().getMF(); >> >> >> 40| return runOnMachineFunction(MF); >> >> >> 41| } >> >> > >> >> > Ok, thanks for digging this up. I guess that would work for the >> >> > imported functions as well, but it seems like a wast...