diff options
author | Richard Biener <rguenther@suse.de> | 2017-04-27 12:34:45 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-04-27 12:34:45 +0000 |
commit | 12ead254ee6dbb32760593207417ca2ebcc2ef59 (patch) | |
tree | 56d21089cf58902f3d22508f88dd407ea4c90eef | |
parent | 3b2249aa1bb3f0240d45130a185c477c4530dc5a (diff) | |
download | gcc-12ead254ee6dbb32760593207417ca2ebcc2ef59.zip gcc-12ead254ee6dbb32760593207417ca2ebcc2ef59.tar.gz gcc-12ead254ee6dbb32760593207417ca2ebcc2ef59.tar.bz2 |
re PR middle-end/80533 (Alias analysis of zero length array does not recognize accesses beyond end of array)
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44580fc..ac9a03c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 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 * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not being in loop-closed SSA form conservatively. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 0d25d4e..d7aba88 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -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; |