This file is indexed.

/usr/src/gcc-4.9/debian/patches/pr59586.diff is in gcc-4.9-source 4.9.3-13ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# DP: Fix PR tree-optimization/59586, segfault with -Ofast -floop-parallelize-all

gcc/

2014-06-29  Roman Gareev  <gareevroman@gmail.com>

	* graphite-dependences.c (subtract_commutative_associative_deps): 
	Add NULL checking of the following variables: must_raw_no_source, 
	may_raw_no_source, must_war_no_source, may_war_no_source, 
	must_waw_no_source, may_waw_no_source, must_raw, may_raw, 
	must_war, may_war, must_waw, may_waw

	testsuite/gfortran.dg/graphite/pr59586.f: New testcase.

Index: b/src/gcc/testsuite/gfortran.dg/graphite/pr59586.f
===================================================================
--- /dev/null
+++ b/src/gcc/testsuite/gfortran.dg/graphite/pr59586.f
@@ -0,0 +1,11 @@
+! { dg-additional-options "-Ofast -floop-parallelize-all" }
+
+      subroutine subsm ( n, x, xp, xx)
+      integer        n, m, x(n),xp(n), xx(n), gg(n), dd_p
+      do 55 i=1, n
+         dd_p  = dd_p + (x(i) - xx(i))*gg(i)
+ 55   continue
+      if ( dd_p .gt. 0  ) then
+         call dcopy( n, xp, 1, x, 1 )
+      endif
+      end
Index: b/src/gcc/graphite-dependences.c
===================================================================
--- a/src/gcc/graphite-dependences.c
+++ b/src/gcc/graphite-dependences.c
@@ -425,24 +425,71 @@ subtract_commutative_associative_deps (s
 					  &x_may_waw_no_source);
 	gcc_assert (res == 0);
 
-	*must_raw = isl_union_map_subtract (*must_raw, x_must_raw);
-	*may_raw = isl_union_map_subtract (*may_raw, x_may_raw);
-	*must_raw_no_source = isl_union_map_subtract (*must_raw_no_source,
-						      x_must_raw_no_source);
-	*may_raw_no_source = isl_union_map_subtract (*may_raw_no_source,
-						     x_may_raw_no_source);
-	*must_war = isl_union_map_subtract (*must_war, x_must_war);
-	*may_war = isl_union_map_subtract (*may_war, x_may_war);
-	*must_war_no_source = isl_union_map_subtract (*must_war_no_source,
-						      x_must_war_no_source);
-	*may_war_no_source = isl_union_map_subtract (*may_war_no_source,
-						     x_may_war_no_source);
-	*must_waw = isl_union_map_subtract (*must_waw, x_must_waw);
-	*may_waw = isl_union_map_subtract (*may_waw, x_may_waw);
-	*must_waw_no_source = isl_union_map_subtract (*must_waw_no_source,
-						      x_must_waw_no_source);
-	*may_waw_no_source = isl_union_map_subtract (*may_waw_no_source,
-						     x_may_waw_no_source);
+	if (must_raw)
+	  *must_raw = isl_union_map_subtract (*must_raw, x_must_raw);
+	else
+	  isl_union_map_free (x_must_raw);
+
+	if (may_raw)
+	  *may_raw = isl_union_map_subtract (*may_raw, x_may_raw);
+	else
+	  isl_union_map_free (x_may_raw);
+
+	if (must_raw_no_source)
+	  *must_raw_no_source = isl_union_map_subtract (*must_raw_no_source,
+						        x_must_raw_no_source);
+	else
+	  isl_union_map_free (x_must_raw_no_source);
+
+	if (may_raw_no_source)
+	  *may_raw_no_source = isl_union_map_subtract (*may_raw_no_source,
+						       x_may_raw_no_source);
+	else
+	  isl_union_map_free (x_may_raw_no_source);
+
+	if (must_war)
+	  *must_war = isl_union_map_subtract (*must_war, x_must_war);
+	else
+	  isl_union_map_free (x_must_war);
+
+	if (may_war)
+	  *may_war = isl_union_map_subtract (*may_war, x_may_war);
+	else
+	  isl_union_map_free (x_may_war);
+
+	if (must_war_no_source)
+	  *must_war_no_source = isl_union_map_subtract (*must_war_no_source,
+						        x_must_war_no_source);
+	else
+	  isl_union_map_free (x_must_war_no_source);
+
+	if (may_war_no_source)
+	  *may_war_no_source = isl_union_map_subtract (*may_war_no_source,
+						       x_may_war_no_source);
+	else
+	  isl_union_map_free (x_may_war_no_source);
+
+	if (must_waw)
+	  *must_waw = isl_union_map_subtract (*must_waw, x_must_waw);
+	else
+	  isl_union_map_free (x_must_waw);
+
+	if (may_waw)
+	  *may_waw = isl_union_map_subtract (*may_waw, x_may_waw);
+	else
+	  isl_union_map_free (x_may_waw);
+
+	if (must_waw_no_source)
+	  *must_waw_no_source = isl_union_map_subtract (*must_waw_no_source,
+						        x_must_waw_no_source);
+	else
+	  isl_union_map_free (x_must_waw_no_source);
+
+	if (may_waw_no_source)
+	  *may_waw_no_source = isl_union_map_subtract (*may_waw_no_source,
+						       x_may_waw_no_source);
+	else
+	  isl_union_map_free (x_may_waw_no_source);
       }
 
   isl_union_map_free (original);