tree.c (int_fits_type_p): Only look at the base type if it has the same precision...
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 10 Nov 2005 16:24:54 +0000 (16:24 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 10 Nov 2005 16:24:54 +0000 (16:24 +0000)
* tree.c (int_fits_type_p): Only look at the base type
if it has the same precision as the original type.

From-SVN: r106738

gcc/ChangeLog
gcc/tree.c

index 3bc2fde..9e133b1 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.c (int_fits_type_p): Only look at the base type
+       if it has the same precision as the original type.
+
 2005-11-10  Jakub Jelinek  <jakub@redhat.com>
 
        PR other/4372
index 4edccd5..d5ce531 100644 (file)
@@ -5558,8 +5558,11 @@ int_fits_type_p (tree c, tree type)
     return 0;
 
   /* If we haven't been able to decide at this point, there nothing more we
-     can check ourselves here. Look at the base type if we have one.  */
-  if (TREE_CODE (type) == INTEGER_TYPE && TREE_TYPE (type) != 0)
+     can check ourselves here.  Look at the base type if we have one and it
+     has the same precision.  */
+  if (TREE_CODE (type) == INTEGER_TYPE
+      && TREE_TYPE (type) != 0
+      && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (type)))
     return int_fits_type_p (c, TREE_TYPE (type));
 
   /* Or to force_fit_type, if nothing else.  */