2010/8/1 redriver jiang <jiang.redri...@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.