summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2013-08-20 22:44:32 +0000
committerEli Friedman <eli.friedman@gmail.com>2013-08-20 22:44:32 +0000
commit85698c8d7ba1073ea1a2025a6166d8e52835c9dd (patch)
tree60eefb19f64a724f29fe1ffac0066c241b37e074
parent571c3ae7d676ac36a1c9d8d993748f55ed70e332 (diff)
downloadbcm5719-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.td3
-rw-r--r--clang/include/clang/Basic/DiagnosticParseKinds.td2
-rw-r--r--clang/lib/Parse/ParseStmt.cpp1
-rw-r--r--clang/test/Sema/gnu-flags.c20
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
OpenPOWER on IntegriCloud