@@ -62,4 +62,96 @@ if.end:
62
62
63
63
declare dso_local void @bar ()
64
64
65
+ define void @nomerge_trap (i32 %i ) {
66
+ ; CHECK-LABEL: nomerge_trap:
67
+ ; CHECK: # %bb.0: # %entry
68
+ ; CHECK: # %bb.1: # %entry
69
+ ; CHECK: # %bb.2: # %if.then
70
+ ; CHECK-NEXT: ud2
71
+ ; CHECK-NEXT: LBB{{.*}}: # %if.then2
72
+ ; CHECK-NEXT: ud2
73
+ ; CHECK-NEXT: .LBB{{.*}}: # %if.end3
74
+ ; CHECK-NEXT: ud2
75
+ entry:
76
+ switch i32 %i , label %if.end3 [
77
+ i32 5 , label %if.then
78
+ i32 7 , label %if.then2
79
+ ]
80
+
81
+ if.then:
82
+ tail call void @llvm.trap () #0
83
+ unreachable
84
+
85
+ if.then2:
86
+ tail call void @llvm.trap () #0
87
+ unreachable
88
+
89
+ if.end3:
90
+ tail call void @llvm.trap () #0
91
+ unreachable
92
+ }
93
+
94
+ declare dso_local void @llvm.trap ()
95
+
96
+ define void @nomerge_debugtrap (i32 %i ) {
97
+ ; CHECK-LABEL: nomerge_debugtrap:
98
+ ; CHECK: # %bb.0: # %entry
99
+ ; CHECK: # %bb.1: # %entry
100
+ ; CHECK: # %bb.2: # %if.then
101
+ ; CHECK-NEXT: int3
102
+ ; CHECK-NEXT: LBB{{.*}}: # %if.then2
103
+ ; CHECK-NEXT: int3
104
+ ; CHECK-NEXT: .LBB{{.*}}: # %if.end3
105
+ ; CHECK-NEXT: int3
106
+ entry:
107
+ switch i32 %i , label %if.end3 [
108
+ i32 5 , label %if.then
109
+ i32 7 , label %if.then2
110
+ ]
111
+
112
+ if.then:
113
+ tail call void @llvm.debugtrap () #0
114
+ unreachable
115
+
116
+ if.then2:
117
+ tail call void @llvm.debugtrap () #0
118
+ unreachable
119
+
120
+ if.end3:
121
+ tail call void @llvm.debugtrap () #0
122
+ unreachable
123
+ }
124
+
125
+ define void @nomerge_named_debugtrap (i32 %i ) {
126
+ ; CHECK-LABEL: nomerge_named_debugtrap:
127
+ ; CHECK: # %bb.0: # %entry
128
+ ; CHECK: # %bb.1: # %entry
129
+ ; CHECK: # %bb.2: # %if.then
130
+ ; CHECK-NEXT: callq trap_func@PLT
131
+ ; CHECK-NEXT: LBB{{.*}}: # %if.then2
132
+ ; CHECK-NEXT: callq trap_func@PLT
133
+ ; CHECK-NEXT: .LBB{{.*}}: # %if.end3
134
+ ; CHECK-NEXT: callq trap_func@PLT
135
+ entry:
136
+ switch i32 %i , label %if.end3 [
137
+ i32 5 , label %if.then
138
+ i32 7 , label %if.then2
139
+ ]
140
+
141
+ if.then:
142
+ tail call void @llvm.debugtrap () #1
143
+ unreachable
144
+
145
+ if.then2:
146
+ tail call void @llvm.debugtrap () #1
147
+ unreachable
148
+
149
+ if.end3:
150
+ tail call void @llvm.debugtrap () #1
151
+ unreachable
152
+ }
153
+
154
+ declare dso_local void @llvm.debugtrap ()
155
+
65
156
attributes #0 = { nomerge }
157
+ attributes #1 = { nomerge "trap-func-name" ="trap_func" }
0 commit comments