]> granicus.if.org Git - clang/commitdiff
Fix a minor regression from my potentially-evaluated expression changes.
authorEli Friedman <eli.friedman@gmail.com>
Mon, 6 Feb 2012 23:29:57 +0000 (23:29 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Mon, 6 Feb 2012 23:29:57 +0000 (23:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149930 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExpr.cpp
test/Sema/vla.c

index a47421d801d42ba3edf93ee0403df578039e2068..8afe0c25b9efe212bd4b8f902511906ab5fc8112 100644 (file)
@@ -9239,6 +9239,14 @@ namespace {
     // Make sure we redo semantic analysis
     bool AlwaysRebuild() { return true; }
 
+    // Make sure we handle LabelStmts correctly.
+    // FIXME: This does the right thing, but maybe we need a more general
+    // fix to TreeTransform?
+    StmtResult TransformLabelStmt(LabelStmt *S) {
+      S->getDecl()->setStmt(0);
+      return BaseTransform::TransformLabelStmt(S);
+    }
+
     // We need to special-case DeclRefExprs referring to FieldDecls which
     // are not part of a member pointer formation; normal TreeTransforming
     // doesn't catch this case because of the way we represent them in the AST.
index fd7a6bf3d72f94d3dc0a5899e1b91ac38688a6a3..4fd636122f3c175e0f4635e442d07b39eb8af383 100644 (file)
@@ -60,3 +60,8 @@ void pr5185(int a[*]);
 void pr5185(int a[*]) // expected-error {{variable length array must be bound in function definition}}
 {
 }
+
+// Make sure this isn't treated as an error
+int TransformBug(int a) {
+ return sizeof(*(int(*)[({ goto v; v: a;})]) 0); // expected-warning {{use of GNU statement expression extension}}
+}