This patch does: 1) With 8-bit int, __INT24_MAX__ and __UINT24_MAX__ need a long long suffix.
2) Defines like __FLASH that indicate if address space is available should be like a predicate, i.e. 1 if the space is available. Obvious and lightly tested. Ok? Johann * config/avr/avr-c.c (avr_cpu_cpp_builtins): Define __FLASH etc. to 1 and not to __flash. Use LL suffix for __INT24_MAX__ with -mint8. Use ULL suffix for __UINT24_MAX__ with -mint8.
Index: config/avr/avr-c.c =================================================================== --- config/avr/avr-c.c (revision 195151) +++ config/avr/avr-c.c (working copy) @@ -169,8 +169,7 @@ avr_cpu_cpp_builtins (struct cpp_reader const char *name = avr_addrspace[i].name; char *Name = (char*) alloca (1 + strlen (name)); - cpp_define_formatted (pfile, "%s=%s", - avr_toupper (Name, name), name); + cpp_define (pfile, avr_toupper (Name, name)); } } @@ -187,7 +186,9 @@ avr_cpu_cpp_builtins (struct cpp_reader /* Builtin macros for the __int24 and __uint24 type. */ - cpp_define (pfile, "__INT24_MAX__=8388607L"); + cpp_define_formatted (pfile, "__INT24_MAX__=8388607%s", + INT_TYPE_SIZE == 8 ? "LL" : "L"); cpp_define (pfile, "__INT24_MIN__=(-__INT24_MAX__-1)"); - cpp_define (pfile, "__UINT24_MAX__=16777215UL"); + cpp_define_formatted (pfile, "__UINT24_MAX__=16777215%s", + INT_TYPE_SIZE == 8 ? "ULL" : "UL"); }