[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(&copyRegion.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