snehasish created this revision.
snehasish added reviewers: tmsriram, rahmanl.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
snehasish requested review of this revision.
Basic block sections is untested on other platforms and binary formats apart
from x86,elf. This patch silently drops the flag if the platform and binary
format is not compatible.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D87426
Files:
clang/lib/Driver/ToolChains/Clang.cpp
clang/test/Driver/fbasic-block-sections.c
Index: clang/test/Driver/fbasic-block-sections.c
===================================================================
--- clang/test/Driver/fbasic-block-sections.c
+++ clang/test/Driver/fbasic-block-sections.c
@@ -2,8 +2,10 @@
// RUN: %clang -### -fbasic-block-sections=all %s -S 2>&1 | FileCheck
-check-prefix=CHECK-OPT-ALL %s
// RUN: %clang -### -fbasic-block-sections=list=%s %s -S 2>&1 | FileCheck
-check-prefix=CHECK-OPT-LIST %s
// RUN: %clang -### -fbasic-block-sections=labels %s -S 2>&1 | FileCheck
-check-prefix=CHECK-OPT-LABELS %s
+// RUN: %clang -### -target arm-unknown-linux -fbasic-block-sections=all %s -S
2>&1 | FileCheck -check-prefix=CHECK-NOOPT %s
//
-// CHECK-OPT-NONE: "-fbasic-block-sections=none"
-// CHECK-OPT-ALL: "-fbasic-block-sections=all"
-// CHECK-OPT-LIST: "-fbasic-block-sections={{[^ ]*}}fbasic-block-sections.c"
+// CHECK-OPT-NONE: "-fbasic-block-sections=none"
+// CHECK-OPT-ALL: "-fbasic-block-sections=all"
+// CHECK-OPT-LIST: "-fbasic-block-sections={{[^ ]*}}fbasic-block-sections.c"
// CHECK-OPT-LABELS: "-fbasic-block-sections=labels"
+// CHECK-NOOPT-NOT: "-fbasic-block-sections"
Index: clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -4879,14 +4879,16 @@
CmdArgs.push_back("-ffunction-sections");
}
- if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) {
- StringRef Val = A->getValue();
- if (Val != "all" && Val != "labels" && Val != "none" &&
- !(Val.startswith("list=") && llvm::sys::fs::exists(Val.substr(5))))
- D.Diag(diag::err_drv_invalid_value)
- << A->getAsString(Args) << A->getValue();
- else
- A->render(Args, CmdArgs);
+ if (Triple.isX86() && Triple.isOSBinFormatELF()) {
+ if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) {
+ StringRef Val = A->getValue();
+ if (Val != "all" && Val != "labels" && Val != "none" &&
+ !(Val.startswith("list=") && llvm::sys::fs::exists(Val.substr(5))))
+ D.Diag(diag::err_drv_invalid_value)
+ << A->getAsString(Args) << A->getValue();
+ else
+ A->render(Args, CmdArgs);
+ }
}
if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections,
Index: clang/test/Driver/fbasic-block-sections.c
===================================================================
--- clang/test/Driver/fbasic-block-sections.c
+++ clang/test/Driver/fbasic-block-sections.c
@@ -2,8 +2,10 @@
// RUN: %clang -### -fbasic-block-sections=all %s -S 2>&1 | FileCheck -check-prefix=CHECK-OPT-ALL %s
// RUN: %clang -### -fbasic-block-sections=list=%s %s -S 2>&1 | FileCheck -check-prefix=CHECK-OPT-LIST %s
// RUN: %clang -### -fbasic-block-sections=labels %s -S 2>&1 | FileCheck -check-prefix=CHECK-OPT-LABELS %s
+// RUN: %clang -### -target arm-unknown-linux -fbasic-block-sections=all %s -S 2>&1 | FileCheck -check-prefix=CHECK-NOOPT %s
//
-// CHECK-OPT-NONE: "-fbasic-block-sections=none"
-// CHECK-OPT-ALL: "-fbasic-block-sections=all"
-// CHECK-OPT-LIST: "-fbasic-block-sections={{[^ ]*}}fbasic-block-sections.c"
+// CHECK-OPT-NONE: "-fbasic-block-sections=none"
+// CHECK-OPT-ALL: "-fbasic-block-sections=all"
+// CHECK-OPT-LIST: "-fbasic-block-sections={{[^ ]*}}fbasic-block-sections.c"
// CHECK-OPT-LABELS: "-fbasic-block-sections=labels"
+// CHECK-NOOPT-NOT: "-fbasic-block-sections"
Index: clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -4879,14 +4879,16 @@
CmdArgs.push_back("-ffunction-sections");
}
- if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) {
- StringRef Val = A->getValue();
- if (Val != "all" && Val != "labels" && Val != "none" &&
- !(Val.startswith("list=") && llvm::sys::fs::exists(Val.substr(5))))
- D.Diag(diag::err_drv_invalid_value)
- << A->getAsString(Args) << A->getValue();
- else
- A->render(Args, CmdArgs);
+ if (Triple.isX86() && Triple.isOSBinFormatELF()) {
+ if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) {
+ StringRef Val = A->getValue();
+ if (Val != "all" && Val != "labels" && Val != "none" &&
+ !(Val.startswith("list=") && llvm::sys::fs::exists(Val.substr(5))))
+ D.Diag(diag::err_drv_invalid_value)
+ << A->getAsString(Args) << A->getValue();
+ else
+ A->render(Args, CmdArgs);
+ }
}
if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections,
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits