- Jan 09, 2011
-
-
Jakob Stoklund Olesen authored
when no virtual registers have been allocated. It was only used to resize IndexedMaps, so provide an IndexedMap::resize() method such that Map.grow(MRI.getLastVirtReg()); can be replaced with the simpler Map.resize(MRI.getNumVirtRegs()); This works correctly when no virtuals are allocated, and it bypasses the to/from index conversions. llvm-svn: 123130
-
Chris Lattner authored
llvm-svn: 123129
-
Jakob Stoklund Olesen authored
physical register numbers. This makes the hack used in LiveInterval official, and lets LiveInterval be oblivious of stack slots. The isPhysicalRegister() and isVirtualRegister() predicates don't know about this, so when a variable may contain a stack slot, isStackSlot() should always be tested first. llvm-svn: 123128
-
Jakob Stoklund Olesen authored
llvm-svn: 123123
-
Cameron Zwarich authored
llvm-svn: 123115
-
Cameron Zwarich authored
llvm-svn: 123114
-
Jakob Stoklund Olesen authored
of using a Location class with the same information. When making a copy of a MachineOperand that was already stored in a MachineInstr, it is necessary to clear the parent pointer on the copy. Otherwise the register use-def lists become inconsistent. Add MachineOperand::clearParent() to do that. An alternative would be a custom MachineOperand copy constructor that cleared ParentMI. I didn't want to do that because of the performance impact. llvm-svn: 123109
-
Jakob Stoklund Olesen authored
llvm-svn: 123108
-
Jakob Stoklund Olesen authored
Print virtual registers numbered from 0 instead of the arbitrary FirstVirtualRegister. The first virtual register is printed as %vreg0. TRI::NoRegister is printed as %noreg. llvm-svn: 123107
-
Jakob Stoklund Olesen authored
llvm-svn: 123106
-
Jakob Stoklund Olesen authored
depending on TRI::FirstVirtualRegister. Also use TRI::printReg instead of printing virtual registers directly. llvm-svn: 123101
-
Jakob Stoklund Olesen authored
virtual registers. llvm-svn: 123100
-
Jakob Stoklund Olesen authored
Provide MRI::getNumVirtRegs() and TRI::index2VirtReg() functions to allow iteration over virtual registers without depending on the representation of virtual register numbers. llvm-svn: 123098
-
Jakob Stoklund Olesen authored
Use an IndexedMap for LiveOutRegInfo to hide its dependence on TargetRegisterInfo::FirstVirtualRegister. llvm-svn: 123096
-
- Jan 08, 2011
-
-
Cameron Zwarich authored
llvm-svn: 123093
-
Cameron Zwarich authored
they all ready do). This removes two dominator recomputations prior to isel, which is a 1% improvement in total llc time for 403.gcc. The only potentially suspect thing is making GCStrategy recompute dominators if it used a custom lowering strategy. llvm-svn: 123064
-
Evan Cheng authored
llvm-svn: 123048
-
Evan Cheng authored
Instead encode llvm IR level property "HasSideEffects" in an operand (shared with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check the operand when the instruction is an INLINEASM. This allows memory instructions to be moved around INLINEASM instructions. llvm-svn: 123044
-
- Jan 07, 2011
-
-
Devang Patel authored
llvm-svn: 123039
-
Devang Patel authored
Enable live debug variables pass. llvm-svn: 123032
-
Evan Cheng authored
llvm-svn: 123031
-
Bob Wilson authored
Also fix an off-by-one in SelectionDAGBuilder that was preventing shuffle vectors from being translated to EXTRACT_SUBVECTOR. Patch by Tim Northover. The test changes are needed to keep those spill-q tests from testing aligned spills and restores. If the only aligned stack objects are spill slots, we no longer realign the stack frame. Prior to this patch, an EXTRACT_SUBVECTOR was legalized by loading from the stack, which created an aligned frame index. Now, however, there is nothing except the spill slot in the stack frame, so I added an aligned alloca. llvm-svn: 122995
-
Bob Wilson authored
llvm-svn: 122994
-
Bob Wilson authored
We were never generating any of these nodes with variable indices, and there was one legalizer function asserting on a non-constant index. If we ever have a need to support variable indices, we can add this back again. llvm-svn: 122993
-
Bill Wendling authored
we have invokes, so there is no functionality change here. llvm-svn: 122990
-
Duncan Sands authored
Nadav Rotem. llvm-svn: 122983
-
- Jan 06, 2011
-
-
Eric Christopher authored
typed atomics. This will lower exclusively to libcalls at the moment. llvm-svn: 122979
-
Devang Patel authored
This fixes PR 8913 crash. llvm-svn: 122971
-
Evan Cheng authored
etc. takes an option OptSize. If OptSize is true, it would return the inline limit for functions with attribute OptSize. llvm-svn: 122952
-
Evan Cheng authored
llvm-svn: 122949
-
Jakob Stoklund Olesen authored
Simplify RALinScan::DowngradeRegister with TRI::getOverlaps while we are there. llvm-svn: 122940
-
Jakob Stoklund Olesen authored
This pass precomputes CFG block frequency information that can be used by the register allocator to find optimal spill code placement. Given an interference pattern, placeSpills() will compute which basic blocks should have the current variable enter or exit in a register, and which blocks prefer the stack. The algorithm is ready to consume block frequencies from profiling data, but for now it gets by with the static estimates used for spill weights. This is a work in progress and still not hooked up to RegAllocGreedy. llvm-svn: 122938
-
Evan Cheng authored
up freebsd bootloader. However, this doesn't make much sense for Darwin, whose -Os is meant to optimize for size only if it doesn't hurt performance. rdar://8821501 llvm-svn: 122936
-
Evan Cheng authored
the original type of the switch statement key. rdar://8781238 llvm-svn: 122935
-
Evan Cheng authored
r1025 = s/zext r1024, 4 r1026 = extract_subreg r1025, 4 to: r1026 = copy r1024 llvm-svn: 122925
-
- Jan 05, 2011
-
-
Jakob Stoklund Olesen authored
calculated. llvm-svn: 122912
-
Eric Christopher authored
llvm-svn: 122909
-
- Jan 04, 2011
-
-
Eric Christopher authored
llvm-svn: 122849
-
Jakob Stoklund Olesen authored
The analysis will be needed by both the greedy register allocator and the X86FloatingPoint pass. It only needs to be computed once when the CFG doesn't change. This pass is very fast, usually showing up as 0.0% wall time. llvm-svn: 122832
-
Cameron Zwarich authored
makes getLeader() nonrecursive. llvm-svn: 122811
-