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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-09-19
         Depends on|                            |33315
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
gcc.target/aarch64/sve/fmla_2.c you mean?

I think this is the old issue of no pass doing hoisting/sinking of stores where
my patch for PR33315 would help, transforming

  if (_4 != 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 527260923]:
  _9 = c_30(D) + _2;
  _10 = *_9;
  iftmp.0_31 = __builtin_fma (_10, pretmp_54, pretmp_53);
  *_55 = iftmp.0_31;
  iftmp.1_35 = __builtin_fma (_10, pretmp_53, pretmp_54);
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 527260923]:
  *_55 = pretmp_53;

  <bb 6> [local count: 1054521846]:
  # iftmp.1_23 = PHI <iftmp.1_35(4), pretmp_54(5)>
  _20 = b_36(D) + _2;

to

  if (_4 != 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 527260923]:
  _9 = c_30(D) + _2;
  _10 = *_9;
  iftmp.0_31 = __builtin_fma (_10, pretmp_54, pretmp_53);
  iftmp.1_35 = __builtin_fma (_10, pretmp_53, pretmp_54);
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 527260923]:

  <bb 6> [local count: 1054521846]:
  # tem = PHI <iftmp.0_31, pretmp_53>
  # iftmp.1_23 = PHI <iftmp.1_35(4), pretmp_54(5)>
  *_55 = tem;
  _20 = b_36(D) + _2;

with the disadvantage of increasing lifetime of the sources.


Referenced Bugs:

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

Reply via email to