OSDN Git Service

2011-09-05 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Sep 2011 07:32:37 +0000 (07:32 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Sep 2011 07:32:37 +0000 (07:32 +0000)
        Revert
        2011-08-31  Richard Guenther  <rguenther@suse.de>

* fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
special-casing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178523 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fold-const.c

index 3365404..b106227 100644 (file)
@@ -1,3 +1,11 @@
+2011-09-04  Richard Guenther  <rguenther@suse.de>
+
+       Revert
+       2011-08-31  Richard Guenther  <rguenther@suse.de>
+
+       * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
+       special-casing.
+
 2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
 
        PR debug/49901
index 0f4ca5e..5807a55 100644 (file)
@@ -5888,9 +5888,11 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type,
         multiple of the other, in which case we replace this with either an
         operation or CODE or TCODE.
 
-        If we have an unsigned type, we cannot do this since it will change
-        the result if the original computation overflowed.  */
-      if (TYPE_OVERFLOW_UNDEFINED (ctype)
+        If we have an unsigned type that is not a sizetype, we cannot do
+        this since it will change the result if the original computation
+        overflowed.  */
+      if ((TYPE_OVERFLOW_UNDEFINED (ctype)
+          || (TREE_CODE (ctype) == INTEGER_TYPE && TYPE_IS_SIZETYPE (ctype)))
          && ((code == MULT_EXPR && tcode == EXACT_DIV_EXPR)
              || (tcode == MULT_EXPR
                  && code != TRUNC_MOD_EXPR && code != CEIL_MOD_EXPR