https://github.com/MaskRay created https://github.com/llvm/llvm-project/pull/113528
The Flag form options are accepted and silently ignored, which can be surprising. The Eq form is supposed to be used instead, e.g. -fprofile-sample-use=a.prof. Since we does not intend to support GCC's "fbaata.afdo" filename, just remove the two options. While here, clean up code as -fauto-profile= is an alias. >From 7cd9c8a680803b28e59135b2dd575d268bbebd7e Mon Sep 17 00:00:00 2001 From: Fangrui Song <i...@maskray.me> Date: Wed, 23 Oct 2024 23:35:03 -0700 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?= =?UTF-8?q?l=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.5-bogner --- clang/include/clang/Driver/Options.td | 4 ---- clang/lib/Driver/ToolChains/CommonArgs.cpp | 15 +++++---------- clang/test/Driver/clang_f_opts.c | 3 --- clang/test/Driver/fprofile-sample-use.c | 5 +++++ 4 files changed, 10 insertions(+), 17 deletions(-) create mode 100644 clang/test/Driver/fprofile-sample-use.c diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 2ddb2f5312148e..67a4b69b747767 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1729,8 +1729,6 @@ defm gnu_inline_asm : BoolFOption<"gnu-inline-asm", "Disable GNU style inline asm">, PosFlag<SetTrue>>; -def fprofile_sample_use : Flag<["-"], "fprofile-sample-use">, Group<f_Group>, - Visibility<[ClangOption, CLOption]>; def fno_profile_sample_use : Flag<["-"], "fno-profile-sample-use">, Group<f_Group>, Visibility<[ClangOption, CLOption]>; def fprofile_sample_use_EQ : Joined<["-"], "fprofile-sample-use=">, @@ -1756,8 +1754,6 @@ def fsample_profile_use_profi : Flag<["-"], "fsample-profile-use-profi">, basic block counts to branch probabilites to fix them by extended and re-engineered classic MCMF (min-cost max-flow) approach.}]>; def fno_profile_sample_accurate : Flag<["-"], "fno-profile-sample-accurate">, Group<f_Group>; -def fauto_profile : Flag<["-"], "fauto-profile">, Group<f_Group>, - Alias<fprofile_sample_use>; def fno_auto_profile : Flag<["-"], "fno-auto-profile">, Group<f_Group>, Alias<fno_profile_sample_use>; def fauto_profile_EQ : Joined<["-"], "fauto-profile=">, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 91605a67a37fc0..c4c14b2d6870c8 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1758,18 +1758,13 @@ Arg *tools::getLastProfileUseArg(const ArgList &Args) { Arg *tools::getLastProfileSampleUseArg(const ArgList &Args) { auto *ProfileSampleUseArg = Args.getLastArg( - options::OPT_fprofile_sample_use, options::OPT_fprofile_sample_use_EQ, - options::OPT_fauto_profile, options::OPT_fauto_profile_EQ, - options::OPT_fno_profile_sample_use, options::OPT_fno_auto_profile); - - if (ProfileSampleUseArg && - (ProfileSampleUseArg->getOption().matches( - options::OPT_fno_profile_sample_use) || - ProfileSampleUseArg->getOption().matches(options::OPT_fno_auto_profile))) + options::OPT_fprofile_sample_use_EQ, options::OPT_fno_profile_sample_use); + + if (ProfileSampleUseArg && (ProfileSampleUseArg->getOption().matches( + options::OPT_fno_profile_sample_use))) return nullptr; - return Args.getLastArg(options::OPT_fprofile_sample_use_EQ, - options::OPT_fauto_profile_EQ); + return Args.getLastArg(options::OPT_fprofile_sample_use_EQ); } const char *tools::RelocationModelName(llvm::Reloc::Model Model) { diff --git a/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c index fd15552715cb35..77e737db8158b4 100644 --- a/clang/test/Driver/clang_f_opts.c +++ b/clang/test/Driver/clang_f_opts.c @@ -71,9 +71,6 @@ // RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-auto-profile %s 2>&1 | FileCheck -check-prefix=CHECK-NO-AUTO-PROFILE %s // CHECK-NO-AUTO-PROFILE-NOT: "-fprofile-sample-use={{.*}}/file.prof" -// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-profile-sample-use -fauto-profile %s 2>&1 | FileCheck -check-prefix=CHECK-AUTO-PROFILE %s -// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-auto-profile -fprofile-sample-use %s 2>&1 | FileCheck -check-prefix=CHECK-AUTO-PROFILE %s - // RUN: %clang -### -S -fprofile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-LLVM %s // RUN: %clang -### -S -fprofile-instr-generate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE %s // RUN: %clang -### -S -fprofile-generate=/some/dir %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-DIR %s diff --git a/clang/test/Driver/fprofile-sample-use.c b/clang/test/Driver/fprofile-sample-use.c new file mode 100644 index 00000000000000..7c8813a83785ce --- /dev/null +++ b/clang/test/Driver/fprofile-sample-use.c @@ -0,0 +1,5 @@ +/// GCC -fauto-profile (without =) is rejected. +/// -fprofile-sample-use without = is rejected as well. +// RUN: not %clang -### -S -fauto-profile -fprofile-sample-use %s 2>&1 | FileCheck %s --check-prefix=ERR +// ERR: error: unknown argument: '-fauto-profile' +// ERR: error: unknown argument: '-fprofile-sample-use' _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits