https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65654

--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
OK, it reproduces for me.  The size difference is 2

Caller size is:
Inline summary for set_laplace_on_hex_vector/158341 inlinable
  self time:       1602
  global time:     1602
  self size:       43
  global size:     43
  min size:       31
  self stack:      8
  global stack:    8
  estimated growth:23
    size:24.500000, time:1436.340500, predicate:(true)
    size:5.500000, time:146.532500, predicate:(not inlined)
    size:0.500000, time:0.500000, predicate:(op0[ref offset: 960] changed) &&
(not inlined)
    size:4.500000, time:4.500000, predicate:(op0[ref offset: 960] changed)
    size:0.500000, time:0.423500, predicate:(op0[ref offset: 1024] changed) &&
(not inlined)
    size:0.500000, time:0.423500, predicate:(op0[ref offset: 1024] changed)
    size:0.500000, time:0.423500, predicate:(op0[ref offset: 992] changed) &&
(not inlined)
    size:0.500000, time:0.423500, predicate:(op0[ref offset: 992] changed)
  calls:
    compute_laplace_vector/158368 --param large-stack-frame-growth limit
reached
      loop depth: 0 freq: 110 size: 3 time: 12 callee size:120 stack:920
    reinit/13143 --param max-inline-insns-auto limit reached
      loop depth: 0 freq: 616 size: 3 time: 12 callee size:29 stack: 0
       op1 is compile time invariant

While callee summary has a lot of calls

Inline summary for compute_laplace_vector/158368 inlinable
  self time:       10734
  global time:     8632
  self size:       228
  global size:     240
  min size:       224
  self stack:      912
  global stack:    920
  estimated growth:-16
    size:156.500000, time:8055.395000, predicate:(true)
    size:12.500000, time:302.000000, predicate:(not inlined)
    size:0.500000, time:0.500000, predicate:(op0[ref offset: 960] changed) &&
(not inlined)
    size:1.500000, time:1.500000, predicate:(op0[ref offset: 960] changed)
  calls:
...

My guess is that this actualy is an roundoff issue with updating. There is
nothing interesting propagated and/or optimized out.  This code will change
early next stage with conversion to sreals, so I tend to believe we can drop
the assert for this stage4

Reply via email to