search for: criticaledgeremoval_f

Displaying 6 results from an estimated 6 matches for "criticaledgeremoval_f".

2006 Jul 05
0
[LLVMdev] Critical edges
...tical edges contain the same BasicBlock. The code is small. Could someone read it, and tell me if it is likely to generate incorrect code (besides the problem of not inserting branch instructions)? Thanks a lot, Fernando Code --------------------------------------------------------------- void CriticalEdgeRemoval_Fer::getAnalysisUsage (AnalysisUsage & AU) const { AU.addPreserved<ETForest>(); AU.addPreserved<DominatorSet>(); AU.addPreserved<ImmediateDominators>(); AU.addPreserved<DominatorTree>(); AU.addPreserved<DominanceFrontier>(); AU.addPreserved&lt...
2007 Aug 19
1
[LLVMdev] MBB Critical edges
...ges of machine >> blocks, >> so that you guys can see if it is worth adding to LLVM's main >> branch. Up >> to now, as far as I know, there is no pass to remove critical edges of >> machine functions in LLVM. -------------- next part -------------- //===----------- CriticalEdgeRemoval_Fer - Break critical edges ----------===// // // The LLVM Compiler Infrastructure // // This files was originally developed by the LLVM research group. Fernando // at cs dot ucla dot edu has changed the file a little, so it could be used as // a pre-register allocation pass. // //...
2006 Jul 04
2
[LLVMdev] Critical edges
On Tue, 4 Jul 2006, Fernando Magno Quintao Pereira wrote: > However, it does not remove all the critical edges. I am getting a very > weird dataflow graph (even without the Break Critical edges pass). The > dataflow generated by MachineFunction::dump() for the program below is > given here: > http://compilers.cs.ucla.edu/fernando/projects/soc/images/loop_no_crit2.pdf ... > The
2006 Jul 09
2
[LLVMdev] Critical edges
...LBB1_7: ;no_exit mr r2, r6 LBB1_8: ;no_exit cmpwi cr0, r5, 0 add r2, r2, r3 bgt cr0, LBB1_5 ;no_exit.no_exit_llvm_crit_edge LBB1_9: ;no_exit mr r2, r6 b LBB1_8 ;no_exit LBB1_4: ;no_exit.loopexit_llvm_crit_edge The code is this one below: void CriticalEdgeRemoval_Fer::split_critical_edge (MachineBasicBlock & src, MachineBasicBlock & dst, MachineFunction & mf) { const BasicBlock * src_bb = src.getBasicBlock(); MachineBasicBlock * crit_mbb = new MachineBasicBlock(src_bb); /// modify the llvm control flow graph src.addSuccessor...
2006 Jul 09
0
[LLVMdev] Critical edges
...xit > cmpwi cr0, r5, 0 > add r2, r2, r3 > bgt cr0, LBB1_5 ;no_exit.no_exit_llvm_crit_edge > LBB1_9: ;no_exit > mr r2, r6 > b LBB1_8 ;no_exit > LBB1_4: ;no_exit.loopexit_llvm_crit_edge > > The code is this one below: > > void CriticalEdgeRemoval_Fer::split_critical_edge > (MachineBasicBlock & src, MachineBasicBlock & dst, MachineFunction & > mf) { > > const BasicBlock * src_bb = src.getBasicBlock(); > MachineBasicBlock * crit_mbb = new MachineBasicBlock(src_bb); > > /// modify the llvm control fl...
2008 Sep 30
2
[LLVMdev] Inserting MachineBasicBlock(s) before a MachineBasicBlock
I want to be able to do two things with LLVM (both just before code emission): 1. Insert a MachineBasicBlock just before a MachineBasicBlock. There is a function called AddPredecessor(). However, the comment says that it does not update the actual CFG. I want to redirect all CFG edges that are incoming to this MachineBasicBlock to the new one I create, and add just one outgoing edge (no branch)