aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorSriraman Tallam <tmsriram@google.com>2020-06-01 23:17:29 -0700
committerSriraman Tallam <tmsriram@google.com>2020-06-02 00:23:32 -0700
commite0bca46b0854143b2f93b60aac99e669c9776979 (patch)
tree36085eb2e27ac79be88b7ddd1add1552925acd86 /clang/lib/Frontend/CompilerInvocation.cpp
parentfa818ded24413c8b9722dd564b04d9ffc50743b5 (diff)
downloadllvm-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.cpp11
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);