Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Prevent auto discarding of value names in LLVM IRs #27

Merged
merged 1 commit into from
Mar 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/clang/Driver/Options.td
Original file line number Diff line number Diff line change
Expand Up @@ -786,6 +786,10 @@ def fdiagnostics_show_template_tree : Flag<["-"], "fdiagnostics-show-template-tr
HelpText<"Print a template comparison tree for differing templates">;
def fdeclspec : Flag<["-"], "fdeclspec">, Group<f_clang_Group>,
HelpText<"Allow __declspec as a keyword">, Flags<[CC1Option]>;
def fdiscard_value_names : Flag<["-"], "fdiscard-value-names">, Group<f_clang_Group>,
HelpText<"Discard value names in LLVM IR">, Flags<[DriverOption]>;
def fno_discard_value_names : Flag<["-"], "fno-discard-value-names">, Group<f_clang_Group>,
HelpText<"Do not discard value names in LLVM IR">, Flags<[DriverOption]>;
def fdollars_in_identifiers : Flag<["-"], "fdollars-in-identifiers">, Group<f_Group>,
HelpText<"Allow '$' in identifiers">, Flags<[CC1Option]>;
def fdwarf2_cfi_asm : Flag<["-"], "fdwarf2-cfi-asm">, Group<clang_ignored_f_Group>;
Expand Down
19 changes: 16 additions & 3 deletions lib/Driver/ToolChains/Clang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3226,11 +3226,24 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,

// Disable the verification pass in -asserts builds.
#ifdef NDEBUG
CmdArgs.push_back("-disable-llvm-verifier");
// Discard LLVM value names in -asserts builds.
CmdArgs.push_back("-discard-value-names");
const bool IsAssertBuild = false;
#else
const bool IsAssertBuild = true;
#endif

// Disable the verification pass in -asserts builds.
if (!IsAssertBuild)
CmdArgs.push_back("-disable-llvm-verifier");

// Discard value names in assert builds unless otherwise specified.
if (const Arg *A = Args.getLastArg(options::OPT_fdiscard_value_names,
options::OPT_fno_discard_value_names)) {
if (A->getOption().matches(options::OPT_fdiscard_value_names))
CmdArgs.push_back("-discard-value-names");
} else if (!IsAssertBuild)
CmdArgs.push_back("-discard-value-names");


// Set the main file name, so that debug info works even with
// -save-temps.
CmdArgs.push_back("-main-file-name");
Expand Down