- May 17, 2011
-
-
Evan Cheng authored
llvm-svn: 131439
-
-
Jakob Stoklund Olesen authored
When instructions are deleted, they leave tombstone SlotIndex entries. The isZeroLength method should ignore these null indexes. This causes RABasic to sometimes spill a callee-saved register in the abi-isel.ll test, so don't run that test with -regalloc=basic. Prioritizing register allocation according to spill weight can cause more registers to be used. llvm-svn: 131436
-
- May 16, 2011
-
-
Eli Friedman authored
llvm-svn: 131424
-
Eli Friedman authored
llvm-svn: 131420
-
Eli Friedman authored
Basic fast-isel of extractvalue. Not too helpful on its own, given the IR clang generates for cases like this, but it should become more useful soon. llvm-svn: 131417
-
- May 14, 2011
-
-
Rafael Espindola authored
llvm-svn: 131330
-
- May 13, 2011
-
-
Rafael Espindola authored
to fix PR9900. I will keep it open until sable is able to comment on it. llvm-svn: 131294
-
Stuart Hastings authored
simplified version. <rdar://problem/9298790> llvm-svn: 131274
-
Stuart Hastings authored
rdar://problem/9298790 llvm-svn: 131269
-
Stuart Hastings authored
rdar://problem/9298790 llvm-svn: 131266
-
Stuart Hastings authored
by non-CMP expressions. The executable test case (129821) would test this as well, if we had an "-O0 -disable-arm-fast-isel" LLVM-GCC tester. Alas, the ARM assembly would be very difficult to check with FileCheck. The thumb2-cbnz.ll test is affected; it generates larger code (tst.w vs. cmp #0), but I believe the new version is correct. rdar://problem/9298790 llvm-svn: 131261
-
- May 12, 2011
-
-
Galina Kistanova authored
llvm-svn: 131252
-
Evan Cheng authored
Re-enable branchfolding common code hoisting optimization. Fixed a liveness test bug and also taught it to update liveins. llvm-svn: 131241
-
- May 11, 2011
-
-
-
Devang Patel authored
Identify end of prologue (and beginning of function body) using DW_LNS_set_prologue_end line table opcode. llvm-svn: 131194
-
Nadav Rotem authored
Fixes a bug in the DAGCombiner. LoadSDNodes have two values (data, chain). If there is a store after the load node, then there is a chain, which means that there is another user. Thus, asking hasOneUser would fail. Instead we ask hasNUsesOfValue on the 'data' value. llvm-svn: 131183
-
Nadav Rotem authored
Add custom lowering of X86 vector SRA/SRL/SHL when the shift amount is a splat vector. llvm-svn: 131179
-
Rafael Espindola authored
to provide a reduced testcase. llvm-svn: 131176
-
Evan Cheng authored
at the start of basic blocks to their common predecessor. It's actually quite common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size benefit. e.g. pushq %rax testl %edi, %edi jne LBB0_2 ## BB#1: xorb %al, %al popq %rdx ret LBB0_2: xorb %al, %al callq _foo popq %rdx ret => pushq %rax xorb %al, %al testl %edi, %edi je LBB0_2 ## BB#1: callq _foo LBB0_2: popq %rdx ret rdar://9145558 llvm-svn: 131172
-
- May 10, 2011
-
-
Rafael Espindola authored
llvm-svn: 131151
-
Justin Holewinski authored
Patch by Dan Bailey llvm-svn: 131128
-
- May 08, 2011
-
-
Benjamin Kramer authored
"b + ((a < b) ? 1 : 0)" compiles into cmpl %esi, %edi adcl $0, %esi instead of cmpl %esi, %edi sbbl %eax, %eax andl $1, %eax addl %esi, %eax This saves a register, a false dependency on %eax (Intel's CPUs still don't ignore it) and it's shorter. llvm-svn: 131070
-
- May 06, 2011
-
-
Jakob Stoklund Olesen authored
This can't be just an assertion, users can always write impossible inline assembly. Such an assembly statement should be included in the error message. llvm-svn: 131024
-
Justin Holewinski authored
Patch by Wei-Ren Chen llvm-svn: 130980
-
Eli Friedman authored
possibly related to cbnz formation. llvm-svn: 130977
-
- May 05, 2011
-
-
Rafael Espindola authored
I tested both gdb on a bootstrapped clang and and the gdb testsuite on OS X (snow leopard) and both are happy using __eh_frame. llvm-svn: 130937
-
Eli Friedman authored
Avoid extra vreg copies for arguments passed in registers. Specifically, this can make MachineCSE more effective in some cases (especially in small functions). PR8361 / part of rdar://problem/8259436 . llvm-svn: 130928
-
Jakob Stoklund Olesen authored
llvm-svn: 130893
-
Jakob Stoklund Olesen authored
Most of these tests require a single mov instruction that can come either before or after a 2-addr instruction. -join-physregs changes the behavior, but the results are equivalent. llvm-svn: 130891
-
Dan Gohman authored
the default register allocator is changed. llvm-svn: 130883
-
Bill Wendling authored
landing pad as its successor. SjLj exception handling jumps to the correct landing pad via a switch statement that's generated right before code-gen. Loosen the constraint in the machine instruction verifier to allow for this. Note, this isn't the most rigorous check since we cannot determine where that switch statement came from. But it's marginally better than turning this check off when SjLj exceptions are used. <rdar://problem/9187612> llvm-svn: 130881
-
Eli Friedman authored
Original message: Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 . llvm-svn: 130877
-
- May 04, 2011
-
-
Galina Kistanova authored
This test fails on ARM. The test shouldn't explicitly specify alignment (and alignment 4 is wrong) and requires hard-float. llvm-svn: 130875
-
Eli Friedman authored
llvm-svn: 130867
-
Eli Friedman authored
Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 . llvm-svn: 130862
-
Jakob Stoklund Olesen authored
llvm-svn: 130859
-
Jakob Stoklund Olesen authored
These tests all follow the same pattern: mov r2, r0 movs r0, #0 $CMP r2, r1 it eq moveq r0, #1 bx lr The first 'mov' can be eliminated by rematerializing 'movs r0, #0' below the test instruction: $CMP r0, r1 mov.w r0, #0 it eq moveq r0, #1 bx lr So far, only physreg coalescing can do that. The register allocators won't yet split live ranges just to eliminate copies. They can learn, but this particular problem is not likely to show up in real code. It only appears because r0 is used for both the function argument and return value. llvm-svn: 130858
-
Jakob Stoklund Olesen authored
llvm-svn: 130856
-
Jakob Stoklund Olesen authored
llvm-svn: 130855
-