- Oct 21, 2006
-
-
Chris Lattner authored
1. Remove a bunch of ifdef'd code. 2. When a block just contains an uncond branch, change all blocks branching to it to jump to the destination instead. 3. If branch analysis tells us some edges in the machinecfg are not actually possible, remove them. #2 triggers a suprisingly large number of times. llvm-svn: 31094
-
Chris Lattner authored
This is currently disabled by default and limited in several ways, but does have a positive effect. llvm-svn: 31090
-
- Oct 18, 2006
-
-
Chris Lattner authored
# notes in it. llvm-svn: 31026
-
- Oct 17, 2006
-
-
Chris Lattner authored
branch folding can now compile stuff like this: void foo(int W, int X, int Y, int Z) { if (W & 1) { for (; X;--X) bar(); } else if (W & 2) { for (; Y;--Y) bar(); } else if (W & 4) { for (; Z;--Z) bar(); } else if (W & 8) { for (; W;--W) bar(); } if (W) { bar(); } } contrived testcase where loops exits all end up merging together. To have the loop merges be: ... cmplw cr0, r30, r27 bne cr0, LBB1_14 ;bb38 LBB1_16: ;cond_next48.loopexit mr r27, r29 LBB1_20: ;cond_next48 cmplwi cr0, r27, 0 beq cr0, LBB1_22 ;UnifiedReturnBlock ... instead of: ... cmplw cr0, r30, r27 bne cr0, LBB1_14 ;bb38 LBB1_16: ;cond_next48.loopexit mr r27, r29 b LBB1_20 ;cond_next48 LBB1_17: ;cond_next48.loopexit1 b LBB1_20 ;cond_next48 LBB1_18: ;cond_next48.loopexit2 b LBB1_20 ;cond_next48 LBB1_19: ;cond_next48.loopexit3 LBB1_20: ;cond_next48 cmplwi cr0, r27, 0 beq cr0, LBB1_22 ;UnifiedReturnBlock ... This is CodeGen/PowerPC/branch-opt.ll llvm-svn: 31006
-
Chris Lattner authored
It now correctly deletes unreachable blocks and blocks that are empty. llvm-svn: 31000
-
- Oct 14, 2006
-
-
Chris Lattner authored
llvm-svn: 30951
-
Chris Lattner authored
llvm-svn: 30950
-
- Oct 13, 2006
-
-
Chris Lattner authored
llvm-svn: 30939
-
- Apr 22, 2005
-
-
Misha Brukman authored
llvm-svn: 21420
-
- Sep 02, 2004
-
-
Reid Spencer authored
Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
-
- Aug 01, 2004
-
-
Chris Lattner authored
llvm-svn: 15402
-
- Jul 31, 2004
-
-
Alkis Evlogimenos authored
MachineBasicBlock* as a parameter so that nxext() and prior() helper functions can work naturally on it. llvm-svn: 15376
-
Chris Lattner authored
llvm-svn: 15375
-
Alkis Evlogimenos authored
MachineFunction::iterator instead of MachineBasicBlock* to avoid dereferencing end iterators. llvm-svn: 15373
-
Alkis Evlogimenos authored
FallThrough maybe == to MF.end(). llvm-svn: 15372
-
Chris Lattner authored
llvm-svn: 15368
-