> >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);