Hi! The 4.4 expr.c is significantly different from 4.5 that the PR48973 backport wasn't trivial, and apparently I've missed another place - on the 4.4 branch the new pr48973-{1,2}.c tests fail on s390{,x}-linux.
The following patch fixes it, ok for 4.4 branch? 2011-07-21 Jakub Jelinek <ja...@redhat.com> PR middle-end/48973 * expr.c (expand_expr_real_1) <case TRUTH_ANDIF_EXPR:>: If the comparison has a single bit signed type, use constm1_rtx instead of const1_rtx for true value. --- gcc/expr.c (revision 176517) +++ gcc/expr.c (working copy) @@ -9171,7 +9171,9 @@ expand_expr_real_1 (tree exp, rtx target jumpifnot (exp, op1, -1); if (target) - emit_move_insn (target, const1_rtx); + emit_move_insn (target, + TYPE_PRECISION (type) == 1 && !TYPE_UNSIGNED (type) + ? constm1_rtx : const1_rtx); emit_label (op1); return ignore ? const0_rtx : target; Jakub