Skip to content

Commit

Permalink
[Remarks][Driver][NFC] Make shouldEmitRemarks more available in the D…
Browse files Browse the repository at this point in the history
…river

Move the function to Driver.h so that it can be re-used in other places.
  • Loading branch information
francisvm committed Dec 18, 2019
1 parent bce1cce commit a8c678c
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 25 deletions.
3 changes: 3 additions & 0 deletions clang/include/clang/Driver/Driver.h
Expand Up @@ -620,6 +620,9 @@ class Driver {
/// And False otherwise.
bool isOptimizationLevelFast(const llvm::opt::ArgList &Args);

/// \return True if the argument combination will end up generating remarks.
bool willEmitRemarks(const llvm::opt::ArgList &Args);

} // end namespace driver
} // end namespace clang

Expand Down
23 changes: 23 additions & 0 deletions clang/lib/Driver/Driver.cpp
Expand Up @@ -5060,3 +5060,26 @@ Driver::getIncludeExcludeOptionFlagMasks(bool IsClCompatMode) const {
bool clang::driver::isOptimizationLevelFast(const ArgList &Args) {
return Args.hasFlag(options::OPT_Ofast, options::OPT_O_Group, false);
}

bool clang::driver::willEmitRemarks(const ArgList &Args) {
// -fsave-optimization-record enables it.
if (Args.hasFlag(options::OPT_fsave_optimization_record,
options::OPT_fno_save_optimization_record, false))
return true;

// -fsave-optimization-record=<format> enables it as well.
if (Args.hasFlag(options::OPT_fsave_optimization_record_EQ,
options::OPT_fno_save_optimization_record, false))
return true;

// -foptimization-record-file alone enables it too.
if (Args.hasFlag(options::OPT_foptimization_record_file_EQ,
options::OPT_fno_save_optimization_record, false))
return true;

// -foptimization-record-passes alone enables it too.
if (Args.hasFlag(options::OPT_foptimization_record_passes_EQ,
options::OPT_fno_save_optimization_record, false))
return true;
return false;
}
27 changes: 2 additions & 25 deletions clang/lib/Driver/ToolChains/Clang.cpp
Expand Up @@ -1415,29 +1415,6 @@ static bool isNoCommonDefault(const llvm::Triple &Triple) {
}
}

static bool shouldEmitRemarks(const ArgList &Args) {
// -fsave-optimization-record enables it.
if (Args.hasFlag(options::OPT_fsave_optimization_record,
options::OPT_fno_save_optimization_record, false))
return true;

// -fsave-optimization-record=<format> enables it as well.
if (Args.hasFlag(options::OPT_fsave_optimization_record_EQ,
options::OPT_fno_save_optimization_record, false))
return true;

// -foptimization-record-file alone enables it too.
if (Args.hasFlag(options::OPT_foptimization_record_file_EQ,
options::OPT_fno_save_optimization_record, false))
return true;

// -foptimization-record-passes alone enables it too.
if (Args.hasFlag(options::OPT_foptimization_record_passes_EQ,
options::OPT_fno_save_optimization_record, false))
return true;
return false;
}

static bool hasMultipleInvocations(const llvm::Triple &Triple,
const ArgList &Args) {
// Supported only on Darwin where we invoke the compiler multiple times
Expand Down Expand Up @@ -3718,7 +3695,7 @@ static void RenderDebugOptions(const ToolChain &TC, const Driver &D,
TC.adjustDebugInfoKind(DebugInfoKind, Args);

// When emitting remarks, we need at least debug lines in the output.
if (shouldEmitRemarks(Args) &&
if (willEmitRemarks(Args) &&
DebugInfoKind <= codegenoptions::DebugDirectivesOnly)
DebugInfoKind = codegenoptions::DebugLineTablesOnly;

Expand Down Expand Up @@ -5546,7 +5523,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-fapple-pragma-pack");

// Remarks can be enabled with any of the `-f.*optimization-record.*` flags.
if (shouldEmitRemarks(Args) && checkRemarksOptions(D, Args, Triple))
if (willEmitRemarks(Args) && checkRemarksOptions(D, Args, Triple))
renderRemarksOptions(Args, CmdArgs, Triple, Input, JA);

bool RewriteImports = Args.hasFlag(options::OPT_frewrite_imports,
Expand Down

0 comments on commit a8c678c

Please sign in to comment.