forked from OSchip/llvm-project
Warn that -O4 is the same as -O3.
We error on -O5 and higher. While it is tempting to do the same for -O4, I agree with Jordan Rose: we should warn for a release at least first. llvm-svn: 189369
This commit is contained in:
parent
46e59b05eb
commit
ad70d9683e
|
@ -112,6 +112,7 @@ def err_drv_unknown_objc_runtime : Error<
|
|||
def err_drv_emit_llvm_link : Error<
|
||||
"-emit-llvm cannot be used when linking">;
|
||||
|
||||
def warn_O4_is_O3 : Warning<"-O4 is equivalent to -O3">, InGroup<Deprecated>;
|
||||
def warn_c_kext : Warning<
|
||||
"ignoring -fapple-kext which is valid for C++ and Objective-C++ only">;
|
||||
def warn_drv_input_file_unused : Warning<
|
||||
|
|
|
@ -214,13 +214,13 @@ def MT : JoinedOrSeparate<["-"], "MT">, Group<M_Group>, Flags<[CC1Option]>,
|
|||
def Mach : Flag<["-"], "Mach">;
|
||||
def M : Flag<["-"], "M">, Group<M_Group>;
|
||||
def O0 : Flag<["-"], "O0">, Group<O_Group>, Flags<[CC1Option]>;
|
||||
def O4 : Flag<["-"], "O4">, Group<O_Group>, Flags<[CC1Option]>;
|
||||
def ObjCXX : Flag<["-"], "ObjC++">, Flags<[DriverOption]>,
|
||||
HelpText<"Treat source input files as Objective-C++ inputs">;
|
||||
def ObjC : Flag<["-"], "ObjC">, Flags<[DriverOption]>,
|
||||
HelpText<"Treat source input files as Objective-C inputs">;
|
||||
def O : Joined<["-"], "O">, Group<O_Group>, Flags<[CC1Option]>;
|
||||
def O_flag : Flag<["-"], "O">, Flags<[CC1Option]>, Alias<O>, AliasArgs<["2"]>;
|
||||
def O4 : Flag<["-"], "O4">, Alias<O>, AliasArgs<["3"]>;
|
||||
def Ofast : Joined<["-"], "Ofast">, Group<O_Group>, Flags<[CC1Option]>;
|
||||
def P : Flag<["-"], "P">, Flags<[CC1Option]>,
|
||||
HelpText<"Disable linemarker output in -E mode">;
|
||||
|
|
|
@ -1863,7 +1863,8 @@ static bool isOptimizationLevelFast(const ArgList &Args) {
|
|||
/// \brief Vectorize at all optimization levels greater than 1 except for -Oz.
|
||||
static bool shouldEnableVectorizerAtOLevel(const ArgList &Args) {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
|
||||
if (A->getOption().matches(options::OPT_Ofast))
|
||||
if (A->getOption().matches(options::OPT_O4) ||
|
||||
A->getOption().matches(options::OPT_Ofast))
|
||||
return true;
|
||||
|
||||
if (A->getOption().matches(options::OPT_O0))
|
||||
|
@ -2622,8 +2623,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
// preprocessed inputs and configure concludes that -fPIC is not supported.
|
||||
Args.ClaimAllArgs(options::OPT_D);
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_O_Group))
|
||||
A->render(Args, CmdArgs);
|
||||
// Manually translate -O4 to -O3; let clang reject others.
|
||||
if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
|
||||
if (A->getOption().matches(options::OPT_O4)) {
|
||||
CmdArgs.push_back("-O3");
|
||||
D.Diag(diag::warn_O4_is_O3);
|
||||
} else {
|
||||
A->render(Args, CmdArgs);
|
||||
}
|
||||
}
|
||||
|
||||
// Don't warn about unused -flto. This can happen when we're preprocessing or
|
||||
// precompiling.
|
||||
|
|
|
@ -97,4 +97,5 @@
|
|||
// CHECK-NO-M-PASCAL-STRINGS-NOT: "-fpascal-strings"
|
||||
|
||||
// RUN: %clang -### -S -O4 %s 2>&1 | FileCheck -check-prefix=CHECK-MAX-O %s
|
||||
// CHECK-MAX-O: warning: -O4 is equivalent to -O3
|
||||
// CHECK-MAX-O: -O3
|
||||
|
|
Loading…
Reference in New Issue