re PR middle-end/80533 (Alias analysis of zero length array does not recognize access...
authorRichard Biener <rguenther@suse.de>
Thu, 27 Apr 2017 12:34:45 +0000 (12:34 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 27 Apr 2017 12:34:45 +0000 (12:34 +0000)
2017-04-27  Richard Biener  <rguenther@suse.de>

PR middle-end/80533
* emit-rtl.c (set_mem_attributes_minus_bitpos): When
stripping ARRAY_REFs from MEM_EXPR make sure we're not
keeping a reference to a trailing array.

From-SVN: r247327

gcc/ChangeLog
gcc/emit-rtl.c

index 44580fc15e2ed386dc191cf083e6b0622744b0c0..ac9a03c83074bd3c1fa0be11a17716bcc78fe8ee 100644 (file)
@@ -1,3 +1,10 @@
+2017-04-27  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/80533
+       * emit-rtl.c (set_mem_attributes_minus_bitpos): When
+       stripping ARRAY_REFs from MEM_EXPR make sure we're not
+       keeping a reference to a trailing array.
+
 2017-04-27  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/80539
index 0d25d4ec17ec7aea4696d3553b094c3c60096d03..d7aba8864beac8c96f7b61c00a6e16b860302c78 100644 (file)
@@ -1954,7 +1954,10 @@ set_mem_attributes_minus_bitpos (rtx ref, tree t, int objectp,
          while (TREE_CODE (t2) == ARRAY_REF);
 
          if (DECL_P (t2)
-             || TREE_CODE (t2) == COMPONENT_REF)
+             || (TREE_CODE (t2) == COMPONENT_REF
+                 /* For trailing arrays t2 doesn't have a size that
+                    covers all valid accesses.  */
+                 && ! array_at_struct_end_p (t, false)))
            {
              attrs.expr = t2;
              attrs.offset_known_p = false;