fold-const.c (int_const_binop): Don't generate non-overflowing size-types specially.
authorNathan Sidwell <nathan@codesourcery.com>
Fri, 20 Aug 2004 14:28:28 +0000 (14:28 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Fri, 20 Aug 2004 14:28:28 +0000 (14:28 +0000)
* fold-const.c (int_const_binop): Don't generate non-overflowing
size-types specially.
(fold_convert_const): Likewise.

From-SVN: r86321

gcc/ChangeLog
gcc/fold-const.c

index d6bba043dc4d733f88e70b49315a4f92b0a9ad71..d0e31e46676d7b999ffa25f2564eabab6c32399f 100644 (file)
@@ -1,5 +1,9 @@
 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
 
+       * fold-const.c (int_const_binop): Don't generate non-overflowing
+       size-types specially.
+       (fold_convert_const): Likewise.
+
        * stor-layout.c (initialize_sizetypes): Set SIZETYPE earlier,
        clear cache on copied sizetype.
 
index 092712bad9541dca6fd92bc88228e9f023b5d773..2384bd1dd233e87c4920ae4775b81278cab245db 100644 (file)
@@ -1412,16 +1412,7 @@ int_const_binop (enum tree_code code, tree arg1, tree arg2, int notrunc)
       abort ();
     }
 
-  /* If this is for a sizetype, can be represented as one (signed)
-     HOST_WIDE_INT word, and doesn't overflow, use size_int since it caches
-     constants.  */
-  if (is_sizetype
-      && ((hi == 0 && (HOST_WIDE_INT) low >= 0)
-         || (hi == -1 && (HOST_WIDE_INT) low < 0))
-      && overflow == 0 && ! TREE_OVERFLOW (arg1) && ! TREE_OVERFLOW (arg2))
-    return size_int_type (low, type);
-  else
-    t = build_int_cst (TREE_TYPE (arg1), low, hi);
+  t = build_int_cst (TREE_TYPE (arg1), low, hi);
 
   if (notrunc)
     {
@@ -1783,13 +1774,6 @@ fold_convert_const (enum tree_code code, tree type, tree arg1)
          if (TYPE_PRECISION (type) > 2 * HOST_BITS_PER_WIDE_INT)
            return NULL_TREE;
 
-         /* If we are trying to make a sizetype for a small integer, use
-            size_int to pick up cached types to reduce duplicate nodes.  */
-         if (TREE_CODE (type) == INTEGER_TYPE && TYPE_IS_SIZETYPE (type)
-             && !TREE_CONSTANT_OVERFLOW (arg1)
-             && compare_tree_int (arg1, 10000) < 0)
-           return size_int_type (TREE_INT_CST_LOW (arg1), type);
-
          /* Given an integer constant, make new constant with new type,
             appropriately sign-extended or truncated.  */
          t = build_int_cst (type, TREE_INT_CST_LOW (arg1),