Browsing the GCC source, I found this in gcc/config/avr/avr.c if (AVR_HAVE_RAMPZ && TEST_HARD_REG_BIT (set, REG_Z) && TEST_HARD_REG_BIT (set, REG_Z + 1)) { emit_push_sfr (rampz_rtx, false /* frame */, AVR_HAVE_RAMPD, treg); }
I wont pretend to fully understand this part of the compiler, but that AVR_HAVE_RAMPD looks shady to me? Anyone with deeper knowledge want to have a look? -Ian