> 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

Reply via email to