From fa74eee737f793c841faf8376f1eee75405e8cdf Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 26 Sep 2013 13:10:14 +0000 Subject: [PATCH] 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 --- clang/include/clang/Driver/Options.td | 31 +++++++++++++++++++++++++++ clang/test/Driver/clang_f_opts.c | 23 ++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index d03ec94d136b..04935ebbeeac 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -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; +// Ignored options +// FIXME: multiclasess produce suffixes, not prefixes. This is fine for now +// since it is only used in ignored options. +multiclass BooleanFFlag prefixes, string name> { + def _f : Flag<["-"], "f"#name>; + def _fno : Flag<["-"], "fno-"#name>; +} + +def fprofile_dir : Joined<["-"], "fprofile-dir=">, Group; + +defm profile_use : BooleanFFlag<["-"], "profile-use">, Group; +def fprofile_use_eq : Joined<["-"], "fprofile-use=">, Group; + +defm falign_functions : BooleanFFlag<["-"], "align-functions">, Group; +def falign_functions_eq : Joined<["-"], "falign-functions=">, Group; + +defm tracer : BooleanFFlag<["-"], "tracer">, Group; +defm unroll_all_loops : BooleanFFlag<["-"], "unroll-all-loops">, Group; +defm sse : BooleanFFlag<["-"], "see">, Group; +defm rounding_math : BooleanFFlag<["-"], "rounding-math">, Group; +defm profile_values : BooleanFFlag<["-"], "profile-values">, Group; +defm profile_correction : BooleanFFlag<["-"], "profile-correction">, Group; +defm prefetch_loop_arrays : BooleanFFlag<["-"], "prefetch-loop-arrays">, Group; +defm permissive : BooleanFFlag<["-"], "permissive">, Group; +defm non_call_exceptions : BooleanFFlag<["-"], "non-call-exceptions">, Group; +defm ivopts : BooleanFFlag<["-"], "ivopts">, Group; +defm ident : BooleanFFlag<["-"], "ident">, Group; +defm gcse : BooleanFFlag<["-"], "gcse">, Group; +defm eliminate_unused_debug_types : BooleanFFlag<["-"], "eliminate-unused-debug-types">, Group; +defm float_store : BooleanFFlag<["-"], "float-store">, Group; + include "CC1Options.td" include "CLCompatOptions.td" diff --git a/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c index 780b727de051..80ff29e49a73 100644 --- a/clang/test/Driver/clang_f_opts.c +++ b/clang/test/Driver/clang_f_opts.c @@ -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