The current implementation of the usual conversion doesn't handle correctly the case of 'long' + 'unsigned int' on a 32-bit arch. The resulting type is 'unsigned int' instead of 'unsigned long'. Fix this by following closely the C99's wording. This now gives the expected result for C89 & C99 on 32 & 64-bit archs (as tested with the GCC testsuite). Luc Van Oostenryck (4): add builtin type pointer to bool: bool_ptr_ctype fix prototype of __sync_bool_compare_and_swap() fix evaluation of pointer to bool conversions fix usual conversion of integers builtin.c | 2 +- evaluate.c | 67 ++++++++++++++++-------------- symbol.c | 2 + symbol.h | 1 + validation/linear/bool-cast-lp32.c | 1 - 5 files changed, 40 insertions(+), 33 deletions(-) -- 2.28.0