File: condfail.sil

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (103 lines) | stat: -rw-r--r-- 4,138 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// 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
// 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:       //APP
// CHECK-OPT-linux-android:       //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-NOT:       //APP
// CHECK-OPT-linux-android-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-NOT-x86_64:      {{.cfi_endproc|Lfunc_end}}
// CHECK-NOT-i386:        .cfi_endproc
// CHECK-NOT-arm64:       .cfi_endproc
// CHECK-NOT-aarch64:     .cfi_endproc
// CHECK-NOT-armv7:       Lfunc_end
// CHECK-NOT-armv7s:      Lfunc_end
// CHECK-NOT-powerpc64:   .cfi_endproc
// CHECK-NOT-powerpc64le: .cfi_endproc
// CHECK-NOT-s390x:       .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
}