https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99435
--- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> --- I am really confused. To all of my knowledge, IN and OUT can address a range of 64 bytes. For example, the opcode of OUT is 1011 1AAr rrrr AAAA where "r" bits encode for the register number (2^5 = 32 of them) and "A" bits encode absolute target addresses (2^6 = 64 of them). So there isn't even enough space in the instruction encoding to provide an address range as clained by this PR. Similar for, say, SBI with opcode encoding 1011 1010 AAAA Abbb where "A" bits encode for absolute target address (2^5 = 32 of them) and "b" encode target bit number (2^3 = 8 of them). Are you sure you didn't just stumble upon a typo in the data sheet? All AVRs are using these encodings. The only difference is between Xmega and non-Xmega which use different, implicit SFR_OFFSETs (which don't affect the encoding or the number of address that can be encoded).