OSDN Git Service

2011-08-24 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Aug 2011 12:51:45 +0000 (12:51 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Aug 2011 12:51:45 +0000 (12:51 +0000)
* fold-const.c (fold_comparison): Fold &a < &a + 4 even
with -fno-strict-overflow.

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

gcc/ChangeLog
gcc/fold-const.c

index 7e1db3d..2c4aadb 100644 (file)
@@ -1,5 +1,10 @@
 2011-08-24  Richard Guenther  <rguenther@suse.de>
 
+       * fold-const.c (fold_comparison): Fold &a < &a + 4 even
+       with -fno-strict-overflow.
+
+2011-08-24  Richard Guenther  <rguenther@suse.de>
+
        * tree-vectorizer.c (vect_print_dump_info): Avoid the
        file and location clutter when dumping to dump files.
 
index dcd6989..01c5570 100644 (file)
@@ -8738,6 +8738,7 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
                   && operand_equal_p (offset0, offset1, 0)))
              && (code == EQ_EXPR
                  || code == NE_EXPR
+                 || (indirect_base0 && DECL_P (base0))
                  || POINTER_TYPE_OVERFLOW_UNDEFINED))
 
            {
@@ -8777,6 +8778,7 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
             6.5.6/8 and /9 with respect to the signed ptrdiff_t.  */
          else if (bitpos0 == bitpos1
                   && ((code == EQ_EXPR || code == NE_EXPR)
+                      || (indirect_base0 && DECL_P (base0))
                       || POINTER_TYPE_OVERFLOW_UNDEFINED))
            {
              /* By converting to signed size type we cover middle-end pointer