[clang] [clang][CodeGen][OpenCL] Fix `alloca` handling (PR #113930)
Matt Arsenault via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 4 21:34:45 PST 2025
================
@@ -103,11 +103,15 @@ RawAddress CodeGenFunction::CreateTempAlloca(llvm::Type *Ty, CharUnits Align,
if (AllocaAddr)
*AllocaAddr = Alloca;
llvm::Value *V = Alloca.getPointer();
+ assert((!getLangOpts().OpenCL ||
+ CGM.getTarget().getTargetAddressSpace(getASTAllocaAddressSpace()) ==
+ CGM.getTarget().getTargetAddressSpace(LangAS::opencl_private)) &&
+ "For OpenCL allocas must allocate in the private address space!");
// Alloca always returns a pointer in alloca address space, which may
// be different from the type defined by the language. For example,
// in C++ the auto variables are in the default address space. Therefore
// cast alloca to the default address space when necessary.
- if (getASTAllocaAddressSpace() != LangAS::Default) {
+ if (!getLangOpts().OpenCL && getASTAllocaAddressSpace() != LangAS::Default) {
----------------
arsenm wrote:
Ok , this is the version with the cast. I think the naming / default should be inverted, but that's an issue for another day.
There still shouldn't be modality here, and at least one other context is using the wrong version
https://github.com/llvm/llvm-project/pull/113930
More information about the cfe-commits
mailing list