summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-04-24 22:14:22 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-04-24 22:14:22 +0000
commitea7b85bfe057f91876c55ffbb0bcee3c5b6af499 (patch)
treeafa8e77cf7f68cc8546c4763851f20b3f4b4f0e5 /clang
parenta076199e714c201ddc38f9a0c110adcb4086e3f4 (diff)
downloadbcm5719-llvm-ea7b85bfe057f91876c55ffbb0bcee3c5b6af499.tar.gz
bcm5719-llvm-ea7b85bfe057f91876c55ffbb0bcee3c5b6af499.zip
PR4304: Add warning for designators in strict c89 mode.
llvm-svn: 130117
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaInit.cpp3
-rw-r--r--clang/test/Sema/c89.c2
2 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index 2acb482c41e..0cf75464668 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -1976,6 +1976,9 @@ ExprResult Sema::ActOnDesignatedInitializer(Designation &Desig,
Loc, GNUSyntax, Init.takeAs<Expr>());
if (getLangOptions().CPlusPlus)
+ Diag(DIE->getLocStart(), diag::ext_designated_init_cxx)
+ << DIE->getSourceRange();
+ else if (!getLangOptions().C99)
Diag(DIE->getLocStart(), diag::ext_designated_init)
<< DIE->getSourceRange();
diff --git a/clang/test/Sema/c89.c b/clang/test/Sema/c89.c
index 038f7e537d7..670dd15539f 100644
--- a/clang/test/Sema/c89.c
+++ b/clang/test/Sema/c89.c
@@ -80,3 +80,5 @@ void test13b() {
/* Make sure we allow *test14 as a "function designator" */
int test14() { return (&*test14)(); }
+
+int test15[5] = { [2] = 1 }; /* expected-warning {{designated initializers are a C99 feature}} */
OpenPOWER on IntegriCloud