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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I guess it can be expanded inline iff it is done through a modified
move_by_pieces - one that instead of emitting read store read store read store
emits all the reads first and then all the stores.  And hopefully the aliasing
info will make it clear for all the following RTL passes that it can overlap
and thus scheduling etc. can't reorder the stores with the reads.
emit_block_move_hints will need some small tweaks.
Currently for might_overlap it only tries emit_block_move_via_pattern and punts
if that fails.
I think we'd need some m_* flag and adjust the run method so that if that is
true, it emits the stores in a separate sequence from the reads.

Reply via email to