Georg-Johann Lay wrote: > Sean D'Epagnier wrote: >> On Fri, Nov 25, 2011 at 11:18:17AM +0100, Georg-Johann Lay wrote: >>>> In avr.md I changed: >>>> return "sbi %i0,%2"; >>>> to >>>> return "sbi %i0-0x20,%2"; >>>> >>>> It fixed the problem. I think this needs to be done all over the place >>> This is an incorrect fix, the problem must be somewhere else. >>> >> Indeed, I didn't like it much, but it helped me understand the problem. >> >>> %i shall subtract avr_current_arch->sfr_offset which is 0x20 for all >>> architectures. The reason to use %i and not %m is to avoid magic >>> numbers 0x20 all over the place, see top of following changeset and >>> %i implementation in avr.c:print_operand() >>> >>> http://gcc.gnu.org/viewcvs?view=revision&revision=181552 >>> >>> + else if (code == 'i') >>> + { >>> + if (!io_address_operand (addr, GET_MODE (x))) >>> + fatal_insn ("bad address, not an I/O address:", addr); >>> + >>> + switch (INTVAL (addr)) >>> + { >>> + case RAMPZ_ADDR: fprintf (file, "__RAMPZ__"); break; >>> + case SREG_ADDR: fprintf (file, "__SREG__"); break; >>> + case SP_ADDR: fprintf (file, "__SP_L__"); break; >>> + case SP_ADDR+1: fprintf (file, "__SP_H__"); break; >>> + >>> + default: >>> + fprintf (file, HOST_WIDE_INT_PRINT_HEX, >>> + UINTVAL (addr) - avr_current_arch->sfr_offset); >>> + break; >>> + } >>> + } >>> >> This makes a lot more sense now, but the above code is never reached. >> If you go a bit higher up in the function you will see: >> >> else if (GET_CODE (x) == CONST_INT) >> -> fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) + abcd); >> else if (GET_CODE (x) == MEM) >> { >> ... >> bit of code from above >> ... >> } >> >> code is indeed 'i', but GET_CODE(x) is CONST_INT not MEM, so the conversion >> never takes place. >> >> We could of course perform the conversion in both places, but I don't >> really like that either. Maybe perform the subraction earlier as for abcd? >> >> Sean > > Please f'up > > http://gcc.gnu.org/ml/gcc-patches/2011-11/msg02400.html
It's upstream in 181722: http://gcc.gnu.org/viewcvs?view=revision&revision=181722 Johann _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org https://lists.nongnu.org/mailman/listinfo/avr-gcc-list