> The problem was that we had some optimzations added to the > reload_cse_move2add pass that would attempt transformations with > multi-hard-register registers, without keeping track of the validity of the > values in all hard registers involved.
That's not clear to me: for example in move2add_note_store, we reset the info about any multi hard-register; moveover 5 arrays are supposed to be maintained for each hard-register: for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--) { reg_set_luid[i] = 0; reg_offset[i] = 0; reg_base_reg[i] = 0; reg_symbol_ref[i] = NULL_RTX; reg_mode[i] = VOIDmode; } so I'm not sure whether we really properly handle multi hard-registers. So what about explicitly punting for multi hard-registers in reload_cse_move2add? Do you think that this would pessimize too much in practice? -- Eric Botcazou