summaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-15 15:48:10 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-15 15:48:10 +0000
commitd3682f91c77b6d9612bf6ca08eb5449459979438 (patch)
treeb7bdee32908b9644c336d231f2405f9e81d32dbd /gcc/tree-inline.c
parent110e846d820bf16e4f3954178f71cf16e34fd492 (diff)
downloadgcc-d3682f91c77b6d9612bf6ca08eb5449459979438.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119883 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 4e0913e4efc..39d9f11cc7d 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -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