From 7178f6e72c86bf267ed4eaf856870d8fd3cf0ad0 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191429 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/Options.td | 31 +++++++++++++++++++++++++++++++ test/Driver/clang_f_opts.c | 23 +++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index d03ec94d13..04935ebbee 100644 --- a/include/clang/Driver/Options.td +++ b/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/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c index 780b727de0..80ff29e49a 100644 --- a/test/Driver/clang_f_opts.c +++ b/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 -- 2.40.0