diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-22 12:01:54 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-22 12:01:54 +0000 |
commit | 9b388acadf4851092642bcc4f826f8710065c974 (patch) | |
tree | d0b4885e9a5770fecec22272ef14c5026f470e13 /gcc/tree.c | |
parent | dff29840073999137197b50c24f82a364d3cdb95 (diff) | |
download | gcc-9b388acadf4851092642bcc4f826f8710065c974.tar.gz |
* tree.c (int_fits_type_p): If bounds of a subtype are variable, see
if fits in bounds of base type.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49070 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree.c b/gcc/tree.c index 61252e7b70e..53d5889bbbd 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4245,7 +4245,8 @@ int_fits_type_p (c, type) tree c, type; { /* If the bounds of the type are integers, we can check ourselves. - Otherwise,. use force_fit_type, which checks against the precision. */ + If not, but this type is a subtype, try checking against that. + Otherwise, use force_fit_type, which checks against the precision. */ if (TYPE_MAX_VALUE (type) != NULL_TREE && TYPE_MIN_VALUE (type) != NULL_TREE && TREE_CODE (TYPE_MAX_VALUE (type)) == INTEGER_CST @@ -4264,6 +4265,8 @@ int_fits_type_p (c, type) && ! (TREE_INT_CST_HIGH (c) < 0 && TREE_UNSIGNED (TREE_TYPE (c)))); } + else if (TREE_CODE (type) == INTEGER_TYPE && TREE_TYPE (type) != 0) + return int_fits_type_p (c, TREE_TYPE (type)); else { c = copy_node (c); |