[Bug tree-optimization/103361] [12 Regression] ICE in adjust_unroll_factor, at gimple-loop-jam.c:407 since r12-3677-gf92901a508305f29

2021-11-23 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103361

--- Comment #3 from Richard Biener  ---
OK, so I think this is an overflow somewhere in data dependence compute ...

Creating dr for MEM ]> [(const short unsigned int
&)&c][_2]
analyze_innermost: success.
base_address: &c
offset from base address: (ssizetype) ((sizetype) h_10 * 2)
constant offset from base address: 0
step: -3762939935406616984(OVF)
base alignment: 2
base misalignment: 0
offset alignment: 2
step alignment: 8
base_object: MEM ]> [(const short unsigned
int &)&c]
Access function 0: {{0, +, 3}_1, +, 7341902069151467316}_2
...
(Data Dep: 
#(Data Ref: 
#  bb: 4 
#  stmt: _25 = MEM ]> [(const short unsigned int
&)&c][_2];
#  ref: MEM ]> [(const short unsigned int
&)&c][_2];
#  base_object: MEM ]> [(const short unsigned int
&)&c];
#  Access function 0: {{0, +, 3}_1, +, 7341902069151467316}_2
#)
#(Data Ref: 
#  bb: 5 
#  stmt: pretmp_28 = MEM[(const short unsigned int &)_3];
#  ref: MEM[(const short unsigned int &)_3];
#  base_object: MEM[(const short unsigned int &)&c];
#  Access function 0: {{0B, +, 6}_1, +, 14683804138302934632}_2
#)
  access_fn_A: {{0B, +, 6}_1, +, 14683804138302934632}_2
  access_fn_B: {{0B, +, 6}_1, +, 14683804138302934632}_2

 (subscript 
  iterations_that_access_an_element_twice_in_A: [0]
  last_conflict: scev_not_known
  iterations_that_access_an_element_twice_in_B: [0]
  last_conflict: scev_not_known
  (Subscript distance: 0 ))
  loop nest: (1 2 )
  distance_vector:   0   0 
  distance_vector: -1736083252   3 
  direction_vector: ==
  direction_vector: -+
)

the accesses are equal so the distance vector should be 0 0 which it is
for the inner loop but not for the outer it seems(!?).  We run into

  if (same_access_functions (ddr))
{
  /* Save the 0 vector.  */
  dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr));
  save_dist_v (ddr, dist_v);

  if (invariant_access_functions (ddr, loop_nest->num))
add_distance_for_zero_overlaps (ddr);

  if (DDR_NB_LOOPS (ddr) > 1)
add_other_self_distances (ddr);

  return true;

where invariant_access_functions is false and we eventually run into
add_multivariate_self_dist.

Ah, so the issue is lambda vector dumping is broken (truncates to int) and
unroll-and-jam also fails to use lambda_int ...

[Bug tree-optimization/103361] [12 Regression] ICE in adjust_unroll_factor, at gimple-loop-jam.c:407 since r12-3677-gf92901a508305f29

2021-11-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103361

Richard Biener  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org

--- Comment #2 from Richard Biener  ---
I will have a look.

[Bug tree-optimization/103361] [12 Regression] ICE in adjust_unroll_factor, at gimple-loop-jam.c:407 since r12-3677-gf92901a508305f29

2021-11-22 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103361

Martin Liška  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Target Milestone|--- |12.0
Summary|[12 Regression] ICE in  |[12 Regression] ICE in
   |adjust_unroll_factor, at|adjust_unroll_factor, at
   |gimple-loop-jam.c:407   |gimple-loop-jam.c:407 since
   ||r12-3677-gf92901a508305f29
  Known to fail||12.0
 CC||marxin at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org
   Last reconfirmed||2021-11-22
 Status|UNCONFIRMED |NEW

--- Comment #1 from Martin Liška  ---
Thanks for the report, started with r12-3677-gf92901a508305f29