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.