]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2006-12-15 Andrew Pinski <pinski@gmail.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 15 Dec 2006 15:48:10 +0000 (15:48 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 15 Dec 2006 15:48:10 +0000 (15:48 +0000)
        PR tree-opt/30140
        * tree-inline.c (setup_one_parameter): Gimplify the statement if
        the variable is not a gimple register variable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119883 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-inline.c

index 8dcc9e2dd2c476af7e3d460a6ae0c6f30fbe27f3..70f82d9db8fc89bc877e76de818523307bfbcb55 100644 (file)
@@ -1,3 +1,9 @@
+2006-12-15  Andrew Pinski  <pinski@gmail.com>
+
+       PR tree-opt/30140
+       * tree-inline.c (setup_one_parameter): Gimplify the statement if
+       the variable is not a gimple register variable.
+
 2006-12-15  Uros Bizjak  <ubizjak@gmail.com>
 
        * invoke.texi (mstringop-strategy): Add missing "byte_loop" value.
index 4e0913e4efc12e231a904c82a17d2cd33bcfff4f..39d9f11cc7db67aa5fd92e8d4e864d6131bc0290 100644 (file)
@@ -1106,9 +1106,10 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
         at the end.  Note that is_gimple_cast only checks the outer
         tree code, not its operand.  Thus the explicit check that its
         operand is a gimple value.  */
-      if (!is_gimple_val (rhs)
+      if ((!is_gimple_val (rhs)
          && (!is_gimple_cast (rhs)
              || !is_gimple_val (TREE_OPERAND (rhs, 0))))
+         || !is_gimple_reg (var))
        gimplify_stmt (&init_stmt);
 
       /* If VAR represents a zero-sized variable, it's possible that the