Index: flags.h =================================================================== --- flags.h (revision 128885) +++ flags.h (working copy) @@ -314,7 +314,7 @@ extern bool flag_instrument_functions_ex /* True if overflow wraps around for the given integral type. That is, TYPE_MAX + 1 == TYPE_MIN. */ #define TYPE_OVERFLOW_WRAPS(TYPE) \ - (TYPE_UNSIGNED (TYPE) || flag_wrapv) + ((TYPE_UNSIGNED (TYPE) || flag_wrapv) && (TREE_CODE (TYPE) != INTEGER_TYPE || !TYPE_IS_SIZETYPE (TYPE))) /* True if overflow is undefined for the given integral type. We may optimize on the assumption that values in the type never overflow. @@ -325,12 +325,12 @@ extern bool flag_instrument_functions_ex other cases it will be appropriate to simply set a flag and let the caller decide whether a warning is appropriate or not. */ #define TYPE_OVERFLOW_UNDEFINED(TYPE) \ - (!TYPE_UNSIGNED (TYPE) && !flag_wrapv && !flag_trapv && flag_strict_overflow) + ((!TYPE_UNSIGNED (TYPE) && !flag_wrapv && !flag_trapv && flag_strict_overflow) || (TREE_CODE (TYPE) == INTEGER_TYPE && TYPE_IS_SIZETYPE (TYPE))) /* True if overflow for the given integral type should issue a trap. */ #define TYPE_OVERFLOW_TRAPS(TYPE) \ - (!TYPE_UNSIGNED (TYPE) && flag_trapv) + ((!TYPE_UNSIGNED (TYPE) && flag_trapv) && (TREE_CODE (TYPE) != INTEGER_TYPE || !TYPE_IS_SIZETYPE (TYPE))) /* Names for the different levels of -Wstrict-overflow=N. The numeric values here correspond to N. */