From e81b42fde98c5c2fb023d9cca5c79ed10dfde7ef Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Thu, 10 Jul 2014 02:13:29 +0000 Subject: [PATCH] Prevent link warnings due to -Wframe-larger-than= Although this is nominally a -W option, we actually handle it in the driver exactly as an f-group flag that's translated directly to -mllvm. That means f_Group (and unintuitively, not W_Group) has the semantics we want to make it behave like a standard warning flag: no automatic forwarding, no warning for link invocations and compile-only. Silences diagnostics like: [691/1545] Linking CXX executable bin/llvm-diff clang-3.5: warning: argument unused during compilation: '-Wframe-larger-than=2048' (Hopefully we can move towards handling these in the frontend but that'll require some infrastructure work.) llvm-svn: 212670 --- clang/include/clang/Driver/Options.td | 3 ++- clang/test/Misc/backend-stack-frame-diagnostics.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index f9cb616..d25aaa6 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -862,10 +862,11 @@ def Wlarge_by_value_copy_def : Flag<["-"], "Wlarge-by-value-copy">, "in bytes than a given value">, Flags<[HelpHidden]>; def Wlarge_by_value_copy_EQ : Joined<["-"], "Wlarge-by-value-copy=">, Flags<[CC1Option]>; +// These "special" warning flags are effectively processed as f_Group flags by the driver: // Just silence warnings about -Wlarger-than for now. def Wlarger_than_EQ : Joined<["-"], "Wlarger-than=">, Group; def Wlarger_than_ : Joined<["-"], "Wlarger-than-">, Alias; -def Wframe_larger_than_EQ : Joined<["-"], "Wframe-larger-than=">, Flags<[DriverOption]>; +def Wframe_larger_than_EQ : Joined<["-"], "Wframe-larger-than=">, Group, Flags<[DriverOption]>; def : Flag<["-"], "fterminated-vtables">, Alias; def fthreadsafe_statics : Flag<["-"], "fthreadsafe-statics">, Group; diff --git a/clang/test/Misc/backend-stack-frame-diagnostics.cpp b/clang/test/Misc/backend-stack-frame-diagnostics.cpp index 4694299..1d865e7 100644 --- a/clang/test/Misc/backend-stack-frame-diagnostics.cpp +++ b/clang/test/Misc/backend-stack-frame-diagnostics.cpp @@ -6,6 +6,10 @@ // * The driver passes the option through to the backend. // * The frontend diagnostic handler 'demangles' and resolves the correct function definition. +// Test that link invocations don't emit an "argument unused during compilation" diagnostic. +// RUN: touch %t.o +// RUN: %clang -Werror -Wframe-larger-than=0 %t.o -### 2>&1 | not grep ' error: ' + // TODO: Support rich backend diagnostics for Objective-C methods. // Backend diagnostics aren't suppressed in system headers because such results -- 2.7.4