]> gcc.gnu.org Git - gcc.git/commitdiff
(safe_from_p): Only safe if EXP is variable-size and X is BLKmode.
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 15 Aug 1995 21:51:44 +0000 (17:51 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 15 Aug 1995 21:51:44 +0000 (17:51 -0400)
From-SVN: r10243

gcc/expr.c

index 421f9423663e697633467c44a68469956594eb23..5e5b3b31c4cb3a301a3a6539025fd67f4ece7b18 100644 (file)
@@ -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,
This page took 0.071058 seconds and 5 git commands to generate.