Skip to content

Commit

Permalink
[OpenMP] Change __kmpc_free_shared to include the paired allocation…
Browse files Browse the repository at this point in the history
… size

This patch changes `__kmpc_free_shared` to take an additional argument
corresponding to the associated allocation's size. This makes it easier to
implement the allocator in the runtime.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D106496
  • Loading branch information
jhuber6 authored and jhuber-ornl committed Jul 22, 2021
1 parent 402b681 commit 754eb1c
Show file tree
Hide file tree
Showing 23 changed files with 100 additions and 90 deletions.
13 changes: 9 additions & 4 deletions clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1437,7 +1437,9 @@ void CGOpenMPRuntimeGPU::emitGenericVarsProlog(CodeGenFunction &CGF,
CGM.getModule(), OMPRTL___kmpc_alloc_shared),
AllocArgs, VD->getName());

I->getSecond().EscapedVariableLengthDeclsAddrs.emplace_back(VoidPtr);
I->getSecond().EscapedVariableLengthDeclsAddrs.emplace_back(
std::pair<llvm::Value *, llvm::Value *>(
{VoidPtr, CGF.getTypeSize(VD->getType())}));
LValue Base = CGF.MakeAddrLValue(VoidPtr, VD->getType(),
CGM.getContext().getDeclAlign(VD),
AlignmentSource::Decl);
Expand All @@ -1456,19 +1458,22 @@ void CGOpenMPRuntimeGPU::emitGenericVarsEpilog(CodeGenFunction &CGF,
const auto I = FunctionGlobalizedDecls.find(CGF.CurFn);
if (I != FunctionGlobalizedDecls.end()) {
// Deallocate the memory for each globalized VLA object
for (llvm::Value *Addr :
for (auto AddrSizePair :
llvm::reverse(I->getSecond().EscapedVariableLengthDeclsAddrs)) {
CGF.EmitRuntimeCall(OMPBuilder.getOrCreateRuntimeFunction(
CGM.getModule(), OMPRTL___kmpc_free_shared),
Addr);
{AddrSizePair.first, AddrSizePair.second});
}
// Deallocate the memory for each globalized value
for (auto &Rec : llvm::reverse(I->getSecond().LocalVarData)) {
const auto *VD = cast<VarDecl>(Rec.first);
I->getSecond().MappedParams->restore(CGF);

llvm::Value *FreeArgs[] = {Rec.second.GlobalizedVal,
CGF.getTypeSize(VD->getType())};
CGF.EmitRuntimeCall(OMPBuilder.getOrCreateRuntimeFunction(
CGM.getModule(), OMPRTL___kmpc_free_shared),
{Rec.second.GlobalizedVal});
FreeArgs);
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion clang/lib/CodeGen/CGOpenMPRuntimeGPU.h
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,8 @@ class CGOpenMPRuntimeGPU : public CGOpenMPRuntime {
llvm::Optional<DeclToAddrMapTy> SecondaryLocalVarData = llvm::None;
EscapedParamsTy EscapedParameters;
llvm::SmallVector<const ValueDecl*, 4> EscapedVariableLengthDecls;
llvm::SmallVector<llvm::Value *, 4> EscapedVariableLengthDeclsAddrs;
llvm::SmallVector<std::pair<llvm::Value *, llvm::Value *>, 4>
EscapedVariableLengthDeclsAddrs;
llvm::Value *IsInSPMDModeFlag = nullptr;
std::unique_ptr<CodeGenFunction::OMPMapVars> MappedParams;
};
Expand Down
2 changes: 1 addition & 1 deletion clang/test/OpenMP/declare_target_codegen_globalization.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,6 @@ int maini1() {
// CHECK1-NEXT: [[A:%.*]] = call i8* @__kmpc_alloc_shared(i64 4)
// CHECK1-NEXT: [[A_ON_STACK:%.*]] = bitcast i8* [[A]] to i32*
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3fooRi(i32* nonnull align 4 dereferenceable(4) [[A_ON_STACK]]) #[[ATTR3]]
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[A]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[A]], i64 4)
// CHECK1-NEXT: ret i32 [[CALL]]
//
4 changes: 2 additions & 2 deletions clang/test/OpenMP/nvptx_data_sharing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -418,8 +418,8 @@ void test_ds(){
// CHECK-NEXT: store i8* [[TMP8]], i8** [[TMP7]], align 8
// CHECK-NEXT: [[TMP9:%.*]] = bitcast [2 x i8*]* [[CAPTURED_VARS_ADDRS1]] to i8**
// CHECK-NEXT: call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB1]], i32 [[TMP1]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*, i32*, i32*)* @__omp_outlined__1 to i8*), i8* bitcast (void (i16, i32)* @__omp_outlined__1_wrapper to i8*), i8** [[TMP9]], i64 2)
// CHECK-NEXT: call void @__kmpc_free_shared(i8* [[B]])
// CHECK-NEXT: call void @__kmpc_free_shared(i8* [[A]])
// CHECK-NEXT: call void @__kmpc_free_shared(i8* [[B]], i64 4)
// CHECK-NEXT: call void @__kmpc_free_shared(i8* [[A]], i64 4)
// CHECK-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
// CHECK-NEXT: ret void
// CHECK: worker.exit:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3174,7 +3174,7 @@ int main(int argc, char **argv) {
// CHECK4: .omp.lastprivate.done:
// CHECK4-NEXT: br label [[OMP_PRECOND_END]]
// CHECK4: omp.precond.end:
// CHECK4-NEXT: call void @__kmpc_free_shared(i8* [[C1]])
// CHECK4-NEXT: call void @__kmpc_free_shared(i8* [[C1]], i64 40)
// CHECK4-NEXT: ret void
//
//
Expand Down Expand Up @@ -3503,7 +3503,7 @@ int main(int argc, char **argv) {
// CHECK5: .omp.lastprivate.done:
// CHECK5-NEXT: br label [[OMP_PRECOND_END]]
// CHECK5: omp.precond.end:
// CHECK5-NEXT: call void @__kmpc_free_shared(i8* [[C1]])
// CHECK5-NEXT: call void @__kmpc_free_shared(i8* [[C1]], i32 40)
// CHECK5-NEXT: ret void
//
//
Expand Down Expand Up @@ -3826,7 +3826,7 @@ int main(int argc, char **argv) {
// CHECK6: .omp.lastprivate.done:
// CHECK6-NEXT: br label [[OMP_PRECOND_END]]
// CHECK6: omp.precond.end:
// CHECK6-NEXT: call void @__kmpc_free_shared(i8* [[C1]])
// CHECK6-NEXT: call void @__kmpc_free_shared(i8* [[C1]], i32 40)
// CHECK6-NEXT: ret void
//
//
Expand Down
4 changes: 2 additions & 2 deletions clang/test/OpenMP/nvptx_parallel_codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1645,7 +1645,7 @@ int bar(int n){
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[A_ON_STACK]], align 4
// CHECK1-NEXT: [[INC:%.*]] = add nsw i32 [[TMP6]], 1
// CHECK1-NEXT: store i32 [[INC]], i32* [[A_ON_STACK]], align 4
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[A1]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[A1]], i64 4)
// CHECK1-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
// CHECK1-NEXT: ret void
// CHECK1: worker.exit:
Expand Down Expand Up @@ -1917,7 +1917,7 @@ int bar(int n){
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[A_ON_STACK]], align 4
// CHECK2-NEXT: [[INC:%.*]] = add nsw i32 [[TMP6]], 1
// CHECK2-NEXT: store i32 [[INC]], i32* [[A_ON_STACK]], align 4
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[A1]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[A1]], i32 4)
// CHECK2-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
// CHECK2-NEXT: ret void
// CHECK2: worker.exit:
Expand Down
2 changes: 1 addition & 1 deletion clang/test/OpenMP/nvptx_parallel_for_codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,7 @@ int bar(int n){
// CHECK-NEXT: [[TMP9:%.*]] = load i32, i32* [[ARRAYIDX]], align 4
// CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP9]], 1
// CHECK-NEXT: store i32 [[ADD]], i32* [[ARRAYIDX]], align 4
// CHECK-NEXT: call void @__kmpc_free_shared(i8* [[D]])
// CHECK-NEXT: call void @__kmpc_free_shared(i8* [[D]], i64 4)
// CHECK-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
// CHECK-NEXT: ret void
// CHECK: worker.exit:
Expand Down
6 changes: 3 additions & 3 deletions clang/test/OpenMP/nvptx_target_codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ void unreachable_call() {
// CHECK1-NEXT: [[TMP6:%.*]] = bitcast [2 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
// CHECK1-NEXT: call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB3]], i32 [[TMP0]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*, i32*, double*)* @__omp_outlined__1 to i8*), i8* bitcast (void (i16, i32)* @__omp_outlined__1_wrapper to i8*), i8** [[TMP6]], i64 2)
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[F_ON_STACK]], align 4
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[F]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[F]], i64 4)
// CHECK1-NEXT: ret i32 [[TMP7]]
//
//
Expand Down Expand Up @@ -816,7 +816,7 @@ void unreachable_call() {
// CHECK2-NEXT: [[TMP6:%.*]] = bitcast [2 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
// CHECK2-NEXT: call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB3]], i32 [[TMP0]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*, i32*, double*)* @__omp_outlined__1 to i8*), i8* bitcast (void (i16, i32)* @__omp_outlined__1_wrapper to i8*), i8** [[TMP6]], i32 2)
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[F_ON_STACK]], align 4
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[F]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[F]], i32 4)
// CHECK2-NEXT: ret i32 [[TMP7]]
//
//
Expand Down Expand Up @@ -1199,7 +1199,7 @@ void unreachable_call() {
// CHECK3-NEXT: [[TMP6:%.*]] = bitcast [2 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
// CHECK3-NEXT: call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB3]], i32 [[TMP0]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*, i32*, double*)* @__omp_outlined__1 to i8*), i8* bitcast (void (i16, i32)* @__omp_outlined__1_wrapper to i8*), i8** [[TMP6]], i32 2)
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[F_ON_STACK]], align 4
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[F]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[F]], i32 4)
// CHECK3-NEXT: ret i32 [[TMP7]]
//
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,9 @@ void test() {
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP32]]) #[[ATTR1]]
// CHECK1-NEXT: [[TMP33:%.*]] = bitcast i32* [[DOTOMP_IV]] to i8*
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP33]]) #[[ATTR1]]
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[IEND]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]], i64 8)
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[IEND]], i64 4)
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]], i64 4)
// CHECK1-NEXT: ret void
//
//
Expand Down Expand Up @@ -740,9 +740,9 @@ void test() {
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP32]]) #[[ATTR1]]
// CHECK1-NEXT: [[TMP33:%.*]] = bitcast i32* [[DOTOMP_IV]] to i8*
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP33]]) #[[ATTR1]]
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[IEND]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]], i64 16)
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[IEND]], i64 4)
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]], i64 4)
// CHECK1-NEXT: ret void
//
//
Expand Down Expand Up @@ -1407,9 +1407,9 @@ void test() {
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP32]]) #[[ATTR1]]
// CHECK2-NEXT: [[TMP33:%.*]] = bitcast i32* [[DOTOMP_IV]] to i8*
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP33]]) #[[ATTR1]]
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[IEND]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]], i64 8)
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[IEND]], i64 4)
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]], i64 4)
// CHECK2-NEXT: ret void
//
//
Expand Down Expand Up @@ -1974,9 +1974,9 @@ void test() {
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP32]]) #[[ATTR1]]
// CHECK2-NEXT: [[TMP33:%.*]] = bitcast i32* [[DOTOMP_IV]] to i8*
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP33]]) #[[ATTR1]]
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[IEND]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]], i64 16)
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[IEND]], i64 4)
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]], i64 4)
// CHECK2-NEXT: ret void
//
//
Expand Down Expand Up @@ -2641,9 +2641,9 @@ void test() {
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP32]]) #[[ATTR1]]
// CHECK3-NEXT: [[TMP33:%.*]] = bitcast i32* [[DOTOMP_IV]] to i8*
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP33]]) #[[ATTR1]]
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[IEND]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]], i64 8)
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[IEND]], i64 4)
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]], i64 4)
// CHECK3-NEXT: ret void
//
//
Expand Down Expand Up @@ -3208,9 +3208,9 @@ void test() {
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP32]]) #[[ATTR1]]
// CHECK3-NEXT: [[TMP33:%.*]] = bitcast i32* [[DOTOMP_IV]] to i8*
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP33]]) #[[ATTR1]]
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[IEND]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[PARTIAL_SUM]], i64 16)
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[IEND]], i64 4)
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[ISTART]], i64 4)
// CHECK3-NEXT: ret void
//
//
Expand Down
6 changes: 3 additions & 3 deletions clang/test/OpenMP/nvptx_target_teams_distribute_codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ int bar(int n){
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
// CHECK1: omp.loop.exit:
// CHECK1-NEXT: call void @__kmpc_for_static_fini(%struct.ident_t* @[[GLOB2]], i32 [[TMP1]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[I]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[I]], i64 4)
// CHECK1-NEXT: ret void
//
//
Expand Down Expand Up @@ -779,7 +779,7 @@ int bar(int n){
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
// CHECK2: omp.loop.exit:
// CHECK2-NEXT: call void @__kmpc_for_static_fini(%struct.ident_t* @[[GLOB2]], i32 [[TMP1]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[I]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[I]], i32 4)
// CHECK2-NEXT: ret void
//
//
Expand Down Expand Up @@ -901,7 +901,7 @@ int bar(int n){
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
// CHECK3: omp.loop.exit:
// CHECK3-NEXT: call void @__kmpc_for_static_fini(%struct.ident_t* @[[GLOB2]], i32 [[TMP1]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[I]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[I]], i32 4)
// CHECK3-NEXT: ret void
//
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18656,7 +18656,7 @@ int bar(int n){
// CHECK1: .omp.lastprivate.done:
// CHECK1-NEXT: br label [[OMP_PRECOND_END]]
// CHECK1: omp.precond.end:
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[L2]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[L2]], i64 4)
// CHECK1-NEXT: ret void
//
//
Expand Down Expand Up @@ -20250,7 +20250,7 @@ int bar(int n){
// CHECK2: .omp.lastprivate.done:
// CHECK2-NEXT: br label [[OMP_PRECOND_END]]
// CHECK2: omp.precond.end:
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[L2]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[L2]], i64 4)
// CHECK2-NEXT: ret void
//
//
Expand Down Expand Up @@ -21829,7 +21829,7 @@ int bar(int n){
// CHECK3: .omp.lastprivate.done:
// CHECK3-NEXT: br label [[OMP_PRECOND_END]]
// CHECK3: omp.precond.end:
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[L1]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[L1]], i32 4)
// CHECK3-NEXT: ret void
//
//
Expand Down Expand Up @@ -23363,7 +23363,7 @@ int bar(int n){
// CHECK4: .omp.lastprivate.done:
// CHECK4-NEXT: br label [[OMP_PRECOND_END]]
// CHECK4: omp.precond.end:
// CHECK4-NEXT: call void @__kmpc_free_shared(i8* [[L1]])
// CHECK4-NEXT: call void @__kmpc_free_shared(i8* [[L1]], i32 4)
// CHECK4-NEXT: ret void
//
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9581,7 +9581,7 @@ int bar(int n){
// CHECK1: .omp.lastprivate.done:
// CHECK1-NEXT: br label [[OMP_PRECOND_END]]
// CHECK1: omp.precond.end:
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[L2]])
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[L2]], i64 4)
// CHECK1-NEXT: ret void
//
//
Expand Down Expand Up @@ -10655,7 +10655,7 @@ int bar(int n){
// CHECK2: .omp.lastprivate.done:
// CHECK2-NEXT: br label [[OMP_PRECOND_END]]
// CHECK2: omp.precond.end:
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[L1]])
// CHECK2-NEXT: call void @__kmpc_free_shared(i8* [[L1]], i32 4)
// CHECK2-NEXT: ret void
//
//
Expand Down Expand Up @@ -11693,7 +11693,7 @@ int bar(int n){
// CHECK3: .omp.lastprivate.done:
// CHECK3-NEXT: br label [[OMP_PRECOND_END]]
// CHECK3: omp.precond.end:
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[L1]])
// CHECK3-NEXT: call void @__kmpc_free_shared(i8* [[L1]], i32 4)
// CHECK3-NEXT: ret void
//
//
Expand Down
Loading

0 comments on commit 754eb1c

Please sign in to comment.