From f4510f3757fc32ae871aa5e7c77a078590b173ed Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 15 Aug 1995 17:51:44 -0400 Subject: [PATCH] (safe_from_p): Only safe if EXP is variable-size and X is BLKmode. From-SVN: r10243 --- gcc/expr.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index 421f9423663..5e5b3b31c4c 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -3814,9 +3814,11 @@ safe_from_p (x, exp) /* If EXP has varying size, we MUST use a target since we currently have no way of allocating temporaries of variable size. So we 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_CODE (TYPE_SIZE (TREE_TYPE (exp))) != INTEGER_CST)) + && TREE_CODE (TYPE_SIZE (TREE_TYPE (exp))) != INTEGER_CST + && GET_MODE (x) == BLKmode)) return 1; /* If this is a subreg of a hard register, declare it unsafe, otherwise, -- 2.30.2