- Jun 14, 2011
-
-
Rafael Espindola authored
llvm-svn: 132995
-
Rafael Espindola authored
llvm-svn: 132988
-
Rafael Espindola authored
sharp all or nothing transition when one extra predecessor was added. Now we still test first ones for merging. llvm-svn: 132974
-
- May 12, 2011
-
-
Evan Cheng authored
markers. In some cases a register def is dead on one path, but not on another. This is passing Clang self-hosting. llvm-svn: 131214
-
- May 11, 2011
-
-
Rafael Espindola authored
to provide a reduced testcase. llvm-svn: 131176
-
Evan Cheng authored
at the start of basic blocks to their common predecessor. It's actually quite common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size benefit. e.g. pushq %rax testl %edi, %edi jne LBB0_2 ## BB#1: xorb %al, %al popq %rdx ret LBB0_2: xorb %al, %al callq _foo popq %rdx ret => pushq %rax xorb %al, %al testl %edi, %edi je LBB0_2 ## BB#1: callq _foo LBB0_2: popq %rdx ret rdar://9145558 llvm-svn: 131172
-
- Jun 22, 2010
-
-
- Nov 26, 2009
-
-
Bob Wilson authored
running tail duplication when doing branch folding for if-conversion, and we also want to be able to run tail duplication earlier to fix some reg alloc problems. Move the CanFallThrough function from BranchFolding to MachineBasicBlock so that it can be shared by TailDuplication. llvm-svn: 89904
-
- Nov 17, 2009
-
-
Bob Wilson authored
It was too difficult to keep the heuristics for merging and duplication consistent. llvm-svn: 89105
-
- Nov 12, 2009
-
-
Dan Gohman authored
llvm-svn: 86928
-
- Nov 11, 2009
-
-
Dan Gohman authored
instead of typedefs for std::pair. This simplifies the type of SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator> llvm-svn: 86885
-
Dan Gohman authored
llvm-svn: 86873
-
- Oct 28, 2009
-
-
Bob Wilson authored
I'm going to redo this using the OptimizeForSize function attribute. llvm-svn: 85426
-
Bob Wilson authored
use it to control tail merging when there is a tradeoff between performance and code size. When there is only 1 instruction in the common tail, we have been merging. That can be good for code size but is a definite loss for performance. Now we will avoid tail merging in that case when the optimization level is "Aggressive", i.e., "-O3". Radar 7338114. Since the IfConversion pass invokes BranchFolding, it too needs to know the optimization level. Note that I removed the RegisterPass instantiation for IfConversion because it required a default constructor. If someone wants to keep that for some reason, we can add a default constructor with a hard-wired optimization level. llvm-svn: 85346
-
- Sep 04, 2009
-
-
Evan Cheng authored
llvm-svn: 80994
-