Skip to content

Instantly share code, notes, and snippets.

@modocache
Created July 25, 2017 03:04
Show Gist options
  • Save modocache/484ae7c2b950928ad0524bf6036ffebb to your computer and use it in GitHub Desktop.
Save modocache/484ae7c2b950928ad0524bf6036ffebb to your computer and use it in GitHub Desktop.
diff --git a/test/CodeGen/ARM/swifterror.ll b/test/CodeGen/ARM/swifterror.ll
index b02adf7912b..afe83db64d0 100644
--- a/test/CodeGen/ARM/swifterror.ll
+++ b/test/CodeGen/ARM/swifterror.ll
@@ -1,5 +1,6 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=armv7-apple-ios | FileCheck --check-prefix=CHECK-APPLE --check-prefix=CHECK-ARMV7 %s
; RUN: llc -verify-machineinstrs -O0 < %s -mtriple=armv7-apple-ios | FileCheck --check-prefix=CHECK-O0 %s
+; RUN: llc -verify-machineinstrs < %s -mtriple=armv7-none-linux-androideabi | FileCheck --check-prefix=CHECK-ARMV7 %s
declare i8* @malloc(i64)
declare void @free(i8*)
.text
.syntax unified
.eabi_attribute 67, "2.09" @ Tag_conformance
.eabi_attribute 6, 10 @ Tag_CPU_arch
.eabi_attribute 7, 65 @ Tag_CPU_arch_profile
.eabi_attribute 8, 1 @ Tag_ARM_ISA_use
.eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
.fpu neon
.eabi_attribute 34, 1 @ Tag_CPU_unaligned_access
.eabi_attribute 17, 1 @ Tag_ABI_PCS_GOT_use
.eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
.eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
.eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
.eabi_attribute 24, 1 @ Tag_ABI_align_needed
.eabi_attribute 25, 1 @ Tag_ABI_align_preserved
.eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
.eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use
.file "<stdin>"
.globl foo @ -- Begin function foo
.p2align 2
.type foo,%function
.code 32 @ @foo
foo:
.fnstart
@ BB#0: @ %entry
.save {r7, lr}
push {r7, lr}
mov r0, #16
mov r1, #0
bl malloc
mov r1, r0
mov r0, #1
strb r0, [r1, #8]
mov r0, #1065353216
mov r8, r1
pop {r7, pc}
.Lfunc_end0:
.size foo, .Lfunc_end0-foo
.fnend
@ -- End function
.globl caller @ -- Begin function caller
.p2align 2
.type caller,%function
.code 32 @ @caller
caller:
.fnstart
@ BB#0: @ %entry
.save {r4, r8, r11, lr}
push {r4, r8, r11, lr}
.pad #8
sub sp, sp, #8
mov r8, #0
mov r4, r0
bl foo
cmp r8, #0
ldrbeq r0, [r8, #8]
strbeq r0, [r4]
mov r0, r8
bl free
mov r0, #1065353216
add sp, sp, #8
pop {r4, r8, r11, pc}
.Lfunc_end1:
.size caller, .Lfunc_end1-caller
.fnend
@ -- End function
.globl caller2 @ -- Begin function caller2
.p2align 2
.type caller2,%function
.code 32 @ @caller2
caller2:
.fnstart
@ BB#0: @ %entry
.save {r4, r8, r11, lr}
push {r4, r8, r11, lr}
.vsave {d8}
vpush {d8}
.pad #8
sub sp, sp, #8
vmov.f32 s16, #1.000000e+00
mov r4, r0
.LBB2_1: @ %bb_loop
@ =>This Inner Loop Header: Depth=1
mov r8, #0
bl foo
cmp r8, #0
bne .LBB2_4
@ BB#2: @ %cont
@ in Loop: Header=BB2_1 Depth=1
vmov s0, r0
vcmpe.f32 s0, s16
vmrs APSR_nzcv, fpscr
ble .LBB2_1
@ BB#3: @ %bb_end
ldrb r0, [r8, #8]
strb r0, [r4]
.LBB2_4: @ %handler
mov r0, r8
bl free
mov r0, #1065353216
add sp, sp, #8
vpop {d8}
pop {r4, r8, r11, pc}
.Lfunc_end2:
.size caller2, .Lfunc_end2-caller2
.fnend
@ -- End function
.globl foo_if @ -- Begin function foo_if
.p2align 2
.type foo_if,%function
.code 32 @ @foo_if
foo_if:
.fnstart
@ BB#0: @ %entry
.save {r7, lr}
push {r7, lr}
cmp r0, #0
beq .LBB3_2
@ BB#1: @ %gen_error
mov r0, #16
mov r1, #0
bl malloc
mov r1, r0
mov r0, #1
strb r0, [r1, #8]
mov r0, #1065353216
mov r8, r1
pop {r7, pc}
.LBB3_2: @ %normal
mov r0, #0
pop {r7, pc}
.Lfunc_end3:
.size foo_if, .Lfunc_end3-foo_if
.fnend
@ -- End function
.globl foo_loop @ -- Begin function foo_loop
.p2align 2
.type foo_loop,%function
.code 32 @ @foo_loop
foo_loop:
.fnstart
@ BB#0: @ %entry
.save {r4, r5, r7, lr}
push {r4, r5, r7, lr}
.vsave {d8, d9}
vpush {d8, d9}
vmov.f32 s18, #1.000000e+00
mov r4, r0
vmov s16, r1
mov r2, r8
mov r5, #1
.LBB4_1: @ %bb_loop
@ =>This Inner Loop Header: Depth=1
cmp r4, #0
beq .LBB4_3
@ BB#2: @ %gen_error
@ in Loop: Header=BB4_1 Depth=1
mov r0, #16
mov r1, #0
bl malloc
mov r2, r0
strb r5, [r2, #8]
.LBB4_3: @ %bb_cont
@ in Loop: Header=BB4_1 Depth=1
vcmpe.f32 s16, s18
vmrs APSR_nzcv, fpscr
ble .LBB4_1
@ BB#4: @ %bb_end
mov r0, #0
mov r8, r2
vpop {d8, d9}
pop {r4, r5, r7, pc}
.Lfunc_end4:
.size foo_loop, .Lfunc_end4-foo_loop
.fnend
@ -- End function
.globl foo_sret @ -- Begin function foo_sret
.p2align 2
.type foo_sret,%function
.code 32 @ @foo_sret
foo_sret:
.fnstart
@ BB#0: @ %entry
.save {r4, r5, r7, lr}
push {r4, r5, r7, lr}
mov r4, r1
mov r5, r0
mov r0, #16
mov r1, #0
bl malloc
mov r1, #1
mov r8, r0
strb r1, [r0, #8]
str r4, [r5, #4]
pop {r4, r5, r7, pc}
.Lfunc_end5:
.size foo_sret, .Lfunc_end5-foo_sret
.fnend
@ -- End function
.globl caller3 @ -- Begin function caller3
.p2align 2
.type caller3,%function
.code 32 @ @caller3
caller3:
.fnstart
@ BB#0: @ %entry
.save {r4, r8, r11, lr}
push {r4, r8, r11, lr}
.pad #32
sub sp, sp, #32
mov r4, r0
add r0, sp, #8
mov r1, #1
mov r8, #0
bl foo_sret
cmp r8, #0
ldrbeq r0, [r8, #8]
strbeq r0, [r4]
mov r0, r8
bl free
mov r0, #1065353216
add sp, sp, #32
pop {r4, r8, r11, pc}
.Lfunc_end6:
.size caller3, .Lfunc_end6-caller3
.fnend
@ -- End function
.globl foo_vararg @ -- Begin function foo_vararg
.p2align 2
.type foo_vararg,%function
.code 32 @ @foo_vararg
foo_vararg:
.fnstart
@ BB#0: @ %entry
.pad #16
sub sp, sp, #16
.save {r7, lr}
push {r7, lr}
.pad #24
sub sp, sp, #24
add r8, sp, #32
stm r8, {r0, r1, r2, r3}
mov r0, #16
mov r1, #0
bl malloc
mov r1, r0
mov r0, #1
strb r0, [r1, #8]
add r0, sp, #32
orr r0, r0, #4
ldr r2, [sp, #32]
mov r8, r1
ldr r3, [r0], #4
str r2, [sp, #12]
add r2, r0, #4
str r3, [sp, #8]
str r2, [sp, #16]
ldr r0, [r0]
str r0, [sp, #4]
mov r0, #1065353216
add sp, sp, #24
pop {r7, lr}
add sp, sp, #16
bx lr
.Lfunc_end7:
.size foo_vararg, .Lfunc_end7-foo_vararg
.fnend
@ -- End function
.globl caller4 @ -- Begin function caller4
.p2align 2
.type caller4,%function
.code 32 @ @caller4
caller4:
.fnstart
@ BB#0: @ %entry
.save {r4, r8, r11, lr}
push {r4, r8, r11, lr}
.pad #16
sub sp, sp, #16
mov r4, r0
mov r0, #11
str r0, [sp, #4]
mov r0, #10
str r0, [sp, #8]
mov r0, #12
str r0, [sp]
mov r8, #0
mov r0, #10
mov r1, #11
mov r2, #12
bl foo_vararg
cmp r8, #0
ldrbeq r0, [r8, #8]
strbeq r0, [r4]
mov r0, r8
bl free
mov r0, #1065353216
add sp, sp, #16
pop {r4, r8, r11, pc}
.Lfunc_end8:
.size caller4, .Lfunc_end8-caller4
.fnend
@ -- End function
.globl tailcallswifterror @ -- Begin function tailcallswifterror
.p2align 2
.type tailcallswifterror,%function
.code 32 @ @tailcallswifterror
tailcallswifterror:
.fnstart
@ BB#0: @ %entry
.save {r7, lr}
push {r7, lr}
bl tailcallswifterror
pop {r7, pc}
.Lfunc_end9:
.size tailcallswifterror, .Lfunc_end9-tailcallswifterror
.fnend
@ -- End function
.globl tailcallswifterror_swiftcc @ -- Begin function tailcallswifterror_swiftcc
.p2align 2
.type tailcallswifterror_swiftcc,%function
.code 32 @ @tailcallswifterror_swiftcc
tailcallswifterror_swiftcc:
.fnstart
@ BB#0: @ %entry
.save {r7, lr}
push {r7, lr}
bl tailcallswifterror_swiftcc
pop {r7, pc}
.Lfunc_end10:
.size tailcallswifterror_swiftcc, .Lfunc_end10-tailcallswifterror_swiftcc
.fnend
@ -- End function
.globl swifterror_clobber @ -- Begin function swifterror_clobber
.p2align 2
.type swifterror_clobber,%function
.code 32 @ @swifterror_clobber
swifterror_clobber:
.fnstart
@ BB#0:
mov r0, r8
@APP
nop
@NO_APP
mov r8, r0
bx lr
.Lfunc_end11:
.size swifterror_clobber, .Lfunc_end11-swifterror_clobber
.fnend
@ -- End function
.globl swifterror_reg_clobber @ -- Begin function swifterror_reg_clobber
.p2align 2
.type swifterror_reg_clobber,%function
.code 32 @ @swifterror_reg_clobber
swifterror_reg_clobber:
.fnstart
@ BB#0:
.save {r8, lr}
push {r8, lr}
@APP
nop
@NO_APP
pop {r8, pc}
.Lfunc_end12:
.size swifterror_reg_clobber, .Lfunc_end12-swifterror_reg_clobber
.fnend
@ -- End function
.globl params_in_reg @ -- Begin function params_in_reg
.p2align 2
.type params_in_reg,%function
.code 32 @ @params_in_reg
params_in_reg:
.fnstart
@ BB#0:
.save {r4, r5, r6, r7, r10, r11, lr}
push {r4, r5, r6, r7, r10, r11, lr}
.pad #12
sub sp, sp, #12
str r8, [sp, #4] @ 4-byte Spill
mov r5, r10
mov r6, r3
mov r7, r2
mov r4, r1
mov r11, r0
mov r0, #1
mov r1, #2
mov r2, #3
mov r3, #4
mov r10, #0
mov r8, #0
bl params_in_reg2
ldr r8, [sp, #4] @ 4-byte Reload
mov r0, r11
mov r1, r4
mov r2, r7
mov r3, r6
mov r10, r5
bl params_in_reg2
add sp, sp, #12
pop {r4, r5, r6, r7, r10, r11, pc}
.Lfunc_end13:
.size params_in_reg, .Lfunc_end13-params_in_reg
.fnend
@ -- End function
.globl params_and_return_in_reg @ -- Begin function params_and_return_in_reg
.p2align 2
.type params_and_return_in_reg,%function
.code 32 @ @params_and_return_in_reg
params_and_return_in_reg:
.fnstart
@ BB#0:
.save {r4, r5, r6, r7, r10, r11, lr}
push {r4, r5, r6, r7, r10, r11, lr}
.pad #12
sub sp, sp, #12
mov r5, r8
str r10, [sp, #4] @ 4-byte Spill
mov r6, r3
mov r7, r2
mov r4, r1
mov r11, r0
mov r0, #1
mov r1, #2
mov r2, #3
mov r3, #4
mov r10, #0
mov r8, #0
bl params_in_reg2
ldr r10, [sp, #4] @ 4-byte Reload
mov r0, r11
str r8, [sp] @ 4-byte Spill
mov r1, r4
mov r2, r7
mov r3, r6
mov r8, r5
bl params_and_return_in_reg2
mov r11, r8
ldr r8, [sp] @ 4-byte Reload
mov r4, r0
mov r6, r1
mov r7, r2
mov r5, r3
mov r0, #1
mov r1, #2
mov r2, #3
mov r3, #4
mov r10, #0
bl params_in_reg2
mov r0, r4
mov r1, r6
mov r2, r7
mov r3, r5
mov r8, r11
add sp, sp, #12
pop {r4, r5, r6, r7, r10, r11, pc}
.Lfunc_end14:
.size params_and_return_in_reg, .Lfunc_end14-params_and_return_in_reg
.fnend
@ -- End function
.globl tailcall_from_swifterror @ -- Begin function tailcall_from_swifterror
.p2align 2
.type tailcall_from_swifterror,%function
.code 32 @ @tailcall_from_swifterror
tailcall_from_swifterror:
.fnstart
@ BB#0: @ %entry
.save {r4, lr}
push {r4, lr}
mov r0, #0
mov r4, r8
bl acallee
mov r8, r4
pop {r4, pc}
.Lfunc_end15:
.size tailcall_from_swifterror, .Lfunc_end15-tailcall_from_swifterror
.fnend
@ -- End function
.globl testAssign @ -- Begin function testAssign
.p2align 2
.type testAssign,%function
.code 32 @ @testAssign
testAssign:
.fnstart
@ BB#0: @ %entry
.save {r8, lr}
push {r8, lr}
.pad #8
sub sp, sp, #8
mov r8, #0
bl foo2
mov r0, r8
add sp, sp, #8
pop {r8, pc}
.Lfunc_end16:
.size testAssign, .Lfunc_end16-testAssign
.fnend
@ -- End function
.section ".note.GNU-stack","",%progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment