diff options
author | Sergio Afonso <safonsof@amd.com> | 2023-07-06 10:28:24 +0100 |
---|---|---|
committer | Sergio Afonso <safonsof@amd.com> | 2023-07-10 14:14:16 +0100 |
commit | 63ca93c7d1d1ee91281ff7ccdbd7014151319324 (patch) | |
tree | 1aedfba52cba95677451e184e8838e6ba3530360 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 0aecf7ff0d81930d3d46daf1c0552441b793d904 (diff) | |
download | llvm-63ca93c7d1d1ee91281ff7ccdbd7014151319324.zip llvm-63ca93c7d1d1ee91281ff7ccdbd7014151319324.tar.gz llvm-63ca93c7d1d1ee91281ff7ccdbd7014151319324.tar.bz2 |
[OpenMP][OMPIRBuilder] Rename IsEmbedded and IsTargetCodegen flags
This patch renames the `OpenMPIRBuilderConfig` flags to reduce confusion over
their meaning. `IsTargetCodegen` becomes `IsGPU`, whereas `IsEmbedded` becomes
`IsTargetDevice`. The `-fopenmp-is-device` compiler option is also renamed to
`-fopenmp-is-target-device` and the `omp.is_device` MLIR attribute is renamed
to `omp.is_target_device`. Getters and setters of all these renamed properties
are also updated accordingly. Many unit tests have been updated to use the new
names, but an alias for the `-fopenmp-is-device` option is created so that
external programs do not stop working after the name change.
`IsGPU` is set when the target triple is AMDGCN or NVIDIA PTX, and it is only
valid if `IsTargetDevice` is specified as well. `IsTargetDevice` is set by the
`-fopenmp-is-target-device` compiler frontend option, which is only added to
the OpenMP device invocation for offloading-enabled programs.
Differential Revision: https://reviews.llvm.org/D154591
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 304646c..13b49eb 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -470,7 +470,7 @@ void CodeGenModule::createOpenMPRuntime() { case llvm::Triple::nvptx: case llvm::Triple::nvptx64: case llvm::Triple::amdgcn: - assert(getLangOpts().OpenMPIsDevice && + assert(getLangOpts().OpenMPIsTargetDevice && "OpenMP AMDGPU/NVPTX is only prepared to deal with device code."); OpenMPRuntime.reset(new CGOpenMPRuntimeGPU(*this)); break; @@ -1089,7 +1089,7 @@ void CodeGenModule::Release() { // Indicate whether this Module was compiled with -fopenmp if (getLangOpts().OpenMP && !getLangOpts().OpenMPSimd) getModule().addModuleFlag(llvm::Module::Max, "openmp", LangOpts.OpenMP); - if (getLangOpts().OpenMPIsDevice) + if (getLangOpts().OpenMPIsTargetDevice) getModule().addModuleFlag(llvm::Module::Max, "openmp-device", LangOpts.OpenMP); @@ -4257,7 +4257,7 @@ llvm::Constant *CodeGenModule::GetOrCreateLLVMFunction( // the iFunc instead. Name Mangling will handle the rest of the changes. if (const FunctionDecl *FD = cast_or_null<FunctionDecl>(D)) { // For the device mark the function as one that should be emitted. - if (getLangOpts().OpenMPIsDevice && OpenMPRuntime && + if (getLangOpts().OpenMPIsTargetDevice && OpenMPRuntime && !OpenMPRuntime->markAsGlobalTarget(GD) && FD->isDefined() && !DontDefer && !IsForDefinition) { if (const FunctionDecl *FDDef = FD->getDefinition()) { @@ -5081,7 +5081,7 @@ void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D, // If this is OpenMP device, check if it is legal to emit this global // normally. - if (LangOpts.OpenMPIsDevice && OpenMPRuntime && + if (LangOpts.OpenMPIsTargetDevice && OpenMPRuntime && OpenMPRuntime->emitTargetGlobalVariable(D)) return; @@ -6717,7 +6717,7 @@ void CodeGenModule::EmitTopLevelDecl(Decl *D) { if (LangOpts.CUDA && LangOpts.CUDAIsDevice) break; // File-scope asm is ignored during device-side OpenMP compilation. - if (LangOpts.OpenMPIsDevice) + if (LangOpts.OpenMPIsTargetDevice) break; // File-scope asm is ignored during device-side SYCL compilation. if (LangOpts.SYCLIsDevice) @@ -7148,7 +7148,7 @@ llvm::Constant *CodeGenModule::GetAddrOfRTTIDescriptor(QualType Ty, // FIXME: should we even be calling this method if RTTI is disabled // and it's not for EH? if ((!ForEH && !getLangOpts().RTTI) || getLangOpts().CUDAIsDevice || - (getLangOpts().OpenMP && getLangOpts().OpenMPIsDevice && + (getLangOpts().OpenMP && getLangOpts().OpenMPIsTargetDevice && getTriple().isNVPTX())) return llvm::Constant::getNullValue(Int8PtrTy); |