https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64700
Drea Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |NEW
--- Comment #17 from Drea Pinski <pinskia at gcc dot gnu.org> ---
There is a missing PRE/hoist here though.
After PRE we have:
```
if (dir_lsm_flag.27_61 != 0)
goto <bb 14>; [66.67%]
else
goto <bb 15>; [33.33%]
<bb 14> [local count: 8423325]:
dir = dir_lsm.26_57;
<bb 15> [local count: 12634988]:
if (pos_lsm_flag.25_53 != 0)
goto <bb 17>; [66.67%]
else
goto <bb 16>; [33.33%]
<bb 16> [local count: 4211663]:
pretmp_100 = dir;
_103 = (unsigned int) pretmp_100;
_108 = (int) _103;
goto <bb 18>; [100.00%]
<bb 17> [local count: 8423325]:
pos = pos_lsm.24_32;
_97 = (unsigned int) pos_lsm.24_32;
pretmp_99 = dir;
```
Notice how there is a load from dir on both sides of the condition of bb 16 and
17.
And then there is missing PRE from dir here too.