Skip to content

Commit b44fdfc

Browse files
committedJul 14, 2015
[OPENMP] Drop type qualifiers from private variables.
If the variable is marked as private in OpenMP construct, the reference to this variable should not keep type qualifiers for the original variable. Private copy is not volatile or constant, so we can use unqualified type for private copy. llvm-svn: 242133
1 parent d9c0bcf commit b44fdfc

17 files changed

+66
-63
lines changed
 

‎clang/include/clang/Sema/Sema.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -7697,13 +7697,13 @@ class Sema {
76977697
void DestroyDataSharingAttributesStack();
76987698
ExprResult VerifyPositiveIntegerConstantInClause(Expr *Op,
76997699
OpenMPClauseKind CKind);
7700+
public:
7701+
/// \brief Check if the specified variable is used in a private clause in
77007702
/// \brief Checks if the specified variable is used in one of the private
77017703
/// clauses in OpenMP constructs.
77027704
bool IsOpenMPCapturedVar(VarDecl *VD);
77037705

7704-
public:
7705-
/// \brief Check if the specified variable is used in one of the private
7706-
/// clauses in OpenMP constructs.
7706+
/// OpenMP constructs.
77077707
/// \param Level Relative level of nested OpenMP construct for that the check
77087708
/// is performed.
77097709
bool isOpenMPPrivateVar(VarDecl *VD, unsigned Level);

‎clang/lib/Sema/SemaExpr.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -12533,6 +12533,8 @@ static bool captureInCapturedRegion(CapturedRegionScopeInfo *RSI,
1253312533
// By default, capture variables by reference.
1253412534
bool ByRef = true;
1253512535
// Using an LValue reference type is consistent with Lambdas (see below).
12536+
if (S.getLangOpts().OpenMP && S.IsOpenMPCapturedVar(Var))
12537+
DeclRefType = DeclRefType.getUnqualifiedType();
1253612538
CaptureType = S.Context.getLValueReferenceType(DeclRefType);
1253712539
Expr *CopyExpr = nullptr;
1253812540
if (BuildAndDiagnose) {
@@ -12766,6 +12768,7 @@ bool Sema::tryCaptureVariable(
1276612768
if (RSI->CapRegionKind == CR_OpenMP) {
1276712769
if (isOpenMPPrivateVar(Var, OpenMPLevel)) {
1276812770
Nested = true;
12771+
DeclRefType = DeclRefType.getUnqualifiedType();
1276912772
CaptureType = Context.getLValueReferenceType(DeclRefType);
1277012773
break;
1277112774
}

‎clang/test/OpenMP/for_firstprivate_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ int main() {
8686
// LAMBDA: call void @__kmpc_barrier(
8787
g = 1;
8888
// LAMBDA: call void @__kmpc_for_static_init_4(
89-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
89+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
9090
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
9191
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
9292
// LAMBDA: call void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -99,7 +99,7 @@ int main() {
9999
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
100100
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
101101
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
102-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
102+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
103103
}();
104104
}
105105
}();
@@ -127,7 +127,7 @@ int main() {
127127
// BLOCKS: call void @__kmpc_barrier(
128128
g = 1;
129129
// BLOCKS: call void @__kmpc_for_static_init_4(
130-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
130+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
131131
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
132132
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
133133
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -138,7 +138,7 @@ int main() {
138138
// BLOCKS: define {{.+}} void {{@.+}}(i8*
139139
g = 2;
140140
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
141-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
141+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
142142
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
143143
// BLOCKS: ret
144144
}();

‎clang/test/OpenMP/for_lastprivate_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ int main() {
7575
// LAMBDA: [[GTID_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** %{{.+}}
7676
// LAMBDA: [[GTID:%.+]] = load i{{[0-9]+}}, i{{[0-9]+}}* [[GTID_REF]]
7777
// LAMBDA: call {{.+}} @__kmpc_for_static_init_4(%{{.+}}* @{{.+}}, i32 [[GTID]], i32 34, i32* [[IS_LAST_ADDR:%.+]], i32* %{{.+}}, i32* %{{.+}}, i32* %{{.+}}, i32 1, i32 1)
78-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
78+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
7979
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
8080
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
8181
// LAMBDA: call void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -101,7 +101,7 @@ int main() {
101101
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
102102
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
103103
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
104-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
104+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
105105
}();
106106
}
107107
}();
@@ -127,7 +127,7 @@ int main() {
127127
// BLOCKS: [[GTID_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** %{{.+}}
128128
// BLOCKS: [[GTID:%.+]] = load i{{[0-9]+}}, i{{[0-9]+}}* [[GTID_REF]]
129129
// BLOCKS: call {{.+}} @__kmpc_for_static_init_4(%{{.+}}* @{{.+}}, i32 [[GTID]], i32 34, i32* [[IS_LAST_ADDR:%.+]], i32* %{{.+}}, i32* %{{.+}}, i32* %{{.+}}, i32 1, i32 1)
130-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
130+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
131131
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
132132
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
133133
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -152,7 +152,7 @@ int main() {
152152
// BLOCKS: define {{.+}} void {{@.+}}(i8*
153153
g = 2;
154154
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
155-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
155+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
156156
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
157157
// BLOCKS: ret
158158
}();

‎clang/test/OpenMP/for_private_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ int main() {
5656
// LAMBDA: store %{{.+}}* [[ARG]], %{{.+}}** [[ARG_REF:%.+]],
5757
g = 1;
5858
// LAMBDA: call {{.*}}void @__kmpc_for_static_init_4(
59-
// LAMBDA: store volatile double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
59+
// LAMBDA: store double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
6060
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
6161
// LAMBDA: store double* [[G_PRIVATE_ADDR]], double** [[G_PRIVATE_ADDR_REF]]
6262
// LAMBDA: call{{.*}} void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -68,7 +68,7 @@ int main() {
6868
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
6969
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
7070
// LAMBDA: [[G_REF:%.+]] = load double*, double** [[G_PTR_REF]]
71-
// LAMBDA: store volatile double 2.0{{.+}}, double* [[G_REF]]
71+
// LAMBDA: store double 2.0{{.+}}, double* [[G_REF]]
7272
}();
7373
}
7474
}();
@@ -88,7 +88,7 @@ int main() {
8888
// BLOCKS: store %{{.+}}* [[ARG]], %{{.+}}** [[ARG_REF:%.+]],
8989
g = 1;
9090
// BLOCKS: call {{.*}}void @__kmpc_for_static_init_4(
91-
// BLOCKS: store volatile double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
91+
// BLOCKS: store double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
9292
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
9393
// BLOCKS: double* [[G_PRIVATE_ADDR]]
9494
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -98,7 +98,7 @@ int main() {
9898
// BLOCKS: define {{.+}} void {{@.+}}(i8*
9999
g = 2;
100100
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
101-
// BLOCKS: store volatile double 2.0{{.+}}, double*
101+
// BLOCKS: store double 2.0{{.+}}, double*
102102
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
103103
// BLOCKS: ret
104104
}();

‎clang/test/OpenMP/for_reduction_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ int main() {
7272
// LAMBDA: store double 0.0{{.+}}, double* [[G_PRIVATE_ADDR]]
7373
// LAMBDA: call void @__kmpc_for_static_init_4(
7474
g = 1;
75-
// LAMBDA: store volatile double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
75+
// LAMBDA: store double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
7676
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
7777
// LAMBDA: store double* [[G_PRIVATE_ADDR]], double** [[G_PRIVATE_ADDR_REF]]
7878
// LAMBDA: call void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -107,7 +107,7 @@ int main() {
107107
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
108108
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
109109
// LAMBDA: [[G_REF:%.+]] = load double*, double** [[G_PTR_REF]]
110-
// LAMBDA: store volatile double 2.0{{.+}}, double* [[G_REF]]
110+
// LAMBDA: store double 2.0{{.+}}, double* [[G_REF]]
111111
}();
112112
}
113113
}();
@@ -131,7 +131,7 @@ int main() {
131131
// BLOCKS: store double 0.0{{.+}}, double* [[G_PRIVATE_ADDR]]
132132
g = 1;
133133
// BLOCKS: call void @__kmpc_for_static_init_4(
134-
// BLOCKS: store volatile double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
134+
// BLOCKS: store double 1.0{{.+}}, double* [[G_PRIVATE_ADDR]],
135135
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
136136
// BLOCKS: double* [[G_PRIVATE_ADDR]]
137137
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -164,7 +164,7 @@ int main() {
164164
// BLOCKS: define {{.+}} void {{@.+}}(i8*
165165
g = 2;
166166
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
167-
// BLOCKS: store volatile double 2.0{{.+}}, double*
167+
// BLOCKS: store double 2.0{{.+}}, double*
168168
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
169169
// BLOCKS: ret
170170
}();

‎clang/test/OpenMP/parallel_firstprivate_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ int main() {
7575
// LAMBDA: store i{{[0-9]+}} [[G_VAL]], i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
7676
// LAMBDA: call {{.*}}i32 @__kmpc_cancel_barrier(
7777
g = 1;
78-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
78+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
7979
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
8080
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
8181
// LAMBDA: call{{.*}} void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -86,7 +86,7 @@ int main() {
8686
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
8787
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
8888
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
89-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
89+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
9090
}();
9191
}
9292
}();
@@ -113,7 +113,7 @@ int main() {
113113
// BLOCKS: store i{{[0-9]+}} [[G_VAL]], i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
114114
// BLOCKS: call {{.*}}i32 @__kmpc_cancel_barrier(
115115
g = 1;
116-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
116+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
117117
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
118118
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
119119
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -122,7 +122,7 @@ int main() {
122122
// BLOCKS: define {{.+}} void {{@.+}}(i8*
123123
g = 2;
124124
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
125-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
125+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
126126
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
127127
// BLOCKS: ret
128128
}();

‎clang/test/OpenMP/parallel_private_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ int main() {
5353
// LAMBDA: [[G_PRIVATE_ADDR:%.+]] = alloca i{{[0-9]+}},
5454
// LAMBDA: store %{{.+}}* [[ARG]], %{{.+}}** [[ARG_REF:%.+]],
5555
g = 1;
56-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
56+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
5757
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
5858
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
5959
// LAMBDA: call{{.*}} void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -64,7 +64,7 @@ int main() {
6464
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
6565
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
6666
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
67-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
67+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
6868
}();
6969
}
7070
}();
@@ -84,7 +84,7 @@ int main() {
8484
// BLOCKS: [[G_PRIVATE_ADDR:%.+]] = alloca i{{[0-9]+}},
8585
// BLOCKS: store %{{.+}}* [[ARG]], %{{.+}}** [[ARG_REF:%.+]],
8686
g = 1;
87-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
87+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
8888
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
8989
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
9090
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -93,7 +93,7 @@ int main() {
9393
// BLOCKS: define {{.+}} void {{@.+}}(i8*
9494
g = 2;
9595
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
96-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
96+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
9797
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
9898
// BLOCKS: ret
9999
}();

‎clang/test/OpenMP/parallel_reduction_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ int main() {
6969
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_REF_ADDR]]
7070
// LAMBDA: store i{{[0-9]+}} 0, i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
7171
g = 1;
72-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
72+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
7373
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
7474
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
7575
// LAMBDA: call void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -101,7 +101,7 @@ int main() {
101101
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
102102
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
103103
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
104-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
104+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
105105
}();
106106
}
107107
}();
@@ -130,7 +130,7 @@ int main() {
130130
// BLOCKS: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_REF_ADDR]]
131131
// BLOCKS: store i{{[0-9]+}} 0, i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
132132
g = 1;
133-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
133+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
134134
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
135135
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
136136
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -160,7 +160,7 @@ int main() {
160160
// BLOCKS: define {{.+}} void {{@.+}}(i8*
161161
g = 2;
162162
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
163-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
163+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
164164
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
165165
// BLOCKS: ret
166166
}();

‎clang/test/OpenMP/sections_firstprivate_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ int main() {
8888
// LAMBDA: call void @__kmpc_barrier(
8989
g = 1;
9090
// LAMBDA: call void @__kmpc_for_static_init_4(
91-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
91+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
9292
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
9393
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
9494
// LAMBDA: call void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -102,7 +102,7 @@ int main() {
102102
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
103103
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
104104
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
105-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
105+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
106106
}();
107107
}
108108
}();
@@ -130,7 +130,7 @@ int main() {
130130
// BLOCKS: call void @__kmpc_barrier(
131131
g = 1;
132132
// BLOCKS: call void @__kmpc_for_static_init_4(
133-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
133+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
134134
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
135135
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
136136
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -142,7 +142,7 @@ int main() {
142142
// BLOCKS: define {{.+}} void {{@.+}}(i8*
143143
g = 2;
144144
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
145-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
145+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
146146
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
147147
// BLOCKS: ret
148148
}();

‎clang/test/OpenMP/sections_lastprivate_codegen.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ int main() {
7474
// LAMBDA: [[GTID_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** %{{.+}}
7575
// LAMBDA: [[GTID:%.+]] = load i{{[0-9]+}}, i{{[0-9]+}}* [[GTID_REF]]
7676
// LAMBDA: call {{.+}} @__kmpc_for_static_init_4(%{{.+}}* @{{.+}}, i32 [[GTID]], i32 34, i32* [[IS_LAST_ADDR:%.+]], i32* %{{.+}}, i32* %{{.+}}, i32* %{{.+}}, i32 1, i32 1)
77-
// LAMBDA: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
77+
// LAMBDA: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
7878
// LAMBDA: [[G_PRIVATE_ADDR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG:%.+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
7979
// LAMBDA: store i{{[0-9]+}}* [[G_PRIVATE_ADDR]], i{{[0-9]+}}** [[G_PRIVATE_ADDR_REF]]
8080
// LAMBDA: call void [[INNER_LAMBDA:@.+]](%{{.+}}* [[ARG]])
@@ -101,7 +101,7 @@ int main() {
101101
// LAMBDA: [[ARG_PTR:%.+]] = load %{{.+}}*, %{{.+}}** [[ARG_PTR_REF]]
102102
// LAMBDA: [[G_PTR_REF:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}}* [[ARG_PTR]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
103103
// LAMBDA: [[G_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[G_PTR_REF]]
104-
// LAMBDA: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
104+
// LAMBDA: store i{{[0-9]+}} 2, i{{[0-9]+}}* [[G_REF]]
105105
}();
106106
}
107107
}();
@@ -127,7 +127,7 @@ int main() {
127127
// BLOCKS: [[GTID_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** %{{.+}}
128128
// BLOCKS: [[GTID:%.+]] = load i{{[0-9]+}}, i{{[0-9]+}}* [[GTID_REF]]
129129
// BLOCKS: call {{.+}} @__kmpc_for_static_init_4(%{{.+}}* @{{.+}}, i32 [[GTID]], i32 34, i32* [[IS_LAST_ADDR:%.+]], i32* %{{.+}}, i32* %{{.+}}, i32* %{{.+}}, i32 1, i32 1)
130-
// BLOCKS: store volatile i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
130+
// BLOCKS: store i{{[0-9]+}} 1, i{{[0-9]+}}* [[G_PRIVATE_ADDR]],
131131
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
132132
// BLOCKS: i{{[0-9]+}}* [[G_PRIVATE_ADDR]]
133133
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
@@ -152,7 +152,7 @@ int main() {
152152
// BLOCKS: define {{.+}} void {{@.+}}(i8*
153153
g = 2;
154154
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
155-
// BLOCKS: store volatile i{{[0-9]+}} 2, i{{[0-9]+}}*
155+
// BLOCKS: store i{{[0-9]+}} 2, i{{[0-9]+}}*
156156
// BLOCKS-NOT: [[G]]{{[[^:word:]]}}
157157
// BLOCKS: ret
158158
}();

0 commit comments

Comments
 (0)