diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2013-08-20 22:44:32 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2013-08-20 22:44:32 +0000 |
commit | 85698c8d7ba1073ea1a2025a6166d8e52835c9dd (patch) | |
tree | 60eefb19f64a724f29fe1ffac0066c241b37e074 | |
parent | 571c3ae7d676ac36a1c9d8d993748f55ed70e332 (diff) | |
download | bcm5719-llvm-85698c8d7ba1073ea1a2025a6166d8e52835c9dd.tar.gz bcm5719-llvm-85698c8d7ba1073ea1a2025a6166d8e52835c9dd.zip |
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
-rw-r--r-- | clang/include/clang/Basic/DiagnosticGroups.td | 3 | ||||
-rw-r--r-- | clang/include/clang/Basic/DiagnosticParseKinds.td | 2 | ||||
-rw-r--r-- | clang/lib/Parse/ParseStmt.cpp | 1 | ||||
-rw-r--r-- | 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<GNULabelsAsValue>; def ext_gnu_address_of_label : Extension< "use of GNU address-of-label extension">, InGroup<GNULabelsAsValue>; -def ext_gnu_local_label : Extension< - "use of GNU locally declared label extension">, InGroup<GNULocalLabel>; def ext_gnu_statement_expr : Extension< "use of GNU statement expression extension">, InGroup<GNUStatementExpression>; 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<Decl *, 8> 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 |