OSDN Git Service

(integer_all_onesp): Test to size of mode, not TYPE_PRECISION.
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Apr 1995 12:11:06 +0000 (12:11 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Apr 1995 12:11:06 +0000 (12:11 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9427 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/tree.c

index 3310e88..1b32348 100644 (file)
@@ -1530,7 +1530,9 @@ integer_all_onesp (expr)
   if (!uns)
     return TREE_INT_CST_LOW (expr) == -1 && TREE_INT_CST_HIGH (expr) == -1;
 
-  prec = TYPE_PRECISION (TREE_TYPE (expr));
+  /* Note that using TYPE_PRECISION here is wrong.  We care about the
+     actual bits, not the (arbitrary) range of the type.  */
+  prec = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (expr)));
   if (prec >= HOST_BITS_PER_WIDE_INT)
     {
       int high_value, shift_amount;