- Mar 20, 2009
-
-
Sebastian Redl authored
- Make type declarations match the struct/class keyword of the definition. - Move AddSignalHandler into the namespace where it belongs. - Correctly call functions from template base. - Some other small changes. With this patch, LLVM and Clang should build properly and with far less noise under VS2008. llvm-svn: 67347
-
- Mar 19, 2009
-
-
Evan Cheng authored
llvm-svn: 67335
-
- Mar 05, 2009
-
-
Evan Cheng authored
Fix how livein live intervals are handled. Previously it could end at MBB start. Sorry, no small test case possible. llvm-svn: 66129
-
- Feb 08, 2009
-
-
Evan Cheng authored
Fix PR3486. Fix a bug in code that manually patch physical register live interval after its sub-register is coalesced with a virtual register. llvm-svn: 64082
-
- Jan 29, 2009
-
-
Evan Cheng authored
llvm-svn: 63267
-
- Jan 20, 2009
-
-
Evan Cheng authored
llvm-svn: 62600
-
- Jan 07, 2009
-
-
Evan Cheng authored
The coalescer does not coalesce a virtual register to a physical register if any of the physical register's sub-register live intervals overlaps with the virtual register. This is overly conservative. It prevents a extract_subreg from being coalesced away: v1024 = EDI // not killed = = EDI One possible solution is for the coalescer to examine the sub-register live intervals in the same manner as the physical register. Another possibility is to examine defs and uses (when needed) of sub-registers. Both solutions are too expensive. For now, look for "short virtual intervals" and scan instructions to look for conflict instead. This is a small win on x86-64. e.g. It shaves 403.gcc by ~80 instructions. llvm-svn: 61847
-
- Dec 19, 2008
-
-
Evan Cheng authored
Fix PR3149. If an early clobber def is a physical register and it is tied to an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this. 172 %ECX<def> = MOV32rr %reg1039<kill> 180 INLINEASM <es:subl $5,$1 sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>, 36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0 188 %EAX<def> = MOV32rr %EAX<kill> 196 %ECX<def> = MOV32rr %ECX<kill> 204 %ECX<def> = MOV32rr %ECX<kill> 212 %EAX<def> = MOV32rr %EAX<kill> 220 %EAX<def> = MOV32rr %EAX 228 %reg1039<def> = MOV32rr %ECX<kill> The early clobber operand ties ECX input to the ECX def. The live interval of ECX is represented as this: %reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47) The right way to represent this is something like %reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47) Of course that won't work since that means overlapping live ranges defined by two val#. The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom. llvm-svn: 61259
-
- Dec 08, 2008
-
-
Dan Gohman authored
llvm-svn: 60683
-
- Dec 05, 2008
-
-
Evan Cheng authored
Reason #3 from 60595 doesn't hold true. If we can fold a PIC load from constpool into a use, the rewrite happens at time of spill (not in VirtRegMap). Later on, if the GlobalBaseReg is spilled, the spiller can see the use uses GlobalBaseReg and do the right thing. llvm-svn: 60596
-
Evan Cheng authored
llvm-svn: 60592
-
Dan Gohman authored
llvm-svn: 60586
-
- Dec 03, 2008
-
-
Dan Gohman authored
llvm-svn: 60487
-
- Nov 26, 2008
-
-
Dan Gohman authored
and the LiveInterval.h top-level comment and accordingly. This fixes blocks having spurious live-in registers in boundary cases. llvm-svn: 60092
-
- Nov 21, 2008
-
-
Devang Patel authored
llvm-svn: 59841
-
- Nov 13, 2008
-
-
Dan Gohman authored
BitVector, instead of manually testing each bit. llvm-svn: 59246
-
- Nov 12, 2008
-
-
Dan Gohman authored
coalescing as a separate pass rather than inside of LiveIntervalAnalysis. llvm-svn: 59146
-
- Oct 29, 2008
-
-
Evan Cheng authored
- Create and update spill slot live intervals. - Lots of bug fixes. llvm-svn: 58367
-
- Oct 27, 2008
-
-
David Greene authored
Fix PR2634. Create new virtual registers from spills early so that we can give it the same stack slot as the spilled interval if it is folded. This prevents the fold/unfold code from pointing to the wrong register. llvm-svn: 58255
-
- Oct 24, 2008
-
-
Evan Cheng authored
llvm-svn: 58068
-
- Oct 18, 2008
-
-
Evan Cheng authored
llvm-svn: 57766
-
Evan Cheng authored
llvm-svn: 57765
-
- Oct 07, 2008
-
-
Owen Anderson authored
llvm-svn: 57259
-
- Oct 03, 2008
-
-
Dan Gohman authored
isReg, etc., from isRegister, etc. llvm-svn: 57006
-
- Oct 01, 2008
-
-
Owen Anderson authored
Fix a simple error in renumbering kill markaers, that took an inordinant amount of time to track down. llvm-svn: 56889
-
- Sep 30, 2008
-
-
Evan Cheng authored
llvm-svn: 56848
-
Duncan Sands authored
"If a re-materializable instruction has a register operand, the spiller will change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it". llvm-svn: 56837
-
Evan Cheng authored
If a re-materializable instruction has a register operand, the spiller will change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it. llvm-svn: 56835
-
- Sep 24, 2008
-
-
Dale Johannesen authored
RA problem by expanding the live interval of an earlyclobber def back one slot. Remove overlap-earlyclobber throughout. Remove earlyclobber bits and their handling from live internals. llvm-svn: 56539
-
- Sep 21, 2008
-
-
Owen Anderson authored
correct in the presence of things like EH labels. llvm-svn: 56410
-
- Sep 19, 2008
-
-
Dale Johannesen authored
and redo as linked list walk. Logic moved into RA. Per review feedback. llvm-svn: 56326
-
- Sep 17, 2008
-
-
Dale Johannesen authored
with an earlyclobber operand elsewhere. Propagate this bit and the earlyclobber bit through SDISel. Change linear-scan RA not to allocate regs in a way that conflicts with an earlyclobber. See also comments. llvm-svn: 56290
-
- Sep 16, 2008
-
-
Owen Anderson authored
Live intervals for live-in registers should begin at the beginning of a basic block, not at the first instruction. Also, their valno's should have an unknown def. This has no effect currently, but was causing issues when StrongPHIElimination was enabled. llvm-svn: 56231
-
- 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
-
- Aug 20, 2008
-
-
Owen Anderson authored
llvm-svn: 55012
-
- Aug 19, 2008
-
-
Owen Anderson authored
With this patch, all of MultiSource/Applications and all of SPEC2000/2006 pass with the SimpleSpiller and this fast-path enabled. llvm-svn: 55000
-
Owen Anderson authored
llvm-svn: 54958
-
Owen Anderson authored
1) Assign stack slots to new temporaries. 2) Don't insert an interval into the return vector more than once. llvm-svn: 54956
-
- Aug 18, 2008
-
-
Owen Anderson authored
1) Remove an incorrect assertion. 2) Set the stack slot weight properly. 3) Resize the VirtRegMap when needed. llvm-svn: 54949
-
Owen Anderson authored
llvm-svn: 54939
-