[clang] b936f2c - [OpenACC] Call 'cleanup' on lexical scopes before yield
via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 15 13:59:30 PDT 2025
Author: erichkeane
Date: 2025-10-15T13:59:25-07:00
New Revision: b936f2ceeba3e0b17858660a828f36e3415f0288
URL: https://github.com/llvm/llvm-project/commit/b936f2ceeba3e0b17858660a828f36e3415f0288
DIFF: https://github.com/llvm/llvm-project/commit/b936f2ceeba3e0b17858660a828f36e3415f0288.diff
LOG: [OpenACC] Call 'cleanup' on lexical scopes before yield
When creating a 'yield', we have to make sure that the lexical scope we
created gets cleaned up. This isn't really testable until a followup
patch, but I got this wrong in quite a few places.
Added:
Modified:
clang/lib/CIR/CodeGen/CIRGenOpenACCRecipe.cpp
Removed:
################################################################################
diff --git a/clang/lib/CIR/CodeGen/CIRGenOpenACCRecipe.cpp b/clang/lib/CIR/CodeGen/CIRGenOpenACCRecipe.cpp
index ce14aa8aaad40..f638d391d55cd 100644
--- a/clang/lib/CIR/CodeGen/CIRGenOpenACCRecipe.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenOpenACCRecipe.cpp
@@ -398,6 +398,7 @@ void OpenACCRecipeBuilderBase::createRecipeDestroySection(
emitDestroy(block->getArgument(1), elementTy);
}
+ ls.forceCleanup();
mlir::acc::YieldOp::create(builder, locEnd);
}
void OpenACCRecipeBuilderBase::makeBoundsInit(
@@ -480,6 +481,7 @@ void OpenACCRecipeBuilderBase::createInitRecipe(
/*isInitSection=*/true);
}
+ ls.forceCleanup();
mlir::acc::YieldOp::create(builder, locEnd);
}
@@ -518,6 +520,7 @@ void OpenACCRecipeBuilderBase::createFirstprivateRecipeCopy(
cgf.emitAutoVarInit(tempDeclEmission);
builder.setInsertionPointToEnd(©Region.back());
+ ls.forceCleanup();
mlir::acc::YieldOp::create(builder, locEnd);
}
@@ -662,6 +665,7 @@ void OpenACCRecipeBuilderBase::createReductionRecipeCombiner(
}
builder.setInsertionPointToEnd(&recipe.getCombinerRegion().back());
+ ls.forceCleanup();
mlir::acc::YieldOp::create(builder, locEnd, block->getArgument(0));
}
More information about the cfe-commits
mailing list