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.