Commit f4510f37 by Richard Kenner

(safe_from_p): Only safe if EXP is variable-size and X is BLKmode.

From-SVN: r10243
parent e07ed33f
...@@ -3814,9 +3814,11 @@ safe_from_p (x, exp) ...@@ -3814,9 +3814,11 @@ safe_from_p (x, exp)
/* If EXP has varying size, we MUST use a target since we currently /* If EXP has varying size, we MUST use a target since we currently
have no way of allocating temporaries of variable size. So we have no way of allocating temporaries of variable size. So we
assume here that something at a higher level has prevented a assume here that something at a higher level has prevented a
clash. This is somewhat bogus, but the best we can do. */ clash. This is somewhat bogus, but the best we can do. Only
do this when X is BLKmode. */
|| (TREE_TYPE (exp) != 0 && TYPE_SIZE (TREE_TYPE (exp)) != 0 || (TREE_TYPE (exp) != 0 && TYPE_SIZE (TREE_TYPE (exp)) != 0
&& TREE_CODE (TYPE_SIZE (TREE_TYPE (exp))) != INTEGER_CST)) && TREE_CODE (TYPE_SIZE (TREE_TYPE (exp))) != INTEGER_CST
&& GET_MODE (x) == BLKmode))
return 1; return 1;
/* If this is a subreg of a hard register, declare it unsafe, otherwise, /* If this is a subreg of a hard register, declare it unsafe, otherwise,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment