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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits