From 85698c8d7ba1073ea1a2025a6166d8e52835c9dd Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Tue, 20 Aug 2013 22:44:32 +0000 Subject: Remove Extension warning for GNU local labels. We generally don't warn about extensions involving keywords reserved for the implementation, so we shouldn't warn here either: the standard doesn't require it, and it doesn't provide useful information to the user. llvm-svn: 188840 --- clang/include/clang/Basic/DiagnosticGroups.td | 3 +-- clang/include/clang/Basic/DiagnosticParseKinds.td | 2 -- clang/lib/Parse/ParseStmt.cpp | 1 - clang/test/Sema/gnu-flags.c | 20 ++------------------ 4 files changed, 3 insertions(+), 23 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index f57d70c89cf..e46182badcf 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -168,7 +168,6 @@ def : DiagGroup<"init-self">; def : DiagGroup<"inline">; def : DiagGroup<"invalid-pch">; def GNULabelsAsValue : DiagGroup<"gnu-label-as-value">; -def GNULocalLabel : DiagGroup<"gnu-local-label">; def LiteralRange : DiagGroup<"literal-range">; def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args", [CXX98CompatLocalTypeTemplateArgs]>; @@ -540,7 +539,7 @@ def GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUCaseRange, GNUConditionalOmittedOperand, GNUDesignator, GNUEmptyInitializer, VLAExtension, - GNULabelsAsValue, GNULocalLabel, + GNULabelsAsValue, GNUStatementExpression, GNUStaticFloatInit, ZeroLengthArray]>; // A warning group for warnings about code that clang accepts but gcc doesn't. diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index 4d7dc704628..5c4a21972b4 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -122,8 +122,6 @@ def ext_gnu_indirect_goto : Extension< "use of GNU indirect-goto extension">, InGroup; def ext_gnu_address_of_label : Extension< "use of GNU address-of-label extension">, InGroup; -def ext_gnu_local_label : Extension< - "use of GNU locally declared label extension">, InGroup; def ext_gnu_statement_expr : Extension< "use of GNU statement expression extension">, InGroup; def ext_gnu_conditional_expr : Extension< diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index 3b6a2656099..0638e915fe3 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -797,7 +797,6 @@ StmtResult Parser::ParseCompoundStatementBody(bool isStmtExpr) { // only allowed at the start of a compound stmt regardless of the language. while (Tok.is(tok::kw___label__)) { SourceLocation LabelLoc = ConsumeToken(); - Diag(LabelLoc, diag::ext_gnu_local_label); SmallVector DeclsInGroup; while (1) { diff --git a/clang/test/Sema/gnu-flags.c b/clang/test/Sema/gnu-flags.c index 4ca965b7ddf..ff5fdea5aa8 100644 --- a/clang/test/Sema/gnu-flags.c +++ b/clang/test/Sema/gnu-flags.c @@ -2,10 +2,10 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wgnu // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL \ // RUN: -Wgnu-alignof-expression -Wgnu-case-range -Wgnu-complex-integer -Wgnu-conditional-omitted-operand \ -// RUN: -Wgnu-empty-initializer -Wgnu-label-as-value -Wgnu-local-label -Wgnu-statement-expression +// RUN: -Wgnu-empty-initializer -Wgnu-label-as-value -Wgnu-statement-expression // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wgnu \ // RUN: -Wno-gnu-alignof-expression -Wno-gnu-case-range -Wno-gnu-complex-integer -Wno-gnu-conditional-omitted-operand \ -// RUN: -Wno-gnu-empty-initializer -Wno-gnu-label-as-value -Wno-gnu-local-label -Wno-gnu-statement-expression +// RUN: -Wno-gnu-empty-initializer -Wno-gnu-label-as-value -Wno-gnu-statement-expression // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -Wgnu-alignof-expression // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wno-gnu-alignof-expression // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -DCASERANGE -Wgnu-case-range @@ -13,7 +13,6 @@ // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -DOMITTEDOPERAND -Wgnu-conditional-omitted-operand // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -DEMPTYINIT -Wgnu-empty-initializer // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -DLABELVALUE -Wgnu-label-as-value -// RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -DLOCALLABEL -Wgnu-local-label // RUNNOT: %clang_cc1 -fsyntax-only -verify %s -DALIGNOF -DSTATEMENTEXP -Wgnu-statement-expression #if NONE @@ -73,21 +72,6 @@ foo: goto *ptr; } - -#if ALL || LOCALLABEL -// expected-warning@+5 {{use of GNU locally declared label extension}} -#endif - -void locallabel() { - { - __label__ foo; - goto foo; -foo: - ; - } -} - - #if ALL || STATEMENTEXP // expected-warning@+5 {{use of GNU statement expression extension}} #endif -- cgit v1.2.3