------- Additional Comments From steven at gcc dot gnu dot org 2005-06-11
09:11 -------
Problem seems to be that the C front end assumes something without
a DECL_NAME is not yet in the unexpanded variables list. Don't ask
me why :-/
Hack:
Index: c-gimplify.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-gimplify.c,v
retrieving revision 2.30
diff -u -3 -p -r2.30 c-gimplify.c
--- c-gimplify.c 1 Jun 2005 02:50:51 -0000 2.30
+++ c-gimplify.c 11 Jun 2005 09:10:51 -0000
@@ -185,9 +185,11 @@ gimplify_compound_literal_expr (tree *ex
tree decl = DECL_EXPR_DECL (decl_s);
/* 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)
+ list of temps if it is not already in that list.
+ 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
+ && !DECL_SEEN_IN_BIND_EXPR_P (decl))
gimple_add_tmp_var (decl);
gimplify_and_add (decl_s, pre_p);
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2005-06-11 09:11:54
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22013