- Mar 20, 2007
-
-
Evan Cheng authored
llvm-svn: 35208
-
- Mar 03, 2007
-
-
Evan Cheng authored
llvm-svn: 34878
-
- Mar 02, 2007
-
-
Evan Cheng authored
- Available value use may be deleted (e.g. noop move). llvm-svn: 34841
-
Evan Cheng authored
llvm-svn: 34839
-
- Mar 01, 2007
-
-
Evan Cheng authored
A restore is promoted to copy (or deleted entirely), remove the kill from the last use of the targetted register. llvm-svn: 34773
-
- Feb 25, 2007
-
-
Evan Cheng authored
A couple of more places where a register liveness has been extended and its last kill should be updated accordingly. llvm-svn: 34597
-
- Feb 23, 2007
-
-
Evan Cheng authored
llvm-svn: 34536
-
Evan Cheng authored
A spill kills the register being stored. But it is later being reused by spiller, its live range has to be extended. llvm-svn: 34517
-
- Feb 21, 2007
-
-
Evan Cheng authored
llvm-svn: 34460
-
- Feb 20, 2007
-
-
Evan Cheng authored
llvm-svn: 34435
-
- Feb 08, 2007
-
-
Evan Cheng authored
The code sequence before the spiller is something like: = tMOVrr %reg1117 = tMOVrr %reg1078 = tLSLri %reg1117, 2 The it starts spilling: %r0 = tRestore <fi#5>, 0 %r1 = tRestore <fi#7>, 0 %r1 = tMOVrr %r1<kill> tSpill %r1, <fi#5>, 0 %reg1078 = tLSLri %reg1117, 2 It restores the value while processing the first tMOVrr. At this point, the spiller remembers fi#5 is available in %r0. Next it processes the second move. It restores the source before the move and spills the result afterwards. The move becomes a noop and is deleted. However, a spill has been inserted and that should invalidate reuse of %r0 for fi#5 and add reuse of %r1 for fi#5. Therefore, %reg1117 (which is also assigned fi#5) should get %r1, not %r0. llvm-svn: 34039
-
- Jan 23, 2007
-
-
Chris Lattner authored
llvm-svn: 33457
-
- Jan 19, 2007
-
-
Evan Cheng authored
GetRegForReload() now keeps track which registers have been considered and rejected during its quest to find a suitable reload register. This avoids an infinite loop in case like this: t1 := op t2, t3 t2 <- assigned r0 for use by the reload but ended up reuse r1 t3 <- assigned r1 for use by the reload but ended up reuse r0 t1 <- desires r1 sees r1 is taken by t2, tries t2's reload register r0 sees r0 is taken by t3, tries t3's reload register r1 sees r1 is taken by t2, tries t2's reload register r0 ... llvm-svn: 33382
-
- Dec 19, 2006
-
-
Chris Lattner authored
llvm-svn: 32698
-
- Dec 17, 2006
-
-
Bill Wendling authored
rework the hacks that had us passing OStream in. We pass in std::ostream* instead, check for null, and then dispatch to the correct print() method. llvm-svn: 32636
-
- Dec 15, 2006
-
-
Evan Cheng authored
llvm-svn: 32593
-
- Dec 14, 2006
-
-
Evan Cheng authored
If a spillslot value is available in a register, and there is a noop copy that targets that register, the spiller correctly decide not to invalidate the spillslot register. However, even though the noop copy does not clobbers the value. It does start a new intersecting live range. That means the spillslot register is available for use but should not be reused for a two-address instruction modref operand which would clobber the new live range. When we remove the noop copy, update the available information by clearing the canClobber bit. llvm-svn: 32576
-
- Dec 08, 2006
-
-
Evan Cheng authored
llvm-svn: 32366
-
Evan Cheng authored
tied to another oeprand, 2) whether is is being tied to by another operand. So the destination operand of a two-address MI can be correctly identified. llvm-svn: 32354
-
- Dec 07, 2006
-
-
Reid Spencer authored
Reverted. llvm-svn: 32305
-
Bill Wendling authored
now cerr, cout, and NullStream resp. llvm-svn: 32298
-
Evan Cheng authored
llvm-svn: 32296
-
Evan Cheng authored
getOperandConstraint returns -1 if the operand does have the specific constraint. This bug was causing excessive spills. llvm-svn: 32295
-
- Dec 06, 2006
-
-
Chris Lattner authored
is 'unsigned'. llvm-svn: 32279
-
- Dec 01, 2006
-
-
Evan Cheng authored
llvm-svn: 32098
-
- Nov 17, 2006
-
-
Bill Wendling authored
llvm-svn: 31806
-
- Nov 04, 2006
-
-
Evan Cheng authored
there may be other def(s) apart from the use&def two-address operand. We need to check if the register reuse for a use&def operand may conflicts with another def. Provide a mean to recover from the conflict if it is detected when the defs are processed later. llvm-svn: 31439
-
- Nov 02, 2006
-
-
Evan Cheng authored
llvm-svn: 31364
-
Evan Cheng authored
Two-address instructions no longer have to be A := A op C. Now any pair of dest / src operands can be tied together. llvm-svn: 31363
-
- Oct 12, 2006
-
-
Chris Lattner authored
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20061009/038518.html llvm-svn: 30906
-
Evan Cheng authored
It's turning: movl -24(%ebp), %esp subl $16, %esp movl -24(%ebp), %ecx into movl -24(%ebp), %esp subl $16, %esp movl %esp, (%esp) llvm-svn: 30902
-
Chris Lattner authored
the stack slot. This fixes PR943. llvm-svn: 30898
-
- Sep 05, 2006
-
-
Chris Lattner authored
actually *removes* one of the operands, instead of just assigning both operands the same register. This make reasoning about instructions unnecessarily complex, because you need to know if you are before or after register allocation to match up operand #'s with the target description file. Changing this also gets rid of a bunch of hacky code in various places. This patch also includes changes to fold loads into cmp/test instructions in the X86 backend, along with a significant simplification to the X86 spill folding code. llvm-svn: 30108
-
- Aug 27, 2006
-
-
Chris Lattner authored
llvm-svn: 29911
-
- Aug 25, 2006
-
-
Chris Lattner authored
instructions which define each value#) to simplify and improve the coallescer. In particular, this patch: 1. Implements iterative coallescing. 2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a better solution. 3. Implements PR865, "coallescing" away the second copy in code like: A = B ... B = A This also includes changes to symbolically print registers in intervals when possible. llvm-svn: 29862
-
- Aug 21, 2006
-
-
Bill Wendling authored
MOV R0, R1 MOV R1, R0 the second machine instruction is removed. Added a regression test. llvm-svn: 29792
-
- Jul 21, 2006
-
-
Jim Laskey authored
llvm-svn: 29250
-
- Jul 20, 2006
-
-
Andrew Lenharth authored
llvm-svn: 29220
-
- Jun 29, 2006
-
-
Chris Lattner authored
llvm-svn: 28973
-
- May 04, 2006
-
-
Chris Lattner authored
llvm-svn: 28102
-