[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-03-30 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.107 -> 1.108 --- Log message: Don't add the same MI to register reuse "last def/use" twice if it reads the register more than once. --- Diffs of the changes: (+4 -1) VirtRegMap.cpp |5 - 1 files changed, 4 insertions(+

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-03-26 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.106 -> 1.107 --- Log message: Don't call getOperandConstraint() if operand index is greater than TID->numOperands. --- Diffs of the changes: (+2 -1) VirtRegMap.cpp |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-)

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp LiveIntervalAnalysis.cpp

2007-03-26 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.105 -> 1.106 LiveIntervalAnalysis.cpp updated: 1.227 -> 1.228 --- Log message: Fix for PR1266: http://llvm.org/PR1266 . Don't mark a two address operand IsKill. --- Diffs of the changes: (+33 -22) LiveIntervalAnalysis.cpp |

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-03-02 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.103 -> 1.104 --- Log message: Only propagate IsKill if the last use is a kill. --- Diffs of the changes: (+22 -8) VirtRegMap.cpp | 30 ++ 1 files changed, 22 insertions(+), 8 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-03-02 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.102 -> 1.103 --- Log message: - Keep track all def and uses of stack slot available in register. - Available value use may be deleted (e.g. noop move). --- Diffs of the changes: (+51 -28) VirtRegMap.cpp | 79

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-03-01 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.101 -> 1.102 --- Log message: Invalidate last use of a reused register if the use is a deleted noop copy. --- Diffs of the changes: (+1 -0) VirtRegMap.cpp |1 + 1 files changed, 1 insertion(+) Index: llvm/lib/CodeGen/Vir

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-28 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.100 -> 1.101 --- Log message: A restore is promoted to copy (or deleted entirely), remove the kill from the last use of the targetted register. --- Diffs of the changes: (+4 -3) VirtRegMap.cpp |7 --- 1 files changed,

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-25 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.99 -> 1.100 --- Log message: A couple of more places where a register liveness has been extended and its last kill should be updated accordingly. --- Diffs of the changes: (+57 -5) VirtRegMap.cpp | 62 ++

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-23 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.98 -> 1.99 --- Log message: Reuse extends the liveness of a register. Transfer the kill to the operand that reuse it. --- Diffs of the changes: (+6 -1) VirtRegMap.cpp |7 ++- 1 files changed, 6 insertions(+), 1 deleti

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-22 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.97 -> 1.98 --- Log message: A spill kills the register being stored. But it is later being reused by spiller, its live range has to be extended. --- Diffs of the changes: (+39 -25) VirtRegMap.cpp | 64 ++

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-20 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.96 -> 1.97 --- Log message: Use BitVector instead. No functionality change. --- Diffs of the changes: (+5 -8) VirtRegMap.cpp | 13 + 1 files changed, 5 insertions(+), 8 deletions(-) Index: llvm/lib/CodeGen/Virt

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-19 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.95 -> 1.96 --- Log message: Dead code. --- Diffs of the changes: (+0 -6) VirtRegMap.cpp |6 -- 1 files changed, 6 deletions(-) Index: llvm/lib/CodeGen/VirtRegMap.cpp diff -u llvm/lib/CodeGen/VirtRegMap.cpp:1.95 llvm

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-02-07 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.94 -> 1.95 --- Log message: Fixed a long standing spiller bug that's exposed by Thumb: The code sequence before the spiller is something like: = tMOVrr %reg1117 = tMOVrr %reg1078 = tLSLri %reg1117

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-01-22 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.93 -> 1.94 --- Log message: Switch this to use SmallSet to avoid mallocs in the common case. --- Diffs of the changes: (+3 -3) VirtRegMap.cpp |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/lib/C

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2007-01-19 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.92 -> 1.93 --- Log message: 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,

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-12-14 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.89 -> 1.90 --- Log message: Minor clean up. --- Diffs of the changes: (+3 -2) VirtRegMap.cpp |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/VirtRegMap.cpp diff -u llvm/lib/CodeGen/Virt

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-12-13 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.88 -> 1.89 --- Log message: Fix a long-standing spiller bug: 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 regist

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-12-08 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.86 -> 1.87 --- Log message: Proper fix for PR1037: http://llvm.org/PR1037 : to determine is a VR is a modref, check 1) whether it is tied to another oeprand, 2) whether is is being tied to by another operand. So the destination o

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-12-07 Thread Reid Spencer
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.85 -> 1.86 --- Log message: Revision 1.83 causes PR1037: http://llvm.org/PR1037 . Reverted. --- Diffs of the changes: (+1 -2) VirtRegMap.cpp |3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) Index: llvm/lib/CodeGe

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-12-06 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.82 -> 1.83 --- Log message: getOperandConstraint returns -1 if the operand does have the specific constraint. This bug was causing excessive spills. --- Diffs of the changes: (+1 -1) VirtRegMap.cpp |2 +- 1 files changed,

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-11-03 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.78 -> 1.79 --- Log message: Fixed some spiller bugs exposed by the recent two-address code changes. Now 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 ope

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-10-12 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.75 -> 1.76 --- Log message: restore my previous patch, now that the X86 backend bug has been fixed: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20061009/038518.html --- Diffs of the changes: (+32 -17) VirtRegM

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-10-12 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.74 -> 1.75 --- Log message: Backing out Chris' last commit. It's breaking llvm-gcc bootstrapping. It's turning: movl -24(%ebp), %esp subl $16, %esp movl -24(%ebp), %ecx into movl -24(%ebp), %esp

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-10-11 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.73 -> 1.74 --- Log message: If we see a load from a stack slot into a physreg, consider it as providing the stack slot. This fixes PR943: http://llvm.org/PR943 . --- Diffs of the changes: (+32 -17) VirtRegMap.cpp | 49

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-08-21 Thread Bill Wendling
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.69 -> 1.70 --- Log message: Added a check so that if we have two machine instructions in this form MOV R0, R1 MOV R1, R0 the second machine instruction is removed. Added a regression test. --- Diffs of the changes: (+

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp VirtRegMap.h

2006-05-01 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.64 -> 1.65 VirtRegMap.h updated: 1.20 -> 1.21 --- Log message: Fix a latent bug that my spiller patch last week exposed: we were leaving instructions in the virtregfolded map that were deleted. Because they were deleted, newly a

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-05-01 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.63 -> 1.64 --- Log message: When promoting a load to a reg-reg copy, where the load was a previous instruction folded with spill code, make sure the remove the load from the virt reg folded map. --- Diffs of the changes: (+1 -

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-05-01 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.61 -> 1.62 --- Log message: Remove temp. option -spiller-check-liveout, it didn't cause any failure nor performance regressions. --- Diffs of the changes: (+1 -5) VirtRegMap.cpp |6 +- 1 files changed, 1 insertion(+),

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-04-27 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.59 -> 1.60 --- Log message: Mapping of physregs can make it so that the designated and input physregs are the same. In this case, don't emit a noop copy. --- Diffs of the changes: (+13 -0) VirtRegMap.cpp | 13 +

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-04-27 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.58 -> 1.59 --- Log message: When we have a two-address instruction where the input cannot be clobbered and is already available, instead of falling back to emitting a load, fall back to emitting a reg-reg copy. This generates sig

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-24 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.57 -> 1.58 --- Log message: Fix a bug that Evan exposed with some changes he's making, and that was exposed with a fastcc problem (breaking pcompress2 on x86 with -enable-x86-fastcc). When reloading a reused reg, make sure to in

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-24 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.56 -> 1.57 --- Log message: Remove debugging printout :) Add a minor compile time win, no codegen change. --- Diffs of the changes: (+6 -5) VirtRegMap.cpp | 11 ++- 1 files changed, 6 insertions(+), 5 deletions(-)

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-24 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.55 -> 1.56 --- Log message: Refactor some code from being inline to being out in a new class with methods. This gets rid of two gotos, which is always nice, and also adds some comments. No functionality change, this is just a ref

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-03 Thread Jeff Cohen
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.54 -> 1.55 --- Log message: Fix VC++ warning. --- Diffs of the changes: (+1 -1) VirtRegMap.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/CodeGen/VirtRegMap.cpp diff -u llvm/lib/CodeGen/VirtReg

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-03 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.53 -> 1.54 --- Log message: Handle another case exposed on X86. --- Diffs of the changes: (+4 -0) VirtRegMap.cpp |4 1 files changed, 4 insertions(+) Index: llvm/lib/CodeGen/VirtRegMap.cpp diff -u llvm/lib/CodeGen/

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-03 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.52 -> 1.53 --- Log message: Fix a nasty problem on two-address machines in the following situation: store EAX -> [ss#0] [ss#0] += 1 ... use(EAX) In this case, it is not valid to rewrite this as: store EAX -> [ss#0] EAX += 1 st

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-03 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.51 -> 1.52 --- Log message: significantly simplify the VirtRegMap code by pulling the SpillSlotsAvailable and PhysRegsAvailable maps out into a new AvailableSpills struct. No functionality change. This paves the way for a bugfix

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Jeff Cohen
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.50 -> 1.51 --- Log message: Fix VC++ compilation error caused by using a std::map iterator variable to receive a std::multimap iterator value. For some reason, GCC doesn't have a problem with this. --- Diffs of the changes:

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.49 -> 1.50 --- Log message: Remove move copies and dead stuff by not clobbering the result reg of a noop copy. --- Diffs of the changes: (+21 -12) VirtRegMap.cpp | 33 + 1 files changed, 21

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.48 -> 1.49 --- Log message: Simplify some code --- Diffs of the changes: (+40 -45) VirtRegMap.cpp | 85 ++--- 1 files changed, 40 insertions(+), 45 deletions(-) Index: l

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.47 -> 1.48 --- Log message: Add code that checks for noop copies, which triggers when either: 1. a target doesn't know how to fold load/stores into copies, or 2. the spiller rewrites the input to a copy to the same register as the

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.46 -> 1.47 --- Log message: Physregs may hold multiple stack slot values at the same time. Keep track of this, and use it to our advantage (bwahahah). This allows us to eliminate another 60 instructions from smg2000 on PPC (pro

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.45 -> 1.46 --- Log message: Fix a deficiency in the spiller that Evan noticed. In particular, consider this code: store [stack slot #0], R10 = add R14, [stack slot #0] The spiller didn't know that the store made the valu

[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

2006-02-02 Thread Chris Lattner
Changes in directory llvm/lib/CodeGen: VirtRegMap.cpp updated: 1.44 -> 1.45 --- Log message: Move isLoadFrom/StoreToStackSlot from MRegisterInfo to TargetInstrInfo,a far more logical place. Other methods should also be moved if anyoneis interested. :) --- Diffs of the changes: (+3 -2)