Ignore some -f options that are supported by gcc.

It is possible that we should say some of these are unsupported, but this is
not any worse than the old behavior of ignoring all unknown -f options.

llvm-svn: 191429
This commit is contained in:
Rafael Espindola 2013-09-26 13:10:14 +00:00
parent b4ad2f396a
commit fa74eee737
2 changed files with 54 additions and 0 deletions

View File

@ -1364,6 +1364,37 @@ def Z_reserved_lib_stdcxx : Flag<["-"], "Z-reserved-lib-stdc++">,
def Z_reserved_lib_cckext : Flag<["-"], "Z-reserved-lib-cckext">,
Flags<[LinkerInput, NoArgumentUnused, Unsupported]>, Group<reserved_lib_Group>;
// Ignored options
// FIXME: multiclasess produce suffixes, not prefixes. This is fine for now
// since it is only used in ignored options.
multiclass BooleanFFlag<list<string> prefixes, string name> {
def _f : Flag<["-"], "f"#name>;
def _fno : Flag<["-"], "fno-"#name>;
}
def fprofile_dir : Joined<["-"], "fprofile-dir=">, Group<clang_ignored_f_Group>;
defm profile_use : BooleanFFlag<["-"], "profile-use">, Group<clang_ignored_f_Group>;
def fprofile_use_eq : Joined<["-"], "fprofile-use=">, Group<clang_ignored_f_Group>;
defm falign_functions : BooleanFFlag<["-"], "align-functions">, Group<clang_ignored_f_Group>;
def falign_functions_eq : Joined<["-"], "falign-functions=">, Group<clang_ignored_f_Group>;
defm tracer : BooleanFFlag<["-"], "tracer">, Group<clang_ignored_f_Group>;
defm unroll_all_loops : BooleanFFlag<["-"], "unroll-all-loops">, Group<clang_ignored_f_Group>;
defm sse : BooleanFFlag<["-"], "see">, Group<clang_ignored_f_Group>;
defm rounding_math : BooleanFFlag<["-"], "rounding-math">, Group<clang_ignored_f_Group>;
defm profile_values : BooleanFFlag<["-"], "profile-values">, Group<clang_ignored_f_Group>;
defm profile_correction : BooleanFFlag<["-"], "profile-correction">, Group<clang_ignored_f_Group>;
defm prefetch_loop_arrays : BooleanFFlag<["-"], "prefetch-loop-arrays">, Group<clang_ignored_f_Group>;
defm permissive : BooleanFFlag<["-"], "permissive">, Group<clang_ignored_f_Group>;
defm non_call_exceptions : BooleanFFlag<["-"], "non-call-exceptions">, Group<clang_ignored_f_Group>;
defm ivopts : BooleanFFlag<["-"], "ivopts">, Group<clang_ignored_f_Group>;
defm ident : BooleanFFlag<["-"], "ident">, Group<clang_ignored_f_Group>;
defm gcse : BooleanFFlag<["-"], "gcse">, Group<clang_ignored_f_Group>;
defm eliminate_unused_debug_types : BooleanFFlag<["-"], "eliminate-unused-debug-types">, Group<clang_ignored_f_Group>;
defm float_store : BooleanFFlag<["-"], "float-store">, Group<clang_ignored_f_Group>;
include "CC1Options.td"
include "CLCompatOptions.td"

View File

@ -99,3 +99,26 @@
// 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
// Test that we don't error on these.
// RUN: %clang -### -S \
// RUN: -falign-functions -falign-functions=2 -fno-align-functions \
// RUN: -fasynchronous-unwind-tables -fno-asynchronous-unwind-tables \
// RUN: -fbuiltin -fno-builtin \
// RUN: -ffloat-store -fno-float-store \
// RUN: -feliminate-unused-debug-types -fno-eliminate-unused-debug-types \
// RUN: -fgcse -fno-gcse \
// RUN: -fident -fno-ident \
// RUN: -fivopts -fno-ivopts \
// RUN: -fnon-call-exceptions -fno-non-call-exceptions \
// RUN: -fpermissive -fno-permissive \
// RUN: -fprefetch-loop-arrays -fno-prefetch-loop-arrays \
// RUN: -fprofile-correction -fno-profile-correction \
// RUN: -fprofile-dir=bar \
// RUN: -fprofile-use -fprofile-use=zed -fno-profile-use \
// RUN: -fprofile-values -fno-profile-values \
// RUN: -frounding-math -fno-rounding-math \
// RUN: -fsee -fno-see \
// RUN: -ftracer -fno-tracer \
// RUN: -funroll-all-loops -fno-unroll-all-loops \
// RUN: %s