http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46547
--- Comment #6 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2010-11-19 13:01:35 UTC --- My inclination is that the problem is a missing check of in_late_binary_op. Specifically, that c_common_truthvalue_conversion should call save_expr instead of c_save_expr if in_late_binary_op (which in turn requires that in_late_binary_op move from c-tree.h/c-typeck.c to being defined/declared in c-family code).