Hi! So, the core of this problem is once again that regno_reg_rtx is reallocated. It will be another decade until we got rid of all fallout of breaking that guarantee :-(
On Wed, Apr 06, 2022 at 10:50:40AM +0200, Jakub Jelinek wrote: > On Tue, Apr 05, 2022 at 04:56:55PM -0500, Segher Boessenkool wrote: > > > - union { rtx *r; int *i; struct insn_link **l; } where; > > > + union { rtx *r; int *i; rtx m; struct insn_link **l; } where; > > > > NAK. It is not clear at all what "rtx m" means, esp. since there is an > > "rtx *r" already. In the PR you said "machine_mode m", that is clear of > > course, can you do that instead? > > So in that case something like this (i.e. the regno variant, renamed > to subst_mode from SUBST_MODE, and naming the union member regno rather > than m)? I can't say I like that either, the undo for a mode change should just store the old mode directly, anything else is too fragile. But, whatever, we'll fix that later. The patch is okay for trunk. Thanks! Segher