This is the mail archive of the gcc@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: Reload problems with only one base reg for "base + offset" addressing mode


2010/8/1 redriver jiang <jiang.redriver@gmail.com>:
> Hi Denis,
>
> I read the "out_movqi_r_mr" code of the AVR port. I see that following
> exception are
>
> handled:
>
> 1. "REG_X+offset", which is not supported by AVR.
> 2. "REGY+offset", with offset larger than 63, which is not supported by AVR.
>
> Seems reload can not handle the targets that has some base regs are
> offsetable, and some can't.

IMHO reload can't handle small number of pointer regs with small
offsets only in very rare cases.
Also, look at avr.h: BASE_REG_CLASS definition.

My main idea was to disable infinite offsets in addressing (and
REG_X+offset) as long as possible.
But, if wrong addressing occurs then I have to emulate it.

Look at avr.h: LEGITIMIZE_RELOAD_ADDRESS it's not easy to understand

Denis.


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