https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87746
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Nicer testcase: typedef struct rtx_def *rtx; struct replacement { rtx *where; rtx *subreg_loc; int mode; }; static struct replacement replacements[150]; void move_replacements (rtx *x, int y, int n_replacements) { int i; for (i = 0; i < n_replacements; i++) if (replacements[i].subreg_loc == x) replacements[i].subreg_loc = y; else if (replacements[i].where == x) { replacements[i].where = y; replacements[i].subreg_loc = 0; } }