This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] PR/19653: fld used for reloads in sse mode



    (push_reload): Allow PREFERRED_*_RELOAD_CLASS to liberally
    return NO_REGS.

Eh, why is this necessary? Can't you just return the old class instead?

It makes sense to return NO_REGS for optional output reloads, but you don't know that inside the target macro.

I think I should expand more on it...


Also, find_reloads is checking if PREFERRED_RELOAD_CLASS returns NO_REGS and, if so, it is equivalent to adding a `?' to the constraint (but in a way that may be dependent on the target options). With my patch find_reloads also uses PREFERRED_OUTPUT_RELOAD_CLASS, but the failure in push_reload can happen with PREFERRED_RELOAD_CLASS as well.

The find_reload code is incompatible with the assert in push_reload, even without my patch. So I made push_reload understand a return value of `NO_REGS' as "ok, you'd not like that I used this alternative, but the choice was made and we have to live with it; let's proceed with the original regclass".

After bootstrapping and regtesting the patch, I will repost it in a more polished form, including documentation for the behavior of find_reloads.

Paolo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]