forked from OSchip/llvm-project
[CodeGen] Add an option to suppress output of llvm.ident
Summary: By default Clang outputs its version (including git commit hash, in case of trunk builds) into object and assembly files. It might be useful to have an option to disable this, especially for debugging purposes. This patch implements new command line flags -Qn and -Qy (the names are chosen for compatibility with GCC). -Qn disables output of the 'llvm.ident' metadata string and the 'producer' debug info. -Qy (enabled by default) does the opposite. Reviewers: faisalv, echristo, aprantl Reviewed By: aprantl Subscribers: aprantl, cfe-commits, JDevlieghere, rogfer01 Differential Revision: https://reviews.llvm.org/D45255 llvm-svn: 330442
This commit is contained in:
parent
a417362c28
commit
6550c13912
|
@ -396,7 +396,10 @@ def O_flag : Flag<["-"], "O">, Flags<[CC1Option]>, Alias<O>, AliasArgs<["2"]>;
|
|||
def Ofast : Joined<["-"], "Ofast">, Group<O_Group>, Flags<[CC1Option]>;
|
||||
def P : Flag<["-"], "P">, Flags<[CC1Option]>, Group<Preprocessor_Group>,
|
||||
HelpText<"Disable linemarker output in -E mode">;
|
||||
def Qn : Flag<["-"], "Qn">, IgnoredGCCCompat;
|
||||
def Qy : Flag<["-"], "Qy">, Flags<[CC1Option]>,
|
||||
HelpText<"Emit metadata containing compiler name and version">;
|
||||
def Qn : Flag<["-"], "Qn">, Flags<[CC1Option]>,
|
||||
HelpText<"Do not emit metadata containing compiler name and version">;
|
||||
def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Flags<[DriverOption, CoreOption]>,
|
||||
HelpText<"Don't emit warning for unused driver arguments">;
|
||||
def Q : Flag<["-"], "Q">, IgnoredGCCCompat;
|
||||
|
|
|
@ -69,6 +69,7 @@ CODEGENOPT(EmitDeclMetadata , 1, 0) ///< Emit special metadata indicating what
|
|||
///< Decl* various IR entities came from.
|
||||
///< Only useful when running CodeGen as a
|
||||
///< subroutine.
|
||||
CODEGENOPT(EmitVersionIdentMetadata , 1, 1) ///< Emit compiler version metadata.
|
||||
CODEGENOPT(EmitGcovArcs , 1, 0) ///< Emit coverage data files, aka. GCDA.
|
||||
CODEGENOPT(EmitGcovNotes , 1, 0) ///< Emit coverage "notes" files, aka GCNO.
|
||||
CODEGENOPT(EmitOpenCLArgMetadata , 1, 0) ///< Emit OpenCL kernel arg metadata.
|
||||
|
|
|
@ -577,7 +577,8 @@ void CGDebugInfo::CreateCompileUnit() {
|
|||
remapDIPath(getCurrentDirname()),
|
||||
CSInfo,
|
||||
getSource(SM, SM.getMainFileID())),
|
||||
Producer, LO.Optimize || CGOpts.PrepareForLTO || CGOpts.EmitSummaryIndex,
|
||||
CGOpts.EmitVersionIdentMetadata ? Producer : "",
|
||||
LO.Optimize || CGOpts.PrepareForLTO || CGOpts.EmitSummaryIndex,
|
||||
CGOpts.DwarfDebugFlags, RuntimeVers,
|
||||
CGOpts.EnableSplitDwarf ? "" : CGOpts.SplitDwarfFile, EmissionKind,
|
||||
0 /* DWOid */, CGOpts.SplitDwarfInlining, CGOpts.DebugInfoForProfiling,
|
||||
|
|
|
@ -571,7 +571,8 @@ void CodeGenModule::Release() {
|
|||
if (DebugInfo)
|
||||
DebugInfo->finalize();
|
||||
|
||||
EmitVersionIdentMetadata();
|
||||
if (getCodeGenOpts().EmitVersionIdentMetadata)
|
||||
EmitVersionIdentMetadata();
|
||||
|
||||
EmitTargetMetadata();
|
||||
}
|
||||
|
|
|
@ -4408,6 +4408,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
}
|
||||
}
|
||||
|
||||
if (!Args.hasFlag(options::OPT_Qy, options::OPT_Qn, true))
|
||||
CmdArgs.push_back("-Qn");
|
||||
|
||||
// -fcommon is the default unless compiling kernel code or the target says so
|
||||
bool NoCommonDefault = KernelOrKext || isNoCommonDefault(RawTriple);
|
||||
if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common,
|
||||
|
|
|
@ -1112,6 +1112,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Opts.EmitCheckPathComponentsToStrip = getLastArgIntValue(
|
||||
Args, OPT_fsanitize_undefined_strip_path_components_EQ, 0, Diags);
|
||||
|
||||
Opts.EmitVersionIdentMetadata = Args.hasFlag(OPT_Qy, OPT_Qn, true);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -o - %s \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NONE %s
|
||||
// RUN: %clang_cc1 -Qn -emit-llvm -debug-info-kind=limited -o - %s \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-QN %s
|
||||
// RUN: %clang_cc1 -Qy -emit-llvm -debug-info-kind=limited -o - %s \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-QY %s
|
||||
|
||||
// CHECK-NONE: define i32 @main()
|
||||
// CHECK-NONE: llvm.ident
|
||||
// CHECK-NONE: producer:
|
||||
|
||||
// CHECK-QN: define i32 @main()
|
||||
// CHECK-QN-NOT: llvm.ident
|
||||
// CHECK-QN-NOT: producer:
|
||||
|
||||
// CHECK-QY: define i32 @main()
|
||||
// CHECK-QY: llvm.ident
|
||||
// CHECK-QY: producer:
|
||||
int main(void) {}
|
Loading…
Reference in New Issue