From: Fangrui Song Date: Sat, 29 Jun 2019 01:24:36 +0000 (+0000) Subject: [Driver] Fix style issues of --print-supported-cpus after D63105 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5aae33505419d937cd42841934795cd850684c3;p=clang [Driver] Fix style issues of --print-supported-cpus after D63105 Reviewed By: ziangwan Differential Revision: https://reviews.llvm.org/D63822 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@364704 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 2cc5cbe819..1d7a3836ef 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -2644,12 +2644,12 @@ def : Separate<["--"], "no-system-header-prefix">, Alias, Group; def target : Joined<["--"], "target=">, Flags<[DriverOption, CoreOption]>, HelpText<"Generate code for the given target">; -def _print_supported_cpus : Flag<["-", "--"], "print-supported-cpus">, +def print_supported_cpus : Flag<["-", "--"], "print-supported-cpus">, Group, Flags<[CC1Option, CoreOption]>, HelpText<"Print supported cpu models for the given target (if target is not specified," " it will print the supported cpus for the default target)">; -def mcpu_EQ_QUESTION : Flag<["-"], "mcpu=?">, Alias<_print_supported_cpus>; -def mtune_EQ_QUESTION : Flag<["-"], "mtune=?">, Alias<_print_supported_cpus>; +def mcpu_EQ_QUESTION : Flag<["-"], "mcpu=?">, Alias; +def mtune_EQ_QUESTION : Flag<["-"], "mtune=?">, Alias; def gcc_toolchain : Joined<["--"], "gcc-toolchain=">, Flags<[DriverOption]>, HelpText<"Use the gcc toolchain at the given directory">; def time : Flag<["-"], "time">, diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 57ead2d6eb..2201dcde49 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -280,6 +280,7 @@ phases::ID Driver::getFinalPhase(const DerivedArgList &DAL, // -{fsyntax-only,-analyze,emit-ast} only run up to the compiler. } else if ((PhaseArg = DAL.getLastArg(options::OPT_fsyntax_only)) || + (PhaseArg = DAL.getLastArg(options::OPT_print_supported_cpus)) || (PhaseArg = DAL.getLastArg(options::OPT_module_file_info)) || (PhaseArg = DAL.getLastArg(options::OPT_verify_pch)) || (PhaseArg = DAL.getLastArg(options::OPT_rewrite_objc)) || @@ -1673,7 +1674,7 @@ bool Driver::HandleImmediateArgs(const Compilation &C) { if (C.getArgs().hasArg(options::OPT_v) || C.getArgs().hasArg(options::OPT__HASH_HASH_HASH) || - C.getArgs().hasArg(options::OPT__print_supported_cpus)) { + C.getArgs().hasArg(options::OPT_print_supported_cpus)) { PrintVersion(C, llvm::errs()); SuppressMissingInputWarning = true; } @@ -3377,21 +3378,16 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args, Args.ClaimAllArgs(options::OPT_cl_compile_Group); } - // if the user specify --print-supported-cpus, or use -mcpu=?, or use - // -mtune=? (aliases), clang will only print out supported cpu names - // without doing compilation. - if (Arg *A = Args.getLastArg(options::OPT__print_supported_cpus)) { - // the compilation now has only two phases: Input and Compile - // use the --prints-supported-cpus flag as the dummy input to cc1 + // If --print-supported-cpus, -mcpu=? or -mtune=? is specified, build a custom + // Compile phase that prints out supported cpu models and quits. + if (Arg *A = Args.getLastArg(options::OPT_print_supported_cpus)) { + // Use the -mcpu=? flag as the dummy input to cc1. Actions.clear(); Action *InputAc = C.MakeAction(*A, types::TY_C); Actions.push_back( C.MakeAction(InputAc, types::TY_Nothing)); - // claim all the input files to prevent argument unused warnings - for (auto &I : Inputs) { - const Arg *InputArg = I.second; - InputArg->claim(); - } + for (auto &I : Inputs) + I.second->claim(); } // Claim ignored clang-cl options. diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index ddaf13ff0d..d1dce4641c 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -1767,7 +1767,7 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Opts.ShowHelp = Args.hasArg(OPT_help); Opts.ShowStats = Args.hasArg(OPT_print_stats); Opts.ShowTimers = Args.hasArg(OPT_ftime_report); - Opts.PrintSupportedCPUs = Args.hasArg(OPT__print_supported_cpus); + Opts.PrintSupportedCPUs = Args.hasArg(OPT_print_supported_cpus); Opts.TimeTrace = Args.hasArg(OPT_ftime_trace); Opts.ShowVersion = Args.hasArg(OPT_version); Opts.ASTMergeFiles = Args.getAllArgValues(OPT_ast_merge); diff --git a/test/Driver/print-supported-cpus.c b/test/Driver/print-supported-cpus.c index 10985fea8a..468382cd95 100644 --- a/test/Driver/print-supported-cpus.c +++ b/test/Driver/print-supported-cpus.c @@ -1,35 +1,27 @@ -// Test that the --print-supported-cpus flag works -// Also test its aliases: -mcpu=? and -mtune=? +// Test that --print-supported-cpus lists supported CPU models. // REQUIRES: x86-registered-target // REQUIRES: arm-registered-target -// RUN: %clang --target=x86_64-unknown-linux-gnu \ -// RUN: --print-supported-cpus 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-X86 +// RUN: %clang --target=x86_64-unknown-linux-gnu --print-supported-cpus 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-X86 + +// Test -mcpu=? and -mtune=? alises. +// RUN: %clang --target=x86_64-unknown-linux-gnu -mcpu=? 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-X86 + +// RUN: %clang --target=x86_64-unknown-linux-gnu -mtune=? -fuse-ld=dummy 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-X86 + +// CHECK-NOT: warning: argument unused during compilation // CHECK-X86: Target: x86_64-unknown-linux-gnu // CHECK-X86: corei7 // CHECK-X86: Use -mcpu or -mtune to specify the target's processor. -// RUN: %clang --target=x86_64-unknown-linux-gnu \ -// RUN: -mcpu=? 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-X86-MCPU -// CHECK-X86-MCPU: Target: x86_64-unknown-linux-gnu -// CHECK-X86-MCPU: corei7 -// CHECK-X86-MCPU: Use -mcpu or -mtune to specify the target's processor. +// RUN: %clang --target=arm-unknown-linux-android --print-supported-cpus 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-ARM -// RUN: %clang --target=arm-unknown-linux-android \ -// RUN: --print-supported-cpus 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-ARM // CHECK-ARM: Target: arm-unknown-linux-android // CHECK-ARM: cortex-a73 // CHECK-ARM: cortex-a75 // CHECK-ARM: Use -mcpu or -mtune to specify the target's processor. - -// RUN: %clang --target=arm-unknown-linux-android \ -// RUN: -mtune=? 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-ARM-MTUNE -// CHECK-ARM-MTUNE: Target: arm-unknown-linux-android -// CHECK-ARM-MTUNE: cortex-a73 -// CHECK-ARM-MTUNE: cortex-a75 -// CHECK-ARM-MTUNE: Use -mcpu or -mtune to specify the target's processor. diff --git a/tools/driver/cc1_main.cpp b/tools/driver/cc1_main.cpp index 01a4248933..7315a13570 100644 --- a/tools/driver/cc1_main.cpp +++ b/tools/driver/cc1_main.cpp @@ -169,8 +169,8 @@ static void ensureSufficientStack() { static void ensureSufficientStack() {} #endif -/// print supported cpus of the given target -int PrintSupportedCPUs(std::string TargetStr) { +/// Print supported cpus of the given target. +static int PrintSupportedCPUs(std::string TargetStr) { std::string Error; const llvm::Target *TheTarget = llvm::TargetRegistry::lookupTarget(TargetStr, Error); @@ -219,10 +219,9 @@ int cc1_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { if (Clang->getFrontendOpts().TimeTrace) llvm::timeTraceProfilerInitialize(); - // --print-supported-cpus takes priority over the actual compilation - if (Clang->getFrontendOpts().PrintSupportedCPUs) { + // --print-supported-cpus takes priority over the actual compilation. + if (Clang->getFrontendOpts().PrintSupportedCPUs) return PrintSupportedCPUs(Clang->getTargetOpts().Triple); - } // Infer the builtin include path if unspecified. if (Clang->getHeaderSearchOpts().UseBuiltinIncludes &&