diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-02-25 18:32:13 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-02-25 18:32:13 -0500 |
commit | afb52ee70158e214291ccebba1e3da777c3e3267 (patch) | |
tree | 33644245828af0043d5686efe5dbba1f67f42a57 | |
parent | da4c17179b3fcd19b1c9b87067f9a640de85b592 (diff) | |
download | gcc-afb52ee70158e214291ccebba1e3da777c3e3267.zip gcc-afb52ee70158e214291ccebba1e3da777c3e3267.tar.gz gcc-afb52ee70158e214291ccebba1e3da777c3e3267.tar.bz2 |
(substitute_in_type, case REAL_TYPE): Allow TYPE_{MIN,MAX}_VALUE to be
unassigned.
From-SVN: r6626
-rw-r--r-- | gcc/tree.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -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; |