summaryrefslogtreecommitdiff
path: root/debian/patches/pr80533.diff
blob: 4ed4787f8d8efd16fbcfe4ef2863bf7810c1d82f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# DP: Fix PR middle-end/80533, taken from the trunk.

gcc/

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.

--- a/src/gcc/emit-rtl.c
+++ b/src/gcc/emit-rtl.c
@@ -1954,7 +1954,10 @@
 	  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)))
 	    {
 	      attrs.expr = t2;
 	      attrs.offset_known_p = false;