- Jul 11, 2010
-
-
Jakob Stoklund Olesen authored
Targets must now implement TargetInstrInfo::copyPhysReg instead. There is no longer a default implementation forwarding to copyRegToReg. llvm-svn: 108095
-
Rafael Espindola authored
llvm-svn: 108094
-
Rafael Espindola authored
The first one was used just to call isSafeToMoveRegClassDefs. In general, using a more specific reg class is better, in practice only x86 implements that method and the results are always the same. The second one is in FindFreeRegister and is used to check if a register is in a register class, a much more direct call to contains is better as it should cover more cases and is faster. llvm-svn: 108093
-
Jakob Stoklund Olesen authored
llvm-svn: 108092
-
Jakob Stoklund Olesen authored
llvm-svn: 108091
-
Chandler Carruth authored
assert()s, switching to void-casts. Removed an unneeded Compiler.h include as a result. There are two other uses in LLVM, but they're not due to assert()s, so I've left them alone. llvm-svn: 108088
-
Jakob Stoklund Olesen authored
llvm-svn: 108087
-
Jakob Stoklund Olesen authored
llvm-svn: 108086
-
Jakob Stoklund Olesen authored
llvm-svn: 108084
-
Jakob Stoklund Olesen authored
llvm-svn: 108083
-
Jakob Stoklund Olesen authored
llvm-svn: 108082
-
Jakob Stoklund Olesen authored
llvm-svn: 108081
-
Jakob Stoklund Olesen authored
llvm-svn: 108080
-
Jakob Stoklund Olesen authored
llvm-svn: 108079
-
Jakob Stoklund Olesen authored
llvm-svn: 108078
-
Jakob Stoklund Olesen authored
llvm-svn: 108077
-
Jakob Stoklund Olesen authored
llvm-svn: 108076
-
Jakob Stoklund Olesen authored
Don't try a cross-class copy. That is very unlikely anywy since return value registers are usually register class friendly. (%EAX, %XMM0, etc). llvm-svn: 108074
-
Jakob Stoklund Olesen authored
This doesn't change the behavior of SelectBitcast for X86. llvm-svn: 108073
-
Rafael Espindola authored
correct alignment information, which simplifies ExpandRes_VAARG a bit. The patch introduces a new alignment information to TargetLoweringInfo. This is needed since the two natural candidates cannot be used: * The 's' in target data: If this is set to the minimal alignment of any argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for example. * The getTransientStackAlignment method. It is possible for an architecture to have argument less aligned than what we maintain the stack pointer. llvm-svn: 108072
-
Jakob Stoklund Olesen authored
This assumes that the registers can be copied which is probably a safe assumption. llvm-svn: 108070
-
Jakob Stoklund Olesen authored
The remaining copyRegToReg calls actually check the return value (shock!), so we cannot trivially replace them with COPY instructions. llvm-svn: 108069
-
Jakob Stoklund Olesen authored
llvm-svn: 108066
-
Jakob Stoklund Olesen authored
llvm-svn: 108065
-
Jakob Stoklund Olesen authored
llvm-svn: 108063
-
Jakob Stoklund Olesen authored
llvm-svn: 108062
-
Jakob Stoklund Olesen authored
This also avoids fatal copies from physregs. llvm-svn: 108061
-
Dan Gohman authored
if a block is split (by a custom inserter), the insert point may be in a different block than it was originally. This fixes 32-bit llvm-gcc bootstrap builds, and I haven't been able to reproduce it otherwise. llvm-svn: 108060
-
- Jul 10, 2010
-
-
Duncan Sands authored
operation, but the way it's implemented requires the operation to also be commutative. So add a check for commutativity (and tweak the corresponding comments). This makes no difference in practice since every associative LLVM instruction is also commutative! Here's an example to show the need for commutativity: the accum_recursion.ll testcase calculates the factorial function. Before the transformation the result of a call is ((((1*1)*2)*3)...)*x while afterwards it is (((1*x)*(x-1))...*2)*1 which clearly requires both associativity and commutativity of * to be equal to the original. llvm-svn: 108056
-
Jakob Stoklund Olesen authored
ScheduleDAGEmit, TwoAddressLowering, and PHIElimination. This switches the bulk of register copies to using COPY, but many less used copyRegToReg calls remain. llvm-svn: 108050
-
Jakob Stoklund Olesen authored
Based on a patch by Rafael Espíndola. Attempt to make the FpSET_ST1 hack more robust, but we are still relying on FpSET_ST0 preceeding it. This is only for supporting really weird x87 inline asm. We support: FpSET_ST0 INLINEASM FpSET_ST0 FpSET_ST1 INLINEASM with and without kills on the arguments. We don't support: FpSET_ST1 FpSET_ST0 INLINEASM nor FpSET_ST1 INLINEASM Just Don't Do It! llvm-svn: 108047
-
Dan Gohman authored
at the end of the block. llvm-svn: 108045
-
Chandler Carruth authored
llvm-svn: 108043
-
Dan Gohman authored
- Check getBytesToPopOnReturn(). - Eschew ST0 and ST1 for return values. - Fix the PIC base register initialization so that it doesn't ever fail to end up the top of the entry block. llvm-svn: 108039
-
Jakob Stoklund Olesen authored
it is popped, even if it is ununsed. A CopyFromReg node is too weak to represent the required sideeffect, so insert an FpGET_ST0 instruction directly instead. This will matter when CopyFromReg gets lowered to a generic COPY instruction. llvm-svn: 108037
-
- Jul 09, 2010
-
-
Devang Patel authored
llvm-svn: 108023
-
Bruno Cardoso Lopes authored
llvm-svn: 108022
-
Bruno Cardoso Lopes authored
llvm-svn: 108021
-
Jakob Stoklund Olesen authored
llvm-svn: 108020
-
Bruno Cardoso Lopes authored
llvm-svn: 108017
-