The following testcase triggers an ICE when compiled with "-O3 -fcheck-data-deps":
========================================================================== double foo(const double* p0, const double* p1, const double* q0) { double d; for (; p0 != p1; ++p0, ++q0) d += *p0 * *q0; return d; } struct A { double x[3]; const double* begin() const { return x; } }; struct B { A a0, a1; double d; B(const A&); }; B::B(const A& a) : a0(a), a1(a), d(foo(a0.begin(), a0.begin()+3, a1.begin())) {} ========================================================================== (Number of distance vectors differ: Banerjee has 1, Omega has 0. Banerjee dist vectors: 3 Omega dist vectors: data dependence relation: (Data Dep: access_fn_A: {0B, +, 8}_1 access_fn_B: {24B, +, 8}_1 (subscript iterations_that_access_an_element_twice_in_A: [3 + 1 * x_1] last_conflict: 0 iterations_that_access_an_element_twice_in_B: [0 + 1 * x_1] last_conflict: 0 (Subscript distance: 3 ) ) inner loop index: 0 loop nest: (1 ) ) ) bug.cc: In constructor 'B::B(const A&)': bug.cc:22: internal compiler error: in compute_affine_dependence, at tree-data-ref.c:3849 Please submit a full bug report, [etc.] -- Summary: [4.3 regression] ICE with -fcheck-data-deps Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35011