diff options
author | Tim Northover <tnorthover@apple.com> | 2013-05-29 19:32:06 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2013-05-29 19:32:06 +0000 |
commit | aae0fa998af0f65221d7b98630162be6d88f05dc (patch) | |
tree | 32f70d885b5b98aac7a135eb1d8dd0b00d32f5e0 /test | |
parent | 88c744083d6cf5f4810c1e9fe457a212bb24d432 (diff) | |
download | llvm-aae0fa998af0f65221d7b98630162be6d88f05dc.tar.gz llvm-aae0fa998af0f65221d7b98630162be6d88f05dc.tar.bz2 llvm-aae0fa998af0f65221d7b98630162be6d88f05dc.tar.xz |
Teach ReMaterialization to be more cunning about subregisters
This allows rematerialization during register coalescing to handle
more cases involving operations like SUBREG_TO_REG which might need to
be rematerialized using sub-register indices.
For example, code like:
v1(GPR64):sub_32 = MOVZ something
v2(GPR64) = COPY v1(GPR64)
should be convertable to:
v2(GPR64):sub_32 = MOVZ something
but previously we just gave up in places like this
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182872 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/AArch64/sibling-call.ll | 4 | ||||
-rw-r--r-- | test/DebugInfo/AArch64/variable-loc.ll | 14 |
2 files changed, 9 insertions, 9 deletions
diff --git a/test/CodeGen/AArch64/sibling-call.ll b/test/CodeGen/AArch64/sibling-call.ll index a1ec618b03..6df4e7e3e5 100644 --- a/test/CodeGen/AArch64/sibling-call.ll +++ b/test/CodeGen/AArch64/sibling-call.ll @@ -91,7 +91,7 @@ define void @indirect_tail() { %fptr = load void(i32)** @func tail call void %fptr(i32 42) ret void -; CHECK: movz w0, #42 ; CHECK: ldr [[FPTR:x[1-9]+]], [{{x[0-9]+}}, #:lo12:func] +; CHECK: movz w0, #42 ; CHECK: br [[FPTR]] -}
\ No newline at end of file +} diff --git a/test/DebugInfo/AArch64/variable-loc.ll b/test/DebugInfo/AArch64/variable-loc.ll index ba9e13aa25..05a5bd08dd 100644 --- a/test/DebugInfo/AArch64/variable-loc.ll +++ b/test/DebugInfo/AArch64/variable-loc.ll @@ -16,21 +16,21 @@ ; return 0; ; } - ; First make sure main_arr is where we expect it: sp + 12 == x29 - 420: + ; First make sure main_arr is where we expect it: sp + 4 == x29 - 412: ; CHECK: main: -; CHECK: sub sp, sp, #448 -; CHECK: stp x29, x30, [sp, #432] -; CHECK: add x29, sp, #432 -; CHECK: add {{x[0-9]+}}, sp, #12 +; CHECK: sub sp, sp, #432 +; CHECK: stp x29, x30, [sp, #416] +; CHECK: add x29, sp, #416 +; CHECK: add {{x[0-9]+}}, sp, #4 ; Now check the debugging information reflects this: ; CHECK: DW_TAG_variable ; CHECK-NEXT: .word .Linfo_string7 - ; Rather hard-coded, but 145 => DW_OP_fbreg and the .ascii is LEB128 encoded -420. + ; Rather hard-coded, but 145 => DW_OP_fbreg and the .ascii is LEB128 encoded -412. ; CHECK: DW_AT_location ; CHECK-NEXT: .byte 145 -; CHECK-NEXT: .ascii "\334|" +; CHECK-NEXT: .ascii "\344|" ; CHECK: .Linfo_string7: ; CHECK-NEXT: main_arr |