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] |
I'm confused by this patch. The PR implies that the problem has to doYes. In fact the problematic pattern in sh.md (divsi_inv_m0) includes this:
with different pointer sizes. That is, INDEX_REG_CLASS_FOR_MODE needs
to use the mode in which the pointers are being computed.
Is that right? GET_MODE (x) is the mode of the PLUS (this occurrence is under "case PLUS").> - scan_rtx_address (insn, locI, INDEX_REG_CLASS, action, mode); > + scan_rtx_address (insn, locI, INDEX_REG_CLASS_FOR_MODE (GET_MODE (x)), > + action, mode)
But here GET_MODE (x) is not the mode in which the address is being computed. It is the mode in which the memory is being accessed. And that is not what I under Joern's comment in the PR to mean.
@defmac MODE_BASE_REG_CLASS (@var{mode}) This is a variation of the @code{BASE_REG_CLASS} macro which allows the selection of a base register in a mode dependent manner. If @var{mode} is VOIDmode then it should return the same value as @code{BASE_REG_CLASS}. @end defmac
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |