I stumbled over the following code which is the reason we are not
properly going into-ssa during gimplification in some cases.
The code can't matter as we unconditionally set DECL_GIMPLE_REG_P.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2012-05-14  Richard Guenther  <rguent...@suse.de>

        * gimplify.c (gimplify_expr): Remove odd code.

Index: gcc/gimplify.c
===================================================================
--- gcc/gimplify.c      (revision 187450)
+++ gcc/gimplify.c      (working copy)
@@ -7947,19 +7947,7 @@ gimplify_expr (tree *expr_p, gimple_seq
         TMP.  First, make sure that the expression has a type so that
         it can be assigned into a temporary.  */
       gcc_assert (!VOID_TYPE_P (TREE_TYPE (*expr_p)));
-
-      if (!gimple_seq_empty_p (internal_post) || (fallback & fb_lvalue))
-       /* The postqueue might change the value of the expression between
-          the initialization and use of the temporary, so we can't use a
-          formal temp.  FIXME do we care?  */
-       {
-         *expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
-         if (TREE_CODE (TREE_TYPE (*expr_p)) == COMPLEX_TYPE
-             || TREE_CODE (TREE_TYPE (*expr_p)) == VECTOR_TYPE)
-           DECL_GIMPLE_REG_P (*expr_p) = 1;
-       }
-      else
-       *expr_p = get_formal_tmp_var (*expr_p, pre_p);
+      *expr_p = get_formal_tmp_var (*expr_p, pre_p);
     }
   else
     {

Reply via email to