[Bug tree-optimization/84859] [8 Regression] bogus -Warray-bounds on a memcpy in a loop

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Mar 15 13:59:00 GMT 2018


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |33315

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
The patch for PR33315 manages to transform

  if (n_21 > 255)
    goto <bb 6>; [50.00%]
  else
    goto <bb 7>; [50.00%]

  <bb 6> [local count: 477815112]:
  a[0] = 255;
  goto <bb 8>; [100.00%]

  <bb 7> [local count: 477815112]:
  _1 = (unsigned char) n_21;
  a[0] = _1;

  <bb 8> [local count: 955630225]:
  _2 = a[0];

to

  if (n_21 > 255)
    goto <bb 7>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 6> [local count: 477815112]:
  _1 = (unsigned char) n_21;

  <bb 7> [local count: 955630225]:
  # _23 = PHI <255(5), _1(6)>
  a[0] = _23;
  _2 = a[0];

but as proposed that would happen too late (we've already threaded the jump
and PRE already would have done sth similar via the load from a[0]).  As
given it looks like sinking should be performed before the first phiopt pass
(which also runs quite late - there was talk of an early phiopt pass).
Possibly cselim could be enhanced to catch the above as well.  In fact its
comments say it would handle the above.  Ah, we do

  /* Set PARAM_MAX_STORES_TO_SINK to 0 if either vectorization or if-conversion
     is disabled.  */
  if ((!opts->x_flag_tree_loop_vectorize && !opts->x_flag_tree_slp_vectorize)
       || !opts->x_flag_tree_loop_if_convert)
    maybe_set_param_value (PARAM_MAX_STORES_TO_SINK, 0,
                           opts->x_param_values, opts_set->x_param_values);

for whatever reason :/  --param max-stores-to-sink=2 fixes the testcase.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33315
[Bug 33315] stores not commoned by sinking


More information about the Gcc-bugs mailing list