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/Frontend/CompilerInvocation.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/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 50440e6..5360bbe 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -3401,8 +3401,8 @@ void CompilerInvocation::GenerateLangArgs(const LangOptions &Opts, if (!Opts.OpenMPUseTLS) GenerateArg(Args, OPT_fnoopenmp_use_tls, SA); - if (Opts.OpenMPIsDevice) - GenerateArg(Args, OPT_fopenmp_is_device, SA); + if (Opts.OpenMPIsTargetDevice) + GenerateArg(Args, OPT_fopenmp_is_target_device, SA); if (Opts.OpenMPIRBuilder) GenerateArg(Args, OPT_fopenmp_enable_irbuilder, SA); @@ -3787,14 +3787,15 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, Opts.OpenMPSimd = !Opts.OpenMP && IsSimdSpecified; Opts.OpenMPUseTLS = Opts.OpenMP && !Args.hasArg(options::OPT_fnoopenmp_use_tls); - Opts.OpenMPIsDevice = - Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_is_device); + Opts.OpenMPIsTargetDevice = + Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_is_target_device); Opts.OpenMPIRBuilder = Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_enable_irbuilder); bool IsTargetSpecified = - Opts.OpenMPIsDevice || Args.hasArg(options::OPT_fopenmp_targets_EQ); + Opts.OpenMPIsTargetDevice || Args.hasArg(options::OPT_fopenmp_targets_EQ); - Opts.ConvergentFunctions = Opts.ConvergentFunctions || Opts.OpenMPIsDevice; + Opts.ConvergentFunctions = + Opts.ConvergentFunctions || Opts.OpenMPIsTargetDevice; if (Opts.OpenMP || Opts.OpenMPSimd) { if (int Version = getLastArgIntValue( @@ -3803,7 +3804,7 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, Opts.OpenMP = Version; // Provide diagnostic when a given target is not expected to be an OpenMP // device or host. - if (!Opts.OpenMPIsDevice) { + if (!Opts.OpenMPIsTargetDevice) { switch (T.getArch()) { default: break; @@ -3818,13 +3819,13 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, // Set the flag to prevent the implementation from emitting device exception // handling code for those requiring so. - if ((Opts.OpenMPIsDevice && (T.isNVPTX() || T.isAMDGCN())) || + if ((Opts.OpenMPIsTargetDevice && (T.isNVPTX() || T.isAMDGCN())) || Opts.OpenCLCPlusPlus) { Opts.Exceptions = 0; Opts.CXXExceptions = 0; } - if (Opts.OpenMPIsDevice && T.isNVPTX()) { + if (Opts.OpenMPIsTargetDevice && T.isNVPTX()) { Opts.OpenMPCUDANumSMs = getLastArgIntValue(Args, options::OPT_fopenmp_cuda_number_of_sm_EQ, Opts.OpenMPCUDANumSMs, Diags); @@ -3838,15 +3839,15 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, // Set the value of the debugging flag used in the new offloading device RTL. // Set either by a specific value or to a default if not specified. - if (Opts.OpenMPIsDevice && (Args.hasArg(OPT_fopenmp_target_debug) || - Args.hasArg(OPT_fopenmp_target_debug_EQ))) { + if (Opts.OpenMPIsTargetDevice && (Args.hasArg(OPT_fopenmp_target_debug) || + Args.hasArg(OPT_fopenmp_target_debug_EQ))) { Opts.OpenMPTargetDebug = getLastArgIntValue( Args, OPT_fopenmp_target_debug_EQ, Opts.OpenMPTargetDebug, Diags); if (!Opts.OpenMPTargetDebug && Args.hasArg(OPT_fopenmp_target_debug)) Opts.OpenMPTargetDebug = 1; } - if (Opts.OpenMPIsDevice) { + if (Opts.OpenMPIsTargetDevice) { if (Args.hasArg(OPT_fopenmp_assume_teams_oversubscription)) Opts.OpenMPTeamSubscription = true; if (Args.hasArg(OPT_fopenmp_assume_threads_oversubscription)) @@ -3894,7 +3895,8 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, } // Set CUDA mode for OpenMP target NVPTX/AMDGCN if specified in options - Opts.OpenMPCUDAMode = Opts.OpenMPIsDevice && (T.isNVPTX() || T.isAMDGCN()) && + Opts.OpenMPCUDAMode = Opts.OpenMPIsTargetDevice && + (T.isNVPTX() || T.isAMDGCN()) && Args.hasArg(options::OPT_fopenmp_cuda_mode); // FIXME: Eliminate this dependency. @@ -4432,7 +4434,7 @@ bool CompilerInvocation::CreateFromArgsImpl( } // Set the triple of the host for OpenMP device compile. - if (LangOpts.OpenMPIsDevice) + if (LangOpts.OpenMPIsTargetDevice) Res.getTargetOpts().HostTriple = Res.getFrontendOpts().AuxTriple; ParseCodeGenArgs(Res.getCodeGenOpts(), Args, DashX, Diags, T, |