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

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|tree-optimization           |rtl-optimization

--- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> ---
At gimple level, this is

  nd_2(D)->path = nd_2(D)->root;
  d_4 = nd_2(D)->path.dentry;
  return d_4;

For 64-bit powerpc, this is expanded to a TImode move, followed by
a DImode load.  The TImode moves aren't split into DImode until after
reload, for powerpc anyway.  For BE, the load is optimised away by dse1:

trying to replace DImode load in insn 9 from TImode store in insn 8
deferring rescan insn with uid = 9.
deferring rescan insn with uid = 17.
 -- replaced the loaded MEM with (reg 161)

but not for LE:

trying to replace DImode load in insn 9 from TImode store in insn 8
 -- could not extract bits of stored value

32-bit already expands as two SImode moves, so there is no problem there.

Reply via email to