From 5ecb6106a89514b83481e6a3abe4de2d76591a99 Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Mon, 9 Jun 2014 23:59:38 +0000 Subject: [PATCH] Make '-Werror=frame-larger-than=' and associated diagnostic pragmas GCC-compatible It turns out the trailing '=' really is part of the option name spelling and treating it as such gets us compatible with GCC's -Werror= and pragmas. (GCC doesn't appear to support any -Wno- form for this diagnostic but we do.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210503 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/DiagnosticFrontendKinds.td | 4 ++-- include/clang/Basic/DiagnosticGroups.td | 2 +- test/Frontend/backend-diagnostic.c | 4 ++-- test/Misc/backend-stack-frame-diagnostics.cpp | 10 ++++++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/clang/Basic/DiagnosticFrontendKinds.td b/include/clang/Basic/DiagnosticFrontendKinds.td index 3527e8e3de..023fcb6235 100644 --- a/include/clang/Basic/DiagnosticFrontendKinds.td +++ b/include/clang/Basic/DiagnosticFrontendKinds.td @@ -23,8 +23,8 @@ def err_fe_cannot_link_module : Error<"cannot link module '%0': %1">, DefaultFatal; def warn_fe_frame_larger_than : Warning<"stack frame size of %0 bytes in %q1">, - CatBackend, InGroup; -def warn_fe_backend_frame_larger_than: Warning<"%0">, CatBackend, InGroup; + CatBackend, InGroup; +def warn_fe_backend_frame_larger_than: Warning<"%0">, CatBackend, InGroup; def err_fe_backend_frame_larger_than: Error<"%0">, CatBackend; def note_fe_backend_frame_larger_than: Note<"%0">, CatBackend; diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index e60575625c..2c1cf0ff4b 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -686,7 +686,7 @@ def OpenMPLoopForm : DiagGroup<"openmp-loop-form">; // Backend warnings. def BackendInlineAsm : DiagGroup<"inline-asm">; -def BackendFrameLargerThan : DiagGroup<"frame-larger-than">; +def BackendFrameLargerThanEQ : DiagGroup<"frame-larger-than=">; def BackendPlugin : DiagGroup<"backend-plugin">; def RemarkBackendPlugin : DiagGroup<"remark-backend-plugin">; def BackendOptimizationRemark : DiagGroup<"pass">; diff --git a/test/Frontend/backend-diagnostic.c b/test/Frontend/backend-diagnostic.c index d6fe48bc9c..1fe4fdb5b9 100644 --- a/test/Frontend/backend-diagnostic.c +++ b/test/Frontend/backend-diagnostic.c @@ -6,9 +6,9 @@ // // RUN: not %clang_cc1 %s -mllvm -warn-stack-size=0 -no-integrated-as -S -o - -triple=i386-apple-darwin 2> %t.err // RUN: FileCheck < %t.err %s --check-prefix=REGULAR --check-prefix=ASM -// RUN: not %clang_cc1 %s -mllvm -warn-stack-size=0 -no-integrated-as -S -o - -triple=i386-apple-darwin -Werror=frame-larger-than 2> %t.err +// RUN: not %clang_cc1 %s -mllvm -warn-stack-size=0 -no-integrated-as -S -o - -triple=i386-apple-darwin -Werror=frame-larger-than= 2> %t.err // RUN: FileCheck < %t.err %s --check-prefix=PROMOTE --check-prefix=ASM -// RUN: not %clang_cc1 %s -mllvm -warn-stack-size=0 -no-integrated-as -S -o - -triple=i386-apple-darwin -Wno-frame-larger-than 2> %t.err +// RUN: not %clang_cc1 %s -mllvm -warn-stack-size=0 -no-integrated-as -S -o - -triple=i386-apple-darwin -Wno-frame-larger-than= 2> %t.err // RUN: FileCheck < %t.err %s --check-prefix=IGNORE --check-prefix=ASM // // RUN: %clang_cc1 %s -S -o - -triple=i386-apple-darwin -verify -no-integrated-as diff --git a/test/Misc/backend-stack-frame-diagnostics.cpp b/test/Misc/backend-stack-frame-diagnostics.cpp index 19303594b2..c14d1a2a49 100644 --- a/test/Misc/backend-stack-frame-diagnostics.cpp +++ b/test/Misc/backend-stack-frame-diagnostics.cpp @@ -22,6 +22,16 @@ void frameSizeWarning(); void frameSizeWarning(int) {} +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wframe-larger-than=" +// expected-warning@+1 {{unknown warning group '-Wframe-larger-than'}} +#pragma GCC diagnostic ignored "-Wframe-larger-than" +void frameSizeWarningIgnored() { + char buffer[80]; + doIt(buffer); +} +#pragma GCC diagnostic pop + void frameSizeLocalClassWarning() { struct S { S() { // expected-warning-re {{stack frame size of {{[0-9]+}} bytes in function 'frameSizeLocalClassWarning()::S::S'}} -- 2.40.0