1
- // RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=51 -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -o - | FileCheck %s
1
+ // RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=51 -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -o - | FileCheck %s --check-prefixes=ALL,NORMAL
2
2
// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s
3
- // RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s
3
+ // RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefixes=ALL,NORMAL
4
4
// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp -fopenmp-version=51 -fexceptions -fcxx-exceptions -debug-info-kind=line-tables-only -x c++ -emit-llvm %s -o - | FileCheck %s --check-prefix=TERM_DEBUG
5
+ // RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=51 -fopenmp-enable-irbuilder -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -o - | FileCheck %s --check-prefixes=ALL,IRBUILDER
6
+ // RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -fopenmp-enable-irbuilder -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s
7
+ // RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -fopenmp-enable-irbuilder -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefixes=ALL,IRBUILDER
5
8
6
9
// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=51 -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -o - | FileCheck --check-prefix SIMD-ONLY0 %s
7
10
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s
12
15
#ifndef HEADER
13
16
#define HEADER
14
17
15
- // CHECK : [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }
18
+ // ALL : [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }
16
19
17
- // CHECK : define {{.*}}void [[FOO:@.+]]()
20
+ // ALL : define {{.*}}void [[FOO:@.+]]()
18
21
19
22
void foo () { extern void mayThrow (); mayThrow (); }
20
23
21
- // CHECK -LABEL: @main
24
+ // ALL -LABEL: @main
22
25
// TERM_DEBUG-LABEL: @main
23
26
int main () {
24
- // CHECK : [[A_ADDR:%.+]] = alloca i8
27
+ // ALL : [[A_ADDR:%.+]] = alloca i8
25
28
char a;
26
29
27
- // CHECK : [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num([[IDENT_T_TY]]* [[DEFAULT_LOC:@.+]])
28
- // CHECK : [[RES:%.+]] = call {{.*}}i32 @__kmpc_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]], i32 0)
29
- // CHECK -NEXT: [[IS_MASKED:%.+]] = icmp ne i32 [[RES]], 0
30
- // CHECK -NEXT: br i1 [[IS_MASKED]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]]
31
- // CHECK : [[THEN]]
32
- // CHECK -NEXT: store i8 2, i8* [[A_ADDR]]
33
- // CHECK -NEXT: call {{.*}}void @__kmpc_end_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]])
34
- // CHECK -NEXT: br label {{%?}}[[EXIT]]
35
- // CHECK : [[EXIT]]
30
+ // ALL : [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num([[IDENT_T_TY]]* [[DEFAULT_LOC:@.+]])
31
+ // ALL : [[RES:%.+]] = call {{.*}}i32 @__kmpc_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]], i32 0)
32
+ // ALL -NEXT: [[IS_MASKED:%.+]] = icmp ne i32 [[RES]], 0
33
+ // ALL -NEXT: br i1 [[IS_MASKED]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]]
34
+ // ALL : [[THEN]]
35
+ // ALL -NEXT: store i8 2, i8* [[A_ADDR]]
36
+ // ALL -NEXT: call {{.*}}void @__kmpc_end_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]])
37
+ // ALL -NEXT: br label {{%?}}[[EXIT]]
38
+ // ALL : [[EXIT]]
36
39
#pragma omp masked
37
40
a = 2 ;
38
- // CHECK: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num([[IDENT_T_TY]]* [[DEFAULT_LOC:@.+]])
39
- // CHECK: [[RES:%.+]] = call {{.*}}i32 @__kmpc_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]], i32 2)
40
- // CHECK-NEXT: [[IS_MASKED:%.+]] = icmp ne i32 [[RES]], 0
41
- // CHECK-NEXT: br i1 [[IS_MASKED]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]]
42
- // CHECK: [[THEN]]
43
- // CHECK-NEXT: call {{.*}}void [[FOO]]()
44
- // CHECK: call {{.*}}void @__kmpc_end_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]])
45
- // CHECK-NEXT: br label {{%?}}[[EXIT]]
46
- // CHECK: [[EXIT]]
41
+ // IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num([[IDENT_T_TY]]* [[DEFAULT_LOC:@.+]])
42
+ // ALL: [[RES:%.+]] = call {{.*}}i32 @__kmpc_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]], i32 2)
43
+ // ALL-NEXT: [[IS_MASKED:%.+]] = icmp ne i32 [[RES]], 0
44
+ // ALL-NEXT: br i1 [[IS_MASKED]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]]
45
+ // ALL: [[THEN]]
46
+ // IRBUILDER-NEXT: call {{.*}}void [[FOO]]()
47
+ // NORMAL-NEXT: invoke {{.*}}void [[FOO]]()
48
+ // ALL: call {{.*}}void @__kmpc_end_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]])
49
+ // ALL-NEXT: br label {{%?}}[[EXIT]]
50
+ // ALL: [[EXIT]]
47
51
#pragma omp masked filter(2)
48
52
foo ();
49
- // CHECK: store i32 9, i32* [[X:.+]],
50
- // CHECK: [[X_VAL:%.+]] = load i32, i32* [[X]]
51
- // CHECK: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num([[IDENT_T_TY]]* [[DEFAULT_LOC:@.+]])
52
- // CHECK: [[RES:%.+]] = call {{.*}}i32 @__kmpc_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]], i32 [[X_VAL]])
53
- // CHECK-NEXT: [[IS_MASKED:%.+]] = icmp ne i32 [[RES]], 0
54
- // CHECK-NEXT: br i1 [[IS_MASKED]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]]
55
- // CHECK: [[THEN]]
56
- // CHECK-NEXT: call {{.*}}void [[FOO]]()
57
- // CHECK: call {{.*}}void @__kmpc_end_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]])
58
- // CHECK-NEXT: br label {{%?}}[[EXIT]]
59
- // CHECK: [[EXIT]]
53
+ // ALL: store i32 9, i32* [[X:.+]],
54
+ // ALL: [[X_VAL:%.+]] = load i32, i32* [[X]]
55
+ // IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num([[IDENT_T_TY]]* [[DEFAULT_LOC:@.+]])
56
+ // ALL: [[RES:%.+]] = call {{.*}}i32 @__kmpc_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]], i32 [[X_VAL]])
57
+ // ALL-NEXT: [[IS_MASKED:%.+]] = icmp ne i32 [[RES]], 0
58
+ // ALL-NEXT: br i1 [[IS_MASKED]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]]
59
+ // ALL: [[THEN]]
60
+ // IRBUILDER-NEXT: call {{.*}}void [[FOO]]()
61
+ // NORMAL-NEXT: invoke {{.*}}void [[FOO]]()
62
+ // ALL: call {{.*}}void @__kmpc_end_masked([[IDENT_T_TY]]* [[DEFAULT_LOC]], i32 [[GTID]])
63
+ // ALL-NEXT: br label {{%?}}[[EXIT]]
64
+ // ALL: [[EXIT]]
60
65
int x = 9 ;
61
66
#pragma omp masked filter(x)
62
67
foo ();
63
- // CHECK -NOT: call i32 @__kmpc_masked
64
- // CHECK -NOT: call void @__kmpc_end_masked
68
+ // ALL -NOT: call i32 @__kmpc_masked
69
+ // ALL -NOT: call void @__kmpc_end_masked
65
70
return a;
66
71
}
67
72
68
- // CHECK -LABEL: lambda_masked
73
+ // ALL -LABEL: lambda_masked
69
74
// TERM_DEBUG-LABEL: lambda_masked
70
75
void lambda_masked (int a, int b) {
71
76
auto l = [=]() {
72
77
#pragma omp masked
73
78
{
74
- // CHECK : call i32 @__kmpc_masked(
79
+ // ALL : call i32 @__kmpc_masked(
75
80
int c = a + b;
76
81
}
77
82
};
@@ -82,7 +87,7 @@ void lambda_masked(int a, int b) {
82
87
#pragma omp parallel
83
88
#pragma omp masked filter(1)
84
89
{
85
- // CHECK : call i32 @__kmpc_masked(
90
+ // ALL : call i32 @__kmpc_masked(
86
91
int c = a + b;
87
92
}
88
93
};
@@ -94,20 +99,20 @@ void lambda_masked(int a, int b) {
94
99
#pragma omp parallel
95
100
#pragma omp masked filter(yy)
96
101
{
97
- // CHECK : call i32 @__kmpc_masked(
102
+ // ALL : call i32 @__kmpc_masked(
98
103
int c = a + b;
99
104
}
100
105
};
101
106
102
107
l2 (y);
103
108
}
104
109
105
- // CHECK -LABEL: parallel_masked
110
+ // ALL -LABEL: parallel_masked
106
111
// TERM_DEBUG-LABEL: parallel_masked
107
112
void parallel_masked () {
108
113
#pragma omp parallel
109
114
#pragma omp masked filter(1)
110
- // TERM_DEBUG: __kmpc_global_thread_num
115
+ // TERM_DEBUG-NOT : __kmpc_global_thread_num
111
116
// TERM_DEBUG: call i32 @__kmpc_masked({{.+}}), !dbg [[DBG_LOC_START:![0-9]+]]
112
117
// TERM_DEBUG: invoke void {{.*}}foo{{.*}}()
113
118
// TERM_DEBUG: unwind label %[[TERM_LPAD:.+]],
@@ -121,7 +126,7 @@ void parallel_masked() {
121
126
int x;
122
127
#pragma omp parallel
123
128
#pragma omp masked filter(x)
124
- // TERM_DEBUG: __kmpc_global_thread_num
129
+ // TERM_DEBUG-NOT : __kmpc_global_thread_num
125
130
// TERM_DEBUG: call i32 @__kmpc_masked({{.+}}), !dbg [[DBG_LOC_START:![0-9]+]]
126
131
// TERM_DEBUG: invoke void {{.*}}foo{{.*}}()
127
132
// TERM_DEBUG: unwind label %[[TERM_LPAD:.+]],
0 commit comments