Bob Wilson
cc8d63fdef
Fix CodePlacementOpt::OptimizeIntraLoopEdges so that its return value
...
correctly indicates whether it changed the code.
llvm-svn: 72038
2009-05-18 21:02:18 +00:00
Evan Cheng
9bd08f0cde
Run code placement optimization for targets that want it (arm and x86 for now).
...
llvm-svn: 71726
2009-05-13 21:42:09 +00:00
Evan Cheng
e43bfc153e
If header of inner loop is aligned, do not align the outer loop header. We don't want to add nops in the outer loop for the sake of aligning the inner loop.
...
llvm-svn: 71609
2009-05-12 23:58:14 +00:00
Bob Wilson
16f684a429
Fix pr4195: When iterating through predecessor blocks, break out of the loop
...
after finding the (unique) layout predecessor. Sometimes a block may be listed
more than once, and processing it more than once in this loop can lead to
inconsistent values for FtTBB/FtFBB, since the AnalyzeBranch method does not
clear these values. There's no point in continuing the loop regardless.
The testcase for this is reduced from the 2003-05-02-DependentPHI SingleSource
test.
llvm-svn: 71536
2009-05-12 03:48:10 +00:00
Evan Cheng
581641b664
Oops. Don't forget to align single bb loops.
...
llvm-svn: 71363
2009-05-09 19:18:01 +00:00
Evan Cheng
06b0d3879e
Enable loop bb placement optimization.
...
llvm-svn: 71291
2009-05-08 23:35:49 +00:00
Evan Cheng
aadb8051c0
Don't align loop header unless the loop back edge is below the header.
...
llvm-svn: 71242
2009-05-08 19:01:44 +00:00
Evan Cheng
10038ab095
Reverse branch condition only when there is a conditional branch.
...
llvm-svn: 71214
2009-05-08 09:35:53 +00:00
Nick Lewycky
a8f179d44b
Add explicit braces to disambiguate nested if/else. Removes a warning.
...
llvm-svn: 71211
2009-05-08 06:57:41 +00:00
Evan Cheng
2a1d20b0fb
Optimize code placement in loop to eliminate unconditional branches or move unconditional branch to the outside of the loop. e.g.
...
/// A:
/// ...
/// <fallthrough to B>
///
/// B: --> loop header
/// ...
/// jcc <cond> C, [exit]
///
/// C:
/// ...
/// jmp B
///
/// ==>
///
/// A:
/// ...
/// jmp B
///
/// C: --> new loop header
/// ...
/// <fallthough to B>
///
/// B:
/// ...
/// jcc <cond> C, [exit]
llvm-svn: 71209
2009-05-08 06:34:09 +00:00
Evan Cheng
ef5794cb99
Code refactoring.
...
llvm-svn: 71151
2009-05-07 05:49:39 +00:00
Evan Cheng
1b99da6e30
Rename "loop aligner" pass to "code placement optimization" pass.
...
llvm-svn: 71150
2009-05-07 05:42:24 +00:00