[clang] [flang] [llvm] Revert "Add IR Profile-Guided Optimization (IR PGO) support to the Flang compiler" (PR #142159)
via cfe-commits
cfe-commits at lists.llvm.org
Fri May 30 07:25:56 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-driver
@llvm/pr-subscribers-clang-codegen
Author: Tarun Prabhu (tarunprabhu)
<details>
<summary>Changes</summary>
Reverts llvm/llvm-project#<!-- -->136098
---
Patch is 29.10 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/142159.diff
21 Files Affected:
- (modified) clang/include/clang/Basic/CodeGenOptions.def (+2-4)
- (modified) clang/include/clang/Basic/CodeGenOptions.h (+8-14)
- (modified) clang/include/clang/Basic/ProfileList.h (+5-4)
- (modified) clang/include/clang/Driver/Options.td (+2-2)
- (modified) clang/lib/Basic/ProfileList.cpp (+10-10)
- (modified) clang/lib/CodeGen/BackendUtil.cpp (+24-18)
- (modified) clang/lib/CodeGen/CodeGenAction.cpp (+2-2)
- (modified) clang/lib/CodeGen/CodeGenFunction.cpp (+1-2)
- (modified) clang/lib/CodeGen/CodeGenModule.cpp (+1-1)
- (modified) clang/lib/Driver/ToolChains/Flang.cpp (-4)
- (modified) clang/lib/Frontend/CompilerInvocation.cpp (+3-3)
- (modified) flang/include/flang/Frontend/CodeGenOptions.def (-7)
- (modified) flang/include/flang/Frontend/CodeGenOptions.h (-38)
- (modified) flang/lib/Frontend/CompilerInvocation.cpp (-10)
- (modified) flang/lib/Frontend/FrontendActions.cpp (-26)
- (modified) flang/test/Driver/flang-f-opts.f90 (-5)
- (removed) flang/test/Profile/Inputs/gcc-flag-compatibility_IR.proftext (-18)
- (removed) flang/test/Profile/Inputs/gcc-flag-compatibility_IR_entry.proftext (-11)
- (removed) flang/test/Profile/gcc-flag-compatibility.f90 (-32)
- (modified) llvm/include/llvm/Frontend/Driver/CodeGenOptions.h (-12)
- (modified) llvm/lib/Frontend/Driver/CodeGenOptions.cpp (-13)
``````````diff
diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def
index 11dad53a52efe..aad4e107cbeb3 100644
--- a/clang/include/clang/Basic/CodeGenOptions.def
+++ b/clang/include/clang/Basic/CodeGenOptions.def
@@ -223,11 +223,9 @@ AFFECTING_VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is
CODEGENOPT(AtomicProfileUpdate , 1, 0) ///< Set -fprofile-update=atomic
CODEGENOPT(ContinuousProfileSync, 1, 0) ///< Enable continuous instrumentation profiling
/// Choose profile instrumenation kind or no instrumentation.
-
-ENUM_CODEGENOPT(ProfileInstr, llvm::driver::ProfileInstrKind, 4, llvm::driver::ProfileInstrKind::ProfileNone)
-
+ENUM_CODEGENOPT(ProfileInstr, ProfileInstrKind, 4, ProfileNone)
/// Choose profile kind for PGO use compilation.
-ENUM_CODEGENOPT(ProfileUse, llvm::driver::ProfileInstrKind, 2, llvm::driver::ProfileInstrKind::ProfileNone)
+ENUM_CODEGENOPT(ProfileUse, ProfileInstrKind, 2, ProfileNone)
/// Partition functions into N groups and select only functions in group i to be
/// instrumented. Selected group numbers can be 0 to N-1 inclusive.
VALUE_CODEGENOPT(ProfileTotalFunctionGroups, 32, 1)
diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h
index bffbd00b1bd72..278803f7bb960 100644
--- a/clang/include/clang/Basic/CodeGenOptions.h
+++ b/clang/include/clang/Basic/CodeGenOptions.h
@@ -518,41 +518,35 @@ class CodeGenOptions : public CodeGenOptionsBase {
/// Check if Clang profile instrumenation is on.
bool hasProfileClangInstr() const {
- return getProfileInstr() ==
- llvm::driver::ProfileInstrKind::ProfileClangInstr;
+ return getProfileInstr() == ProfileClangInstr;
}
/// Check if IR level profile instrumentation is on.
bool hasProfileIRInstr() const {
- return getProfileInstr() == llvm::driver::ProfileInstrKind::ProfileIRInstr;
+ return getProfileInstr() == ProfileIRInstr;
}
/// Check if CS IR level profile instrumentation is on.
bool hasProfileCSIRInstr() const {
- return getProfileInstr() ==
- llvm::driver::ProfileInstrKind::ProfileCSIRInstr;
+ return getProfileInstr() == ProfileCSIRInstr;
}
/// Check if any form of instrumentation is on.
- bool hasProfileInstr() const {
- return getProfileInstr() != llvm::driver::ProfileInstrKind::ProfileNone;
- }
+ bool hasProfileInstr() const { return getProfileInstr() != ProfileNone; }
/// Check if Clang profile use is on.
bool hasProfileClangUse() const {
- return getProfileUse() == llvm::driver::ProfileInstrKind::ProfileClangInstr;
+ return getProfileUse() == ProfileClangInstr;
}
/// Check if IR level profile use is on.
bool hasProfileIRUse() const {
- return getProfileUse() == llvm::driver::ProfileInstrKind::ProfileIRInstr ||
- getProfileUse() == llvm::driver::ProfileInstrKind::ProfileCSIRInstr;
+ return getProfileUse() == ProfileIRInstr ||
+ getProfileUse() == ProfileCSIRInstr;
}
/// Check if CSIR profile use is on.
- bool hasProfileCSIRUse() const {
- return getProfileUse() == llvm::driver::ProfileInstrKind::ProfileCSIRInstr;
- }
+ bool hasProfileCSIRUse() const { return getProfileUse() == ProfileCSIRInstr; }
/// Check if type and variable info should be emitted.
bool hasReducedDebugInfo() const {
diff --git a/clang/include/clang/Basic/ProfileList.h b/clang/include/clang/Basic/ProfileList.h
index 5338ef3992ade..b4217e49c18a3 100644
--- a/clang/include/clang/Basic/ProfileList.h
+++ b/clang/include/clang/Basic/ProfileList.h
@@ -49,16 +49,17 @@ class ProfileList {
~ProfileList();
bool isEmpty() const { return Empty; }
- ExclusionType getDefault(llvm::driver::ProfileInstrKind Kind) const;
+ ExclusionType getDefault(CodeGenOptions::ProfileInstrKind Kind) const;
std::optional<ExclusionType>
isFunctionExcluded(StringRef FunctionName,
- llvm::driver::ProfileInstrKind Kind) const;
+ CodeGenOptions::ProfileInstrKind Kind) const;
std::optional<ExclusionType>
isLocationExcluded(SourceLocation Loc,
- llvm::driver::ProfileInstrKind Kind) const;
+ CodeGenOptions::ProfileInstrKind Kind) const;
std::optional<ExclusionType>
- isFileExcluded(StringRef FileName, llvm::driver::ProfileInstrKind Kind) const;
+ isFileExcluded(StringRef FileName,
+ CodeGenOptions::ProfileInstrKind Kind) const;
};
} // namespace clang
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 5c79c66b55eb3..5ca31c253ed8f 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1772,7 +1772,7 @@ def fmcdc_max_test_vectors_EQ : Joined<["-"], "fmcdc-max-test-vectors=">,
HelpText<"Maximum number of test vectors in MC/DC coverage">,
MarshallingInfoInt<CodeGenOpts<"MCDCMaxTVs">, "0x7FFFFFFE">;
def fprofile_generate : Flag<["-"], "fprofile-generate">,
- Group<f_Group>, Visibility<[ClangOption, CLOption, FlangOption, FC1Option]>,
+ Group<f_Group>, Visibility<[ClangOption, CLOption]>,
HelpText<"Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)">;
def fprofile_generate_EQ : Joined<["-"], "fprofile-generate=">,
Group<f_Group>, Visibility<[ClangOption, CLOption]>,
@@ -1789,7 +1789,7 @@ def fprofile_use : Flag<["-"], "fprofile-use">, Group<f_Group>,
Visibility<[ClangOption, CLOption]>, Alias<fprofile_instr_use>;
def fprofile_use_EQ : Joined<["-"], "fprofile-use=">,
Group<f_Group>,
- Visibility<[ClangOption, CLOption, FlangOption, FC1Option]>,
+ Visibility<[ClangOption, CLOption]>,
MetaVarName<"<pathname>">,
HelpText<"Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.">;
def fno_profile_instr_generate : Flag<["-"], "fno-profile-instr-generate">,
diff --git a/clang/lib/Basic/ProfileList.cpp b/clang/lib/Basic/ProfileList.cpp
index bea65579f396b..2d37014294b92 100644
--- a/clang/lib/Basic/ProfileList.cpp
+++ b/clang/lib/Basic/ProfileList.cpp
@@ -70,24 +70,24 @@ ProfileList::ProfileList(ArrayRef<std::string> Paths, SourceManager &SM)
ProfileList::~ProfileList() = default;
-static StringRef getSectionName(llvm::driver::ProfileInstrKind Kind) {
+static StringRef getSectionName(CodeGenOptions::ProfileInstrKind Kind) {
switch (Kind) {
- case llvm::driver::ProfileInstrKind::ProfileNone:
+ case CodeGenOptions::ProfileNone:
return "";
- case llvm::driver::ProfileInstrKind::ProfileClangInstr:
+ case CodeGenOptions::ProfileClangInstr:
return "clang";
- case llvm::driver::ProfileInstrKind::ProfileIRInstr:
+ case CodeGenOptions::ProfileIRInstr:
return "llvm";
- case llvm::driver::ProfileInstrKind::ProfileCSIRInstr:
+ case CodeGenOptions::ProfileCSIRInstr:
return "csllvm";
case CodeGenOptions::ProfileIRSampleColdCov:
return "sample-coldcov";
}
- llvm_unreachable("Unhandled llvm::driver::ProfileInstrKind enum");
+ llvm_unreachable("Unhandled CodeGenOptions::ProfileInstrKind enum");
}
ProfileList::ExclusionType
-ProfileList::getDefault(llvm::driver::ProfileInstrKind Kind) const {
+ProfileList::getDefault(CodeGenOptions::ProfileInstrKind Kind) const {
StringRef Section = getSectionName(Kind);
// Check for "default:<type>"
if (SCL->inSection(Section, "default", "allow"))
@@ -118,7 +118,7 @@ ProfileList::inSection(StringRef Section, StringRef Prefix,
std::optional<ProfileList::ExclusionType>
ProfileList::isFunctionExcluded(StringRef FunctionName,
- llvm::driver::ProfileInstrKind Kind) const {
+ CodeGenOptions::ProfileInstrKind Kind) const {
StringRef Section = getSectionName(Kind);
// Check for "function:<regex>=<case>"
if (auto V = inSection(Section, "function", FunctionName))
@@ -132,13 +132,13 @@ ProfileList::isFunctionExcluded(StringRef FunctionName,
std::optional<ProfileList::ExclusionType>
ProfileList::isLocationExcluded(SourceLocation Loc,
- llvm::driver::ProfileInstrKind Kind) const {
+ CodeGenOptions::ProfileInstrKind Kind) const {
return isFileExcluded(SM.getFilename(SM.getFileLoc(Loc)), Kind);
}
std::optional<ProfileList::ExclusionType>
ProfileList::isFileExcluded(StringRef FileName,
- llvm::driver::ProfileInstrKind Kind) const {
+ CodeGenOptions::ProfileInstrKind Kind) const {
StringRef Section = getSectionName(Kind);
// Check for "source:<regex>=<case>"
if (auto V = inSection(Section, "source", FileName))
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 03e10b1138a71..cd5fc48c4a22b 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -123,10 +123,17 @@ namespace clang {
extern llvm::cl::opt<bool> ClSanitizeGuardChecks;
}
+// Default filename used for profile generation.
+static std::string getDefaultProfileGenName() {
+ return DebugInfoCorrelate || ProfileCorrelate != InstrProfCorrelator::NONE
+ ? "default_%m.proflite"
+ : "default_%m.profraw";
+}
+
// Path and name of file used for profile generation
static std::string getProfileGenName(const CodeGenOptions &CodeGenOpts) {
std::string FileName = CodeGenOpts.InstrProfileOutput.empty()
- ? llvm::driver::getDefaultProfileGenName()
+ ? getDefaultProfileGenName()
: CodeGenOpts.InstrProfileOutput;
if (CodeGenOpts.ContinuousProfileSync)
FileName = "%c" + FileName;
@@ -828,12 +835,12 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
if (CodeGenOpts.hasProfileIRInstr())
// -fprofile-generate.
- PGOOpt = PGOOptions(
- getProfileGenName(CodeGenOpts), "", "",
- CodeGenOpts.MemoryProfileUsePath, nullptr, PGOOptions::IRInstr,
- PGOOptions::NoCSAction, llvm::ClPGOColdFuncAttr,
- CodeGenOpts.DebugInfoForProfiling,
- /*PseudoProbeForProfiling=*/false, CodeGenOpts.AtomicProfileUpdate);
+ PGOOpt = PGOOptions(getProfileGenName(CodeGenOpts), "", "",
+ CodeGenOpts.MemoryProfileUsePath, nullptr,
+ PGOOptions::IRInstr, PGOOptions::NoCSAction,
+ ClPGOColdFuncAttr, CodeGenOpts.DebugInfoForProfiling,
+ /*PseudoProbeForProfiling=*/false,
+ CodeGenOpts.AtomicProfileUpdate);
else if (CodeGenOpts.hasProfileIRUse()) {
// -fprofile-use.
auto CSAction = CodeGenOpts.hasProfileCSIRUse() ? PGOOptions::CSIRUse
@@ -841,32 +848,31 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
PGOOpt = PGOOptions(CodeGenOpts.ProfileInstrumentUsePath, "",
CodeGenOpts.ProfileRemappingFile,
CodeGenOpts.MemoryProfileUsePath, VFS,
- PGOOptions::IRUse, CSAction, llvm::ClPGOColdFuncAttr,
+ PGOOptions::IRUse, CSAction, ClPGOColdFuncAttr,
CodeGenOpts.DebugInfoForProfiling);
} else if (!CodeGenOpts.SampleProfileFile.empty())
// -fprofile-sample-use
PGOOpt = PGOOptions(
CodeGenOpts.SampleProfileFile, "", CodeGenOpts.ProfileRemappingFile,
CodeGenOpts.MemoryProfileUsePath, VFS, PGOOptions::SampleUse,
- PGOOptions::NoCSAction, llvm::ClPGOColdFuncAttr,
+ PGOOptions::NoCSAction, ClPGOColdFuncAttr,
CodeGenOpts.DebugInfoForProfiling, CodeGenOpts.PseudoProbeForProfiling);
else if (!CodeGenOpts.MemoryProfileUsePath.empty())
// -fmemory-profile-use (without any of the above options)
- PGOOpt =
- PGOOptions("", "", "", CodeGenOpts.MemoryProfileUsePath, VFS,
- PGOOptions::NoAction, PGOOptions::NoCSAction,
- llvm::ClPGOColdFuncAttr, CodeGenOpts.DebugInfoForProfiling);
+ PGOOpt = PGOOptions("", "", "", CodeGenOpts.MemoryProfileUsePath, VFS,
+ PGOOptions::NoAction, PGOOptions::NoCSAction,
+ ClPGOColdFuncAttr, CodeGenOpts.DebugInfoForProfiling);
else if (CodeGenOpts.PseudoProbeForProfiling)
// -fpseudo-probe-for-profiling
- PGOOpt = PGOOptions("", "", "", /*MemoryProfile=*/"", nullptr,
- PGOOptions::NoAction, PGOOptions::NoCSAction,
- llvm::ClPGOColdFuncAttr,
- CodeGenOpts.DebugInfoForProfiling, true);
+ PGOOpt =
+ PGOOptions("", "", "", /*MemoryProfile=*/"", nullptr,
+ PGOOptions::NoAction, PGOOptions::NoCSAction,
+ ClPGOColdFuncAttr, CodeGenOpts.DebugInfoForProfiling, true);
else if (CodeGenOpts.DebugInfoForProfiling)
// -fdebug-info-for-profiling
PGOOpt = PGOOptions("", "", "", /*MemoryProfile=*/"", nullptr,
PGOOptions::NoAction, PGOOptions::NoCSAction,
- llvm::ClPGOColdFuncAttr, true);
+ ClPGOColdFuncAttr, true);
// Check to see if we want to generate a CS profile.
if (CodeGenOpts.hasProfileCSIRInstr()) {
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index 5493cc92bd8b0..1f5eb427b566f 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -273,8 +273,8 @@ void BackendConsumer::HandleTranslationUnit(ASTContext &C) {
std::unique_ptr<llvm::ToolOutputFile> OptRecordFile =
std::move(*OptRecordFileOrErr);
- if (OptRecordFile && CodeGenOpts.getProfileUse() !=
- llvm::driver::ProfileInstrKind::ProfileNone)
+ if (OptRecordFile &&
+ CodeGenOpts.getProfileUse() != CodeGenOptions::ProfileNone)
Ctx.setDiagnosticsHotnessRequested(true);
if (CodeGenOpts.MisExpect) {
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index 30aec87c909eb..4193f0a1b278f 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -940,8 +940,7 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
}
}
- if (CGM.getCodeGenOpts().getProfileInstr() !=
- llvm::driver::ProfileInstrKind::ProfileNone) {
+ if (CGM.getCodeGenOpts().getProfileInstr() != CodeGenOptions::ProfileNone) {
switch (CGM.isFunctionBlockedFromProfileInstr(Fn, Loc)) {
case ProfileList::Skip:
Fn->addFnAttr(llvm::Attribute::SkipProfile);
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 264f1bdee81c6..6d2c705338ecf 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3601,7 +3601,7 @@ CodeGenModule::isFunctionBlockedByProfileList(llvm::Function *Fn,
// If the profile list is empty, then instrument everything.
if (ProfileList.isEmpty())
return ProfileList::Allow;
- llvm::driver::ProfileInstrKind Kind = getCodeGenOpts().getProfileInstr();
+ CodeGenOptions::ProfileInstrKind Kind = getCodeGenOpts().getProfileInstr();
// First, check the function name.
if (auto V = ProfileList.isFunctionExcluded(Fn->getName(), Kind))
return *V;
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index e303631cc1d57..dcc46469df3e9 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -883,10 +883,6 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
// TODO: Handle interactions between -w, -pedantic, -Wall, -WOption
Args.AddLastArg(CmdArgs, options::OPT_w);
- // recognise options: fprofile-generate -fprofile-use=
- Args.addAllArgs(
- CmdArgs, {options::OPT_fprofile_generate, options::OPT_fprofile_use_EQ});
-
// Forward flags for OpenMP. We don't do this if the current action is an
// device offloading action other than OpenMP.
if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 11d0dc6b7b6f1..9c33910eff57e 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -1499,11 +1499,11 @@ static void setPGOUseInstrumentor(CodeGenOptions &Opts,
// which is available (might be one or both).
if (PGOReader->isIRLevelProfile() || PGOReader->hasMemoryProfile()) {
if (PGOReader->hasCSIRLevelProfile())
- Opts.setProfileUse(llvm::driver::ProfileInstrKind::ProfileCSIRInstr);
+ Opts.setProfileUse(CodeGenOptions::ProfileCSIRInstr);
else
- Opts.setProfileUse(llvm::driver::ProfileInstrKind::ProfileIRInstr);
+ Opts.setProfileUse(CodeGenOptions::ProfileIRInstr);
} else
- Opts.setProfileUse(llvm::driver::ProfileInstrKind::ProfileClangInstr);
+ Opts.setProfileUse(CodeGenOptions::ProfileClangInstr);
}
void CompilerInvocation::setDefaultPointerAuthOptions(
diff --git a/flang/include/flang/Frontend/CodeGenOptions.def b/flang/include/flang/Frontend/CodeGenOptions.def
index ae12aec518108..a697872836569 100644
--- a/flang/include/flang/Frontend/CodeGenOptions.def
+++ b/flang/include/flang/Frontend/CodeGenOptions.def
@@ -24,15 +24,8 @@ CODEGENOPT(OptimizationLevel, 2, 0) ///< The -O[0-3] option specified.
CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new
///< pass manager.
-
-/// Choose profile instrumenation kind or no instrumentation.
-ENUM_CODEGENOPT(ProfileInstr, llvm::driver::ProfileInstrKind, 2, llvm::driver::ProfileInstrKind::ProfileNone)
-/// Choose profile kind for PGO use compilation.
-ENUM_CODEGENOPT(ProfileUse, llvm::driver::ProfileInstrKind, 2, llvm::driver::ProfileInstrKind::ProfileNone)
-
CODEGENOPT(InstrumentFunctions, 1, 0) ///< Set when -finstrument_functions is
///< enabled on the compile step.
-
CODEGENOPT(IsPIE, 1, 0) ///< PIE level is the same as PIC Level.
CODEGENOPT(PICLevel, 2, 0) ///< PIC level of the LLVM module.
CODEGENOPT(PrepareForFullLTO , 1, 0) ///< Set when -flto is enabled on the
diff --git a/flang/include/flang/Frontend/CodeGenOptions.h b/flang/include/flang/Frontend/CodeGenOptions.h
index 06203670f97b9..61e56e51c4bbb 100644
--- a/flang/include/flang/Frontend/CodeGenOptions.h
+++ b/flang/include/flang/Frontend/CodeGenOptions.h
@@ -151,44 +151,6 @@ class CodeGenOptions : public CodeGenOptionsBase {
/// OpenMP is enabled.
using DoConcurrentMappingKind = flangomp::DoConcurrentMappingKind;
- /// Name of the profile file to use as output for -fprofile-instr-generate,
- /// -fprofile-generate, and -fcs-profile-generate.
- std::string InstrProfileOutput;
-
- /// Name of the profile file to use as input for -fmemory-profile-use.
- std::string MemoryProfileUsePath;
-
- /// Name of the profile file to use as input for -fprofile-instr-use
- std::string ProfileInstrumentUsePath;
-
- /// Name of the profile remapping file to apply to the profile data supplied
- /// by -fprofile-sample-use or -fprofile-instr-use.
- std::string ProfileRemappingFile;
-
- /// Check if Clang profile instrumenation is on.
- bool hasProfileClangInstr() const {
- return getProfileInstr() == llvm::driver::ProfileClangInstr;
- }
-
- /// Check if IR level profile instrumentation is on.
- bool hasProfileIRInstr() const {
- return getProfileInstr() == llvm::driver::ProfileIRInstr;
- }
-
- /// Check if CS IR level profile instrumentation is on.
- bool hasProfileCSIRInstr() const {
- return getProfileInstr() == llvm::driver::ProfileCSIRInstr;
- }
- /// Check if IR level profile use is on.
- bool hasProfileIRUse() const {
- return getProfileUse() == llvm::driver::ProfileIRInstr ||
- getProfileUse() == llvm::driver::ProfileCSIRInstr;
- }
- /// Check if CSIR profile use is on.
- bool hasProfileCSIRUse() const {
- return getProfileUse() == llvm::driver::ProfileCSIRInstr;
- }
-
// Define accessors/mutators for code generation options of enumeration type.
#define CODEGENOPT(Name, Bits, Default)
#define ENUM_CODEGENOPT(Name, Type, Bits, Default) \
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerI...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/142159
More information about the cfe-commits
mailing list