- 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
-
- Oct 22, 2009
-
-
Dan Gohman authored
to break up CFG diamonds by banishing one of the blocks to the end of the function, which is bad for code density and branch size. This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the benchmark cited as the reason for the change, however I've examined the code and it looks more like a case of gaming a particular branch than of being generally applicable. llvm-svn: 84803
-
- Sep 04, 2009
-
-
Evan Cheng authored
llvm-svn: 80994
-
Evan Cheng authored
llvm-svn: 80971
-
- Aug 22, 2009
-
-
Bill Wendling authored
llvm-svn: 79747
-
- Aug 18, 2009
-
-
Dan Gohman authored
remove RemoveDuplicateSuccessor, as it is no longer necessary, and because it breaks assumptions made in MachineBasicBlock::isOnlyReachableByFallthrough. Convert test/CodeGen/X86/omit-label.ll to FileCheck and add a testcase for PR4732. test/CodeGen/Thumb2/thumb2-ifcvt2.ll sees a diff with this commit due to it being bugpoint-reduced to the point where it doesn't matter what the condition for the branch is. Add some more interesting code to test/CodeGen/X86/2009-08-06-branchfolder-crash.ll, which is the testcase that originally motivated the RemoveDuplicateSuccessor code, to help verify that the original problem isn't being re-broken. llvm-svn: 79338
-
- Aug 07, 2009
-
-
Dale Johannesen authored
preference; no functional change. llvm-svn: 78391
-
Dale Johannesen authored
produced a CFG it wasn't prepared for. llvm-svn: 78351
-
- Jul 14, 2009
-
-
Torok Edwin authored
This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
-
- Jul 11, 2009
-
-
Torok Edwin authored
Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
-
- May 11, 2009
-
-
Dale Johannesen authored
sucessor info. llvm-svn: 71478
-
- Feb 09, 2009
-
-
Evan Cheng authored
suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. llvm-svn: 64124
-
- Jan 28, 2009
-
-
Duncan Sands authored
llvm-svn: 63198
-
- Jan 08, 2009
-
-
Dan Gohman authored
llvm-svn: 61950
-
- Dec 11, 2008
-
-
Bill Wendling authored
llvm-svn: 60861
-
- Dec 03, 2008
-
-
Dan Gohman authored
is set but mayLoad is not set. Fix all the problems this turned up. Change code to not use isSimpleLoad instead of mayLoad unless it really wants isSimpleLoad. llvm-svn: 60459
-
- Oct 27, 2008
-
-
Dale Johannesen authored
150, based on llvm-test measurements. llvm-svn: 58225
-
- Oct 03, 2008
-
-
Dan Gohman authored
isReg, etc., from isRegister, etc. llvm-svn: 57006
-
- Sep 22, 2008
-
-
Evan Cheng authored
llvm-svn: 56469
-
- Sep 13, 2008
-
-
Dan Gohman authored
isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. llvm-svn: 56189
-
- Sep 04, 2008
-
-
Dan Gohman authored
llvm-svn: 55779
-
- Aug 22, 2008
-
-
Dan Gohman authored
handled correctly, and change a few SmallVector uses to use size 0 to more clearly reflect their intent. llvm-svn: 55181
-
- Aug 15, 2008
-
-
Owen Anderson authored
Convert uses of std::vector in TargetInstrInfo to SmallVector. This change had to be propoagated down into all the targets and up into all clients of this API. llvm-svn: 54802
-
- Jul 29, 2008
-
-
Duncan Sands authored
to be marked invalid regardless of whether it is a debug, an exception handling or (hopefully) a GC label. llvm-svn: 54172
-
- Jul 08, 2008
-
-
Dan Gohman authored
MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. llvm-svn: 53212
-
- Jul 01, 2008
-
-
Dale Johannesen authored
predessors of exit blocks from tail merging consideration. llvm-svn: 52985
-
Dan Gohman authored
the need for a flavor operand, and add a new SDNode subclass, LabelSDNode, for use with them to eliminate the need for a label id operand. Change instruction selection to let these label nodes through unmodified instead of creating copies of them. Teach the MachineInstr emitter how to emit a MachineInstr directly from an ISD label node. This avoids the need for allocating SDNodes for the label id and flavor value, as well as SDNodes for each of the post-isel label, label id, and label flavor. llvm-svn: 52943
-
- Jun 19, 2008
-
-
Dan Gohman authored
llvm-svn: 52495
-
- May 23, 2008
-
-
Dale Johannesen authored
elements that have been erased. Based on a patch by Nicolas Capens. llvm-svn: 51485
-
- May 13, 2008
-
-
Dan Gohman authored
several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
-
Dale Johannesen authored
if those blocks consist entirely of common instructions; merging will not add an extra branch in this case. llvm-svn: 51006
-
- May 12, 2008
-
-
Dale Johannesen authored
semantically identical, but little difference in either results or execution speed; but it's much easier to read, at least IMO. llvm-svn: 50999
-
- May 10, 2008
-
-
Dale Johannesen authored
no functional change. llvm-svn: 50921
-
- May 09, 2008
-
-
Dale Johannesen authored
case where there are multiple blocks with a large number of common tail instructions more efficiently (compile time optimization). llvm-svn: 50916
-
- May 06, 2008
-
-
Dan Gohman authored
llvm-svn: 50696
-
- Apr 10, 2008
-
-
Evan Cheng authored
Teach branch folding pass about implicit_def instructions. Unfortunately we can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away. llvm-svn: 49461
-
- Feb 28, 2008
-
-
Evan Cheng authored
llvm-svn: 47703
-
- Feb 19, 2008
-
-
Evan Cheng authored
PR1909: Tail merging pass ran wild. It makes no sense to merge blocks in order to save a single instruction since a branch will be inserted for each BB. llvm-svn: 47301
-
- Feb 10, 2008
-
-
Dan Gohman authored
llvm-svn: 46930
-