mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
108 lines
4.3 KiB
Plaintext
108 lines
4.3 KiB
Plaintext
// RUN: %target-swift-frontend -primary-file %s -O -g -S | %FileCheck %s --check-prefix CHECK --check-prefix CHECK-%target-cpu --check-prefix CHECK-OPT-%target-os --check-prefix CHECK-OPT-%target-os-%target-cpu
|
|
// RUN: %target-swift-frontend -primary-file %s -g -S | %FileCheck %s --check-prefix CHECK --check-prefix CHECK-%target-cpu --check-prefix CHECK-NOOPT-%target-os
|
|
|
|
import Builtin
|
|
import Swift
|
|
|
|
// Make sure we emit two traps.
|
|
|
|
// CHECK-LABEL: test_cond_fail:
|
|
|
|
// CHECK-x86_64: {{.cfi_startproc|Lfunc_begin}}
|
|
// CHECK-i386: .cfi_startproc
|
|
// CHECK-arm64: .cfi_startproc
|
|
// CHECK-aarch64: {{.cfi_startproc|Lfunc_begin}}
|
|
// CHECK-armv7: Lfunc_begin
|
|
// CHECK-armv7s: Lfunc_begin
|
|
// CHECK-powerpc64: .cfi_startproc
|
|
// CHECK-powerpc64le: .cfi_startproc
|
|
// CHECK-s390x: .cfi_startproc
|
|
// CHECK-OPT-macosx: InlineAsm Start
|
|
// CHECK-OPT-macosx: InlineAsm End
|
|
// CHECK-OPT-linux: ##APP
|
|
// CHECK-OPT-linux: ##NO_APP
|
|
// CHECK-OPT-windows: ##APP
|
|
// CHECK-OPT-windows: ##NO_APP
|
|
// CHECK-OPT-linux-androideabi: @APP
|
|
// CHECK-OPT-linux-androideabi: @NO_APP
|
|
// CHECK-OPT-linux-android-aarch64: //APP
|
|
// CHECK-OPT-linux-android-aarch64: //NO_APP
|
|
// CHECK-OPT-linux-android-x86_64: #APP
|
|
// CHECK-OPT-linux-android-x86_64: #NO_APP
|
|
// CHECK-NOOPT-macosx-NOT: InlineAsm Start
|
|
// CHECK-NOOPT-macosx-NOT: InlineAsm End
|
|
// CHECK-NOOPT-linux-NOT: ##APP
|
|
// CHECK-NOOPT-linux-NOT: ##NO_APP
|
|
// CHECK-NOOPT-windows-NOT: ##APP
|
|
// CHECK-NOOPT-windows-NOT: ##NO_APP
|
|
// CHECK-OPT-linux-androideabi-NOT: @APP
|
|
// CHECK-OPT-linux-androideabi-NOT: @NO_APP
|
|
// CHECK-OPT-linux-android-aarch64-NOT: //APP
|
|
// CHECK-OPT-linux-android-aarch64-NOT: //NO_APP
|
|
// CHECK-OPT-linux-android-x86_64-NOT: #APP
|
|
// CHECK-OPT-linux-android-x86_64-NOT: #NO_APP
|
|
// CHECK-x86_64: ud2
|
|
// CHECK-i386: ud2
|
|
// CHECK-arm64: brk
|
|
// CHECK-aarch64: brk
|
|
// CHECK-armv7: {{trap|.inst 0xe7ffdefe}}
|
|
// CHECK-armv7s: {{trap|.inst 0xe7ffdefe}}
|
|
// CHECK-powerpc64: trap
|
|
// CHECK-powerpc64le: trap
|
|
// CHECK-s390x: j .Ltmp{{[0-9]+}}+2
|
|
// CHECK-x86_64-NOT: {{.cfi_endproc|Lfunc_end}}
|
|
// CHECK-i386-NOT: .cfi_endproc
|
|
// CHECK-arm64-NOT: .cfi_endproc
|
|
// CHECK-aarch64-NOT: .cfi_endproc
|
|
// CHECK-armv7-NOT: Lfunc_end
|
|
// CHECK-armv7s-NOT: Lfunc_end
|
|
// CHECK-powerpc64-NOT: .cfi_endproc
|
|
// CHECK-powerpc64le-NOT: .cfi_endproc
|
|
// CHECK-s390x-NOT: .cfi_endproc
|
|
// CHECK-OPT-macosx: InlineAsm Start
|
|
// CHECK-OPT-macosx: InlineAsm End
|
|
// CHECK-OPT-linux: ##APP
|
|
// CHECK-OPT-linux: ##NO_APP
|
|
// CHECK-OPT-windows: ##APP
|
|
// CHECK-OPT-windows: ##NO_APP
|
|
// CHECK-NOOPT-macosx-NOT: InlineAsm Start
|
|
// CHECK-NOOPT-macosx-NOT: InlineAsm End
|
|
// CHECK-NOOPT-linux-NOT: ##APP
|
|
// CHECK-NOOPT-linux-NOT: ##NO_APP
|
|
// CHECK-NOOPT-windows-NOT: ##APP
|
|
// CHECK-NOOPT-windows-NOT: ##NO_APP
|
|
// CHECK-x86_64: ud2
|
|
// CHECK-i386: ud2
|
|
// CHECK-arm64: brk
|
|
// CHECK-aarch64: brk
|
|
// CHECK-armv7: {{trap|.inst 0xe7ffdefe}}
|
|
// CHECK-armv7s: {{trap|.inst 0xe7ffdefe}}
|
|
// CHECK-powerpc64: trap
|
|
// CHECK-powerpc64le: trap
|
|
// CHECK-s390x: j .Ltmp{{[0-9]+}}+2
|
|
// CHECK-x86_64: {{.cfi_endproc|Lfunc_end}}
|
|
// CHECK-i386: .cfi_endproc
|
|
// CHECK-arm64: .cfi_endproc
|
|
// CHECK-aarch64: {{.cfi_endproc|Lfunc_end}}
|
|
// CHECK-armv7: Lfunc_end
|
|
// CHECK-armv7s: Lfunc_end
|
|
// CHECK-powerpc64: .cfi_endproc
|
|
// CHECK-powerpc64le: .cfi_endproc
|
|
// CHECK-s390x: .cfi_endproc
|
|
sil hidden @test_cond_fail : $@convention(thin) (Int32) -> Int32 {
|
|
bb0(%0 : $Int32):
|
|
%2 = integer_literal $Builtin.Int32, 1
|
|
%3 = struct_extract %0 : $Int32, #Int32._value
|
|
%4 = integer_literal $Builtin.Int1, -1
|
|
%5 = builtin "sadd_with_overflow_Int32"(%3 : $Builtin.Int32, %2 : $Builtin.Int32, %4 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1)
|
|
%6 = tuple_extract %5 : $(Builtin.Int32, Builtin.Int1), 0
|
|
%7 = tuple_extract %5 : $(Builtin.Int32, Builtin.Int1), 1
|
|
cond_fail %7 : $Builtin.Int1
|
|
%8 = builtin "sadd_with_overflow_Int32"(%6 : $Builtin.Int32, %2 : $Builtin.Int32, %4 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1)
|
|
%9 = tuple_extract %8 : $(Builtin.Int32, Builtin.Int1), 0
|
|
%10 = tuple_extract %8 : $(Builtin.Int32, Builtin.Int1), 1
|
|
cond_fail %10 : $Builtin.Int1
|
|
%11 = struct $Int32 (%9 : $Builtin.Int32)
|
|
return %11 : $Int32
|
|
}
|