};
void use(bool cond, struct S s1, struct S s2, int val1, int val2) {
- // CHECK: define {{.*}}use{{.*}}(
+ // CHECK-LABEL: define {{.*}}use{{.*}}(
// CHECK: %[[S1:.+]] = alloca %struct.S
// CHECK: %[[S2:.+]] = alloca %struct.S
// CHECK: %[[COND:.+]] = alloca i8
// CHECK: store i16 %[[BF_SET]], ptr %[[S1]]
// CHECK: br label %[[END:.+]]
- // CHECK: [[END]]:
+ // CHECK-LABEL: [[END]]:
// There is nothing in the 'end' block associated with this, but it is the
// 'continuation' block for the rest of the function.
// CHECK: store i16 %[[BF_SET]], ptr %[[S2]]
// CHECK: br label %[[END:.+]]
- // CHECK: [[END]]:
+ // CHECK-LABEL: [[END]]:
// CHECK-NOT: phi
// There is nothing in the 'end' block associated with this, but it is the
// 'continuation' block for the rest of the function.
void use2(bool cond1, bool cond2, struct S s1, int val1, int val2, int val3) {
- // CHECK: define {{.*}}use2{{.*}}(
+ // CHECK-LABEL: define {{.*}}use2{{.*}}(
// CHECK: %[[S1:.+]] = alloca %struct.S
// CHECK: %[[COND1:.+]] = alloca i8
// CHECK: %[[COND2:.+]] = alloca i8
// CHECK: store i16 %[[BF_SET]], ptr %[[S1]]
// CHECK: br label %[[END:.+]]
- // CHECK[[END]]:
+ // CHECK-LABEL: [[END]]:
// CHECK-NOT: phi
// Nothing left to do here.
}
+// Catch the end of the IR. This prevents the CHECK-NOT above from matching a
+// spurious "phi" in file paths printed later.
+// CHECK-LABEL: attributes