http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42146
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-07-04 15:35:45 UTC --- tree_low_cst asserts something about the ability to represent the constant in a HOST_WIDE_INT which has a target-specific (minimal) width. In your case HOST_WIDE_INT is 32bit where indeed 0x80000000 is not positive. Now the question is what's the difference between the i686 x avr vs. the native i686 behavior? That's what you need to investigate.