(substitute_in_type, case REAL_TYPE): Allow TYPE_{MIN,MAX}_VALUE to be
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 25 Feb 1994 23:32:13 +0000 (18:32 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 25 Feb 1994 23:32:13 +0000 (18:32 -0500)
unassigned.

From-SVN: r6626

gcc/tree.c

index 40bebf7f4000da7058f1a0460afe01d1a2e706f6..8d2df27b783ddaa97d76016079bd4e6870a91ff9 100644 (file)
@@ -2117,14 +2117,19 @@ substitute_in_type (t, f, r)
       return t;
 
     case REAL_TYPE:
-      if ((TREE_CODE (TYPE_MIN_VALUE (t)) != INTEGER_CST
+      if ((TYPE_MIN_VALUE (t) != 0
+          && TREE_CODE (TYPE_MIN_VALUE (t)) != REAL_CST
           && contains_placeholder_p (TYPE_MIN_VALUE (t)))
-         || (TREE_CODE (TYPE_MAX_VALUE (t)) != INTEGER_CST
+         || (TYPE_MAX_VALUE (t) != 0
+             && TREE_CODE (TYPE_MAX_VALUE (t)) != REAL_CST
              && contains_placeholder_p (TYPE_MAX_VALUE (t))))
        {
-         t = build_type_copy (t);
-         TYPE_MIN_VALUE (t) = substitute_in_expr (TYPE_MIN_VALUE (t), f, r);
-         TYPE_MAX_VALUE (t) = substitute_in_expr (TYPE_MAX_VALUE (t), f, r);
+         t = copy_type (t);
+
+         if (TYPE_MIN_VALUE (t))
+           TYPE_MIN_VALUE (t) = substitute_in_expr (TYPE_MIN_VALUE (t), f, r);
+         if (TYPE_MAX_VALUE (t))
+           TYPE_MAX_VALUE (t) = substitute_in_expr (TYPE_MAX_VALUE (t), f, r);
        }
       return t;