summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/struct_byval.ll
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2016-05-10 19:17:47 +0000
committerTim Northover <tnorthover@apple.com>2016-05-10 19:17:47 +0000
commitb5ece527a15dd3e4da40edffc0360831fe473a53 (patch)
tree12016866d3c217eb3f441e19401b7d0b1998eb0c /llvm/test/CodeGen/ARM/struct_byval.ll
parentecf7d15d49de4f6810c3215c3df520983746a96c (diff)
downloadbcm5719-llvm-b5ece527a15dd3e4da40edffc0360831fe473a53.tar.gz
bcm5719-llvm-b5ece527a15dd3e4da40edffc0360831fe473a53.zip
ARM: stop emitting blx instructions for most calls on MachO.
I'm really not sure why we were in the first place, it's the linker's job to convert between BL/BLX as necessary. Even worse, using BLX left Thumb calls that could be locally resolved completely unencodable since all offsets to BLX are multiples of 4. rdar://26182344 llvm-svn: 269101
Diffstat (limited to 'llvm/test/CodeGen/ARM/struct_byval.ll')
-rw-r--r--llvm/test/CodeGen/ARM/struct_byval.ll31
1 files changed, 3 insertions, 28 deletions
diff --git a/llvm/test/CodeGen/ARM/struct_byval.ll b/llvm/test/CodeGen/ARM/struct_byval.ll
index d7b9b477ec1..6c8f6fa0b39 100644
--- a/llvm/test/CodeGen/ARM/struct_byval.ll
+++ b/llvm/test/CodeGen/ARM/struct_byval.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -mtriple=armv7-apple-ios6.0 | FileCheck %s
-; RUN: llc < %s -mtriple=thumbv7-apple-ios6.0 | FileCheck %s -check-prefix=THUMB
+; RUN: llc < %s -mtriple=thumbv7-apple-ios6.0 | FileCheck %s
; RUN: llc < %s -mtriple=armv7-unknown-nacl-gnueabi | FileCheck %s -check-prefix=NACL
; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi | FileCheck %s -check-prefix=NOMOVT
@@ -15,10 +15,6 @@ entry:
; CHECK: ldr
; CHECK: str
; CHECK-NOT:bne
-; THUMB-LABEL: f:
-; THUMB: ldr
-; THUMB: str
-; THUMB-NOT:bne
%st = alloca %struct.SmallStruct, align 4
%call = call i32 @e1(%struct.SmallStruct* byval %st)
ret i32 0
@@ -32,11 +28,6 @@ entry:
; CHECK: sub
; CHECK: str
; CHECK: bne
-; THUMB-LABEL: g:
-; THUMB: ldr
-; THUMB: sub
-; THUMB: str
-; THUMB: bne
; NACL-LABEL: g:
; Ensure that use movw instead of constpool for the loop trip count. But don't
; match the __stack_chk_guard movw
@@ -58,11 +49,6 @@ entry:
; CHECK: sub
; CHECK: vst1
; CHECK: bne
-; THUMB-LABEL: h:
-; THUMB: vld1
-; THUMB: sub
-; THUMB: vst1
-; THUMB: bne
; NACL: movw r{{[1-9]}}, #
; NACL: vld1
; NACL: sub
@@ -83,8 +69,6 @@ declare i32 @e3(%struct.LargeStruct* nocapture byval align 16 %in) nounwind
define void @f3(%struct.SmallStruct* nocapture byval %s) nounwind optsize {
; CHECK-LABEL: f3
; CHECK: bl _consumestruct
-; THUMB-LABEL: f3
-; THUMB: blx _consumestruct
entry:
%0 = bitcast %struct.SmallStruct* %s to i8*
tail call void @consumestruct(i8* %0, i32 80) optsize
@@ -94,8 +78,6 @@ entry:
define void @f4(%struct.SmallStruct* nocapture byval %s) nounwind optsize {
; CHECK-LABEL: f4
; CHECK: bl _consumestruct
-; THUMB-LABEL: f4
-; THUMB: blx _consumestruct
entry:
%addr = getelementptr inbounds %struct.SmallStruct, %struct.SmallStruct* %s, i32 0, i32 0
%0 = bitcast i32* %addr to i8*
@@ -106,9 +88,7 @@ entry:
; We can do tail call here since s is in the incoming argument area.
define void @f5(i32 %a, i32 %b, i32 %c, i32 %d, %struct.SmallStruct* nocapture byval %s) nounwind optsize {
; CHECK-LABEL: f5
-; CHECK: b _consumestruct
-; THUMB-LABEL: f5
-; THUMB: b.w _consumestruct
+; CHECK: b{{(\.w)?}} _consumestruct
entry:
%0 = bitcast %struct.SmallStruct* %s to i8*
tail call void @consumestruct(i8* %0, i32 80) optsize
@@ -117,9 +97,7 @@ entry:
define void @f6(i32 %a, i32 %b, i32 %c, i32 %d, %struct.SmallStruct* nocapture byval %s) nounwind optsize {
; CHECK-LABEL: f6
-; CHECK: b _consumestruct
-; THUMB-LABEL: f6
-; THUMB: b.w _consumestruct
+; CHECK: b{{(\.w)?}} _consumestruct
entry:
%addr = getelementptr inbounds %struct.SmallStruct, %struct.SmallStruct* %s, i32 0, i32 0
%0 = bitcast i32* %addr to i8*
@@ -137,9 +115,6 @@ define void @test_I_16() {
; CHECK-LABEL: test_I_16
; CHECK: ldrb
; CHECK: strb
-; THUMB-LABEL: test_I_16
-; THUMB: ldrb
-; THUMB: strb
entry:
call void @use_I(%struct.I.8* byval align 16 undef)
ret void
OpenPOWER on IntegriCloud