https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70285
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think the bug is somewhere in build_conditional_expr_1. arg2 has signed char type, and arg2_type = unlowered_expr_type (arg2); is int, which is what we want, but for whatever reason we end up building a COND_EXPR with the signed char in one of the arms and int in another one.