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(+
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(-)
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 |
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:
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
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
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,
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 ++
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
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 ++
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
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
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
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
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,
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
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
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
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
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,
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
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
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
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
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: (+
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
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 -
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(+),
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 +
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
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
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(-)
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
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
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/
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
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
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:
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
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
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
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
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
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)
44 matches
Mail list logo