Dan Gohman
f8e4410994
Fix this comment. The loop header is the loop entry point.
...
llvm-svn: 83437
2009-10-07 00:33:10 +00:00
Bob Wilson
d9145fca7f
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
ab0d23396a
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
85cca64dd7
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
9e3d48f10d
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
9085126bee
Oops. Don't forget to align single bb loops.
...
llvm-svn: 71363
2009-05-09 19:18:01 +00:00
Evan Cheng
51fa9c7138
Enable loop bb placement optimization.
...
llvm-svn: 71291
2009-05-08 23:35:49 +00:00
Evan Cheng
6e9959e327
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
5b9b33bcac
Reverse branch condition only when there is a conditional branch.
...
llvm-svn: 71214
2009-05-08 09:35:53 +00:00
Nick Lewycky
b873ed672d
Add explicit braces to disambiguate nested if/else. Removes a warning.
...
llvm-svn: 71211
2009-05-08 06:57:41 +00:00
Evan Cheng
2fa281106a
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
143bae5dcd
Code refactoring.
...
llvm-svn: 71151
2009-05-07 05:49:39 +00:00
Evan Cheng
f356a89e92
Rename "loop aligner" pass to "code placement optimization" pass.
...
llvm-svn: 71150
2009-05-07 05:42:24 +00:00