diff options
| author | Nick Sarnie <nick.sarnie@intel.com> | 2025-09-03 23:35:33 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-03 14:35:33 +0000 |
| commit | e6c63d920dec3e8874ac1dc3c3f19fb822f0ab06 (patch) | |
| tree | cb04206cd6295ddb4cf7d3904336e0cbb43478c3 /llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | |
| parent | 0f032f1925389394802a86318ebc51b5e83f3b97 (diff) | |
[OMPIRBuilder] Use target global AS for SrcLocStr (#156520)
We should set the correct target-specific AS for the SrcLocStr global
created in OMPIRBuilder.
We also may have to insert a constexpr addrspacecast because the struct
field type may be different than the value used to initialize it.
I actually want the cast to be from AS 1 to AS 4, but getting the type
to be AS4 relies on a PR currently in-review, so leave the cast target
to AS 0 for now.
---------
Signed-off-by: Sarnie, Nick <nick.sarnie@intel.com>
Diffstat (limited to 'llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp')
| -rw-r--r-- | llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp index 03ea58318d4a..3d5e487c8990 100644 --- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp @@ -915,6 +915,13 @@ Constant *OpenMPIRBuilder::getOrCreateIdent(Constant *SrcLocStr, ConstantInt::get(Int32, uint32_t(LocFlags)), ConstantInt::get(Int32, Reserve2Flags), ConstantInt::get(Int32, SrcLocStrSize), SrcLocStr}; + + size_t SrcLocStrArgIdx = 4; + if (OpenMPIRBuilder::Ident->getElementType(SrcLocStrArgIdx) + ->getPointerAddressSpace() != + IdentData[SrcLocStrArgIdx]->getType()->getPointerAddressSpace()) + IdentData[SrcLocStrArgIdx] = ConstantExpr::getAddrSpaceCast( + SrcLocStr, OpenMPIRBuilder::Ident->getElementType(SrcLocStrArgIdx)); Constant *Initializer = ConstantStruct::get(OpenMPIRBuilder::Ident, IdentData); @@ -955,8 +962,9 @@ Constant *OpenMPIRBuilder::getOrCreateSrcLocStr(StringRef LocStr, GV.getInitializer() == Initializer) return SrcLocStr = ConstantExpr::getPointerCast(&GV, Int8Ptr); - SrcLocStr = Builder.CreateGlobalString(LocStr, /* Name */ "", - /* AddressSpace */ 0, &M); + SrcLocStr = Builder.CreateGlobalString( + LocStr, /*Name=*/"", M.getDataLayout().getDefaultGlobalsAddressSpace(), + &M); } return SrcLocStr; } |
