]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorJoseph Myers <jsm28@gcc.gnu.org>
Fri, 25 Aug 2006 21:14:24 +0000 (22:14 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Fri, 25 Aug 2006 21:14:24 +0000 (22:14 +0100)
2006-08-25  Fariborz Jahanian  <fjahanian@apple.com>

PR c/28418
* c-gimplify.c (gimplify_compound_literal_expr): Don't add
variable again if DECL_SEEN_IN_BIND_EXPR_P.

2006-08-25  Joseph S. Myers  <joseph@codesourcery.com>

* gcc.c-torture/compile/compound-literal-1.c: New test.

From-SVN: r116436

gcc/ChangeLog
gcc/c-gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/compound-literal-1.c [new file with mode: 0644]

index 582ea4d8432dd96f5dbcee0785486c5e050b327b..b56d2102577c899224dd74d363568e7fd9e546d7 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-25  Fariborz Jahanian  <fjahanian@apple.com>
+
+       PR c/28418
+       * c-gimplify.c (gimplify_compound_literal_expr): Don't add
+       variable again if DECL_SEEN_IN_BIND_EXPR_P.
+
 2006-08-25  Joseph S. Myers  <joseph@codesourcery.com>
 
        PR c/28299
index 60ef914159fb2c6928f336a30da38a6bda23edc3..7ddc88cf4ea939e2731195e10bd422942f31d27c 100644 (file)
@@ -187,7 +187,7 @@ gimplify_compound_literal_expr (tree *expr_p, tree *pre_p)
   /* This decl isn't mentioned in the enclosing block, so add it to the
      list of temps.  FIXME it seems a bit of a kludge to say that
      anonymous artificial vars aren't pushed, but everything else is.  */
-  if (DECL_NAME (decl) == NULL_TREE)
+  if (DECL_NAME (decl) == NULL_TREE && !DECL_SEEN_IN_BIND_EXPR_P (decl))
     gimple_add_tmp_var (decl);
 
   gimplify_and_add (decl_s, pre_p);
index 85df20fdf7f27ab8ae6545de7c0532bd7f4f6ccb..9965dd5c338de272cf1e8b23377185bd3a4b02eb 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-25  Joseph S. Myers  <joseph@codesourcery.com>
+
+       PR c/28418
+       * gcc.c-torture/compile/compound-literal-1.c: New test.
+
 2006-08-25  Joseph S. Myers  <joseph@codesourcery.com>
 
        PR c/28299
diff --git a/gcc/testsuite/gcc.c-torture/compile/compound-literal-1.c b/gcc/testsuite/gcc.c-torture/compile/compound-literal-1.c
new file mode 100644 (file)
index 0000000..968bb45
--- /dev/null
@@ -0,0 +1,9 @@
+/* ICE incrementing compound literal: bug 28418 from Volker Reichelt
+   <reichelt@gcc.gnu.org>.  */
+
+struct A { int i; };
+
+void foo()
+{
+    ((struct A) { 0 }).i += 1;
+}