> >Does this mean that RELOAD_FOR_OTHER_ADDRESS reloads can never be
> >merged with RELOAD_OTHER reloads?
> >  
> Yes.  But if they load the same value as a RELOAD_OTHER input, they can 
> share the same reload register.

So why does reload specifically check for RELOAD_FOR_OTHER_ADDRESS
when deciding if a merge to RELOAD_OTHER is permitted?  Is this a bug
in the current logic?

          for (j = 0; j < n_reloads; j++)
            if (i != j && rld[j].reg_rtx != 0
                && rtx_equal_p (rld[i].reg_rtx, rld[j].reg_rtx)
                && (! conflicting_input
                    || rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
                    || rld[j].when_needed == RELOAD_FOR_OTHER_ADDRESS))
              {
                rld[i].when_needed = RELOAD_OTHER;
                rld[j].in = 0;
                reload_spill_index[j] = -1;
                transfer_replacements (i, j);

Reply via email to