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

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

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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The 29_atomics/atomic_float/wait_notify.cc hangs that unfortunately cause
regtest hangs (the timeout stuff doesn't seem to work here) seems to be caused
by this too, at least if 0 && out those 8 peephole2s in sync.md the hang is
gone.

Vlad, can spill slots (MEMs with MEM_EXPR equal to get_spill_slot_decl (false))
be read in multiple instructions (one store multiple reads)?

Unfortunately the patterns do use peep2_reg_dead_p and so it isn't something
that can be done in the split2 pass (reload_completed && !epilogue_completed).

Maybe emit the stores always and if those peephole2s ever trigger, schedule an
extra RTL DSE pass after peephole2?
I'm not sure it is safe to emit the stores as normal DFmode stores though (at
least not in all the cases), because while one atomic read (the one seen in the
peephole2) can be DFmode-ish, further atomic reads (the ones the peephole2
doesn't see) could be DImode-ish.

Uros, can you please have a look?  Thanks.

Reply via email to