Hi! While the docs say that no integral argument promotions are performed, I think it is better to make the behavior for bit-fields explicitly documented.
Ok for trunk? 2016-06-27 Jakub Jelinek <ja...@redhat.com> * doc/extend.texi (__builtin_add_overflow_p): Clarify behavior when last argument is a bit-field. --- gcc/doc/extend.texi.jj 2016-06-25 19:18:39.000000000 +0200 +++ gcc/doc/extend.texi 2016-06-27 13:58:34.209076739 +0200 @@ -9888,6 +9888,9 @@ cast to the type of the third argument. precision result, the built-in functions return false, otherwise they return true. The value of the third argument is ignored, just the side-effects in the third argument are evaluated, and no integral argument promotions are performed on the last argument. +If the third argument is a bit-field, the type used for the result cast has the +precision and signedness of the given bit-field, rather than precision and signedness +of the underlying type. For example, the following macro can be used to portably check, at compile-time, whether or not adding two constant integers will overflow, Jakub