- Feb 04, 2011
-
-
Nick Lewycky authored
purpose. Fixes PR9080! llvm-svn: 124903
-
- Jan 10, 2011
-
-
Jakob Stoklund Olesen authored
These functions not longer assert when passed 0, but simply return false instead. No functional change intended. llvm-svn: 123155
-
- 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
-
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
-
- Dec 08, 2010
-
-
Eric Christopher authored
llvm-svn: 121285
-
- Oct 19, 2010
-
-
Owen Anderson authored
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
-
- Sep 10, 2010
-
-
Devang Patel authored
llvm-svn: 113614
-
- Sep 03, 2010
-
-
Jim Grosbach authored
overload UserInInstr. Explicitly check Allocatable. The early exit in the condition will mean the performance impact of the extra test should be minimal. llvm-svn: 113016
-
- Sep 01, 2010
-
-
Jim Grosbach authored
llvm-svn: 112728
-
Jim Grosbach authored
llvm-svn: 112726
-
- Aug 31, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 112632
-
- Aug 21, 2010
-
-
Eli Friedman authored
llvm-svn: 111744
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Devang Patel authored
While emitting DBG_VALUE for registers spilled at the end of a block do not use location of MBB->end(). If a block does not have terminator then incoming iterator points to end(). llvm-svn: 110411
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Aug 04, 2010
-
-
Devang Patel authored
While spilling live registers at the end of block check whether they are used by DBG_VALUE machine instructions or not. If a spilled register is used by DBG_VALUE machine instruction then insert a new DBG_VALUE machine instruction to encode variable's new location on stack. llvm-svn: 110235
-
- Jul 29, 2010
-
-
Jakob Stoklund Olesen authored
multiple defs, like t2LDRSB_POST. The first def could accidentally steal the physreg that the second, tied def was required to be allocated to. Now, the tied use-def is treated more like an early clobber, and the physreg is reserved before allocating the other defs. This would never be a problem when the tied def was the only def which is the usual case. This fixes MallocBench/gs for thumb2 -O0. llvm-svn: 109715
-
- Jul 20, 2010
-
-
Devang Patel authored
Do not visit operands of old instruction. Visit all operands of new instruction. llvm-svn: 108767
-
- Jul 16, 2010
-
-
Jakob Stoklund Olesen authored
TII::isMoveInstr is going tobe completely removed. llvm-svn: 108507
-
- Jul 09, 2010
-
-
Devang Patel authored
llvm-svn: 108023
-
- Jul 03, 2010
-
-
Jakob Stoklund Olesen authored
This code is transitional, it will soon be possible to eliminate isExtractSubreg, isInsertSubreg, and isMoveInstr in most places. llvm-svn: 107547
-
- Jun 29, 2010
-
-
Jakob Stoklund Olesen authored
A partial redefine needs to be treated like a tied operand, and the register must be reloaded while processing use operands. This fixes a bug where partially redefined registers were processed as normal defs with a reload added. The reload could clobber another use operand if it was a kill that allowed register reuse. llvm-svn: 107193
-
- Jun 28, 2010
-
-
Jakob Stoklund Olesen authored
When an instruction has tied operands and physreg defines, we must take extra care that the tied operands conflict with neither physreg defs nor uses. The special treatment is given to inline asm and instructions with tied operands / early clobbers and physreg defines. This fixes PR7509. llvm-svn: 107043
-
- Jun 15, 2010
-
-
Jakob Stoklund Olesen authored
Early clobbers defining a virtual register were first alocated to a physreg and then processed as a physreg EC, spilling the virtreg. This fixes PR7382. llvm-svn: 105998
-
- Jun 04, 2010
-
-
Jakob Stoklund Olesen authored
register allocation. Process all of the clobber lists at the end of the function, marking the registers as used in MachineRegisterInfo. This is necessary in case the calls clobber callee-saved registers (sic). llvm-svn: 105473
-
- May 19, 2010
-
-
Jakob Stoklund Olesen authored
A partial redef now triggers a reload if required. Also don't add <imp-def,dead> operands for physical superregisters. Kill flags are still treated as full register kills, and <imp-use,kill> operands are added for physical superregisters as before. llvm-svn: 104167
-
- May 18, 2010
-
-
Jakob Stoklund Olesen authored
instruction. This can happen on ARM: >> %reg1035:5<def>, %reg1035:6<def> = VLD1q16 %reg1028, 0, pred:14, pred:%reg0 Regs: Q0=%reg1032* R0=%reg1028* R1=%reg1029* R2 R3=%reg1031* Killing last use: %reg1028 Allocating %reg1035 from QPR Assigning %reg1035 to Q1 << %D2<def>, %D3<def> = VLD1q16 %R0<kill>, 0, pred:14, pred:%reg0, %Q1<imp-def> llvm-svn: 104056
-
- May 17, 2010
-
-
Jakob Stoklund Olesen authored
This fixes the miscompilations of MultiSource/Applications/JM/l{en,de}cod. Clang now successfully self hosts in a debug build with the fast register allocator. llvm-svn: 103975
-
Jakob Stoklund Olesen authored
llvm-svn: 103961
-
Jakob Stoklund Olesen authored
While that approach works wonders for register pressure, it tends to break everything. This should unbreak the arm-linux builder and fix a number of miscompilations. llvm-svn: 103946
-
Jakob Stoklund Olesen authored
llvm-svn: 103940
-
Jakob Stoklund Olesen authored
out aliases when allocating. Clean up allocVirtReg(). Use calcSpillCost() to allow more aggressive hinting. Now the hint is always taken unless blocked by a reserved register. This leads to more coalescing, lower register pressure, and less spilling. llvm-svn: 103939
-
Jakob Stoklund Olesen authored
This makes allocation independent on the ordering of use-def chains. llvm-svn: 103935
-
Jakob Stoklund Olesen authored
llvm-svn: 103934
-
Jakob Stoklund Olesen authored
This is safe to do because the physreg has been marked UsedInInstr and the kill flag will be set on the last operand using the virtreg if there are more then one. llvm-svn: 103933
-
Jakob Stoklund Olesen authored
llvm-svn: 103931
-
Jakob Stoklund Olesen authored
through the very long list of call-clobbered registers. We just assume all registers are clobbered. llvm-svn: 103930
-
Jakob Stoklund Olesen authored
llvm-svn: 103929
-
Jakob Stoklund Olesen authored
Debug code doesn't use callee saved registers anyway, and the code is simpler this way. Now spillVirtReg always kills, and the isKill parameter is not needed. llvm-svn: 103927
-