aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorSriraman Tallam <tmsriram@google.com>2020-05-07 18:18:37 -0700
committerSriraman Tallam <tmsriram@google.com>2020-05-07 18:18:37 -0700
commite8147ad8222602d16728c370d5fac086260d058c (patch)
tree3c7ebd53c547834dfcb86f5344a75ce58a95da9a /clang/lib/Frontend/CompilerInvocation.cpp
parentf5224d437eace9593b64ef2eff501df397bce6a8 (diff)
downloadllvm-e8147ad8222602d16728c370d5fac086260d058c.zip
llvm-e8147ad8222602d16728c370d5fac086260d058c.tar.gz
llvm-e8147ad8222602d16728c370d5fac086260d058c.tar.bz2
Uniuqe Names for Internal Linkage Symbols.
This is a standalone patch and this would help Propeller do a better job of code layout as it can accurately attribute the profiles to the right internal linkage function. This also helps SampledFDO/AutoFDO correctly associate sampled profiles to the right internal function. Currently, if there is more than one internal symbol foo, their profiles are aggregated by SampledFDO. This patch adds a new clang option, -funique-internal-funcnames, to generate unique names for functions with internal linkage. This patch appends the md5 hash of the module name to the function symbol as a best effort to generate a unique name for symbols with internal linkage. Differential Revision: https://reviews.llvm.org/D73307
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 18872f9..01f0673 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -957,6 +957,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
Opts.DataSections = Args.hasArg(OPT_fdata_sections);
Opts.StackSizeSection = Args.hasArg(OPT_fstack_size_section);
Opts.UniqueSectionNames = !Args.hasArg(OPT_fno_unique_section_names);
+ Opts.UniqueInternalLinkageNames =
+ Args.hasArg(OPT_funique_internal_linkage_names);
Opts.MergeFunctions = Args.hasArg(OPT_fmerge_functions);