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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-08-09
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.
PRE seems to have missed an obvious redundant load here though:
The IR after PRE:
```
  pretmp_12 = h;
  if (f.2_9 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 6>; [50.00%]
...
  <bb 6> [local count: 536870912]:
  if (pretmp_12 == 0B)
    goto <bb 8>; [30.00%]
  else
    goto <bb 7>; [70.00%]

  <bb 7> [local count: 375809640]:
  h = 0B;

  <bb 8> [local count: 536870912]:
  g = 0;
  h.6_15 = h;
```

The IR before PRE:
```
  <bb 2> [local count: 1073741824]:
  # VUSE <.MEM_2(D)>
  f.2_9 = f;
  if (f.2_9 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 3> [local count: 536870912]:
  # VUSE <.MEM_2(D)>
  _11 = h;
  if (_11 != 0B)
    goto <bb 4>; [0.00%]
  else
    goto <bb 9>; [100.00%]
...
  <bb 5> [local count: 536870912]:
  # VUSE <.MEM_2(D)>
  _13 = h;
  if (_13 == 0B)
    goto <bb 7>; [30.00%]
  else
    goto <bb 6>; [70.00%]

  <bb 6> [local count: 375809640]:
  # .MEM_20 = VDEF <.MEM_2(D)>
  h = 0B;

  <bb 7> [local count: 536870912]:
  # .MEM_16 = PHI <.MEM_2(D)(5), .MEM_20(6)>
  # .MEM_21 = VDEF <.MEM_16>
  g = 0;
  # VUSE <.MEM_21>
  h.6_15 = h;
```

Reply via email to