diff options
author | Sriraman Tallam <tmsriram@google.com> | 2020-06-01 23:17:29 -0700 |
---|---|---|
committer | Sriraman Tallam <tmsriram@google.com> | 2020-06-02 00:23:32 -0700 |
commit | e0bca46b0854143b2f93b60aac99e669c9776979 (patch) | |
tree | 36085eb2e27ac79be88b7ddd1add1552925acd86 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | fa818ded24413c8b9722dd564b04d9ffc50743b5 (diff) | |
download | llvm-e0bca46b0854143b2f93b60aac99e669c9776979.zip llvm-e0bca46b0854143b2f93b60aac99e669c9776979.tar.gz llvm-e0bca46b0854143b2f93b60aac99e669c9776979.tar.bz2 |
Options for Basic Block Sections, enabled in D68063 and D73674.
This patch adds clang options:
-fbasic-block-sections={all,<filename>,labels,none} and
-funique-basic-block-section-names.
LLVM Support for basic block sections is already enabled.
+ -fbasic-block-sections={all, <file>, labels, none} : Enables/Disables basic
block sections for all or a subset of basic blocks. "labels" only enables
basic block symbols.
+ -funique-basic-block-section-names: Enables unique section names for
basic block sections, disabled by default.
Differential Revision: https://reviews.llvm.org/D68049
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index ce038d7..6f11eca 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -937,10 +937,19 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK, Opts.TrapFuncName = std::string(Args.getLastArgValue(OPT_ftrap_function_EQ)); Opts.UseInitArray = !Args.hasArg(OPT_fno_use_init_array); - Opts.FunctionSections = Args.hasArg(OPT_ffunction_sections); + Opts.BBSections = + std::string(Args.getLastArgValue(OPT_fbasic_block_sections_EQ, "none")); + + // Basic Block Sections implies Function Sections. + Opts.FunctionSections = + Args.hasArg(OPT_ffunction_sections) || + (Opts.BBSections != "none" && Opts.BBSections != "labels"); + 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.UniqueBasicBlockSectionNames = + Args.hasArg(OPT_funique_basic_block_section_names); Opts.UniqueInternalLinkageNames = Args.hasArg(OPT_funique_internal_linkage_names); |