https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77834
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Apparently on the v_lsm.5 variable we trigger cfgexpand.c (set_rtl)'s /* If we have something recorded and it's not the same place as we want to record now, we have multiple partitions for the same base variable, with different places. We can't just randomly chose one, hence we have to say that we don't know. This only happens with optimization, and there var-tracking will figure out the right thing. */ else if (DECL_RTL (var) != x) SET_DECL_RTL (var, pc_rtx); hunk, because set_rtl is once called with (mem/c:BLK (plus:DI (reg/f:DI 82 virtual-stack-vars) (const_int -64 [0xffffffffffffffc0])) [1 v_lsm.5+0 S64 A512]) on v_lsm.5_24 and then (mem/c:BLK (plus:DI (reg/f:DI 82 virtual-stack-vars) (const_int -128 [0xffffffffffffff80])) [1 v_lsm.5+0 S64 A512]) on v_lsm.5_20 and then in pass_expand::execute /* If this decl was marked as living in multiple places, reset this now to NULL. */ tree var = SSA_NAME_VAR (name); if (var && DECL_RTL_IF_SET (var) == pc_rtx) SET_DECL_RTL (var, NULL);