https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67839
--- Comment #5 from Senthil Kumar Selvaraj <senthil_kumar.selvaraj at atmel dot com> --- The patch did not make it to the 5 branch, my fault really - guess I forgot to submit it for backporting. Not sure how you get that code though - I pulled the latest gcc-5_branch (svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@232962), built it with main.c from PR 69330, and this is what I got cbi 0x20,0 ldi r24,0 ldi r25,0 ret .size main, .-main .ident "GCC: (GNU) 5.3.1 20160129" The problem shows up only when define_special_predicate is used - 4.9 and below only used define_predicate. Like I said in the first comment, I don't know wny that was changed. The change of constraint from n to i, IIRC, was to defer address computation for IO instructions to link time, so that that io and io_low attributes work (https://gcc.gnu.org/onlinedocs/gcc/AVR-Variable-Attributes.html)