This patch just changes a QImode (const_int 255) to (const_int -1), since the canonical form is to sign-extend. As things stand the pattern trips a new assert added on the wide-int branch.
Tested by building rl78-elf before and after the patch and making sure that there were no changes in assembly code for gcc.c-torture, gcc.dg and g++dg. OK to install? Thanks, Richard gcc/ * config/rl78/rl78-expand.md (one_cmplqi2): Use (const_int -1) rather than (const_int 255). Index: gcc/config/rl78/rl78-expand.md =================================================================== --- gcc/config/rl78/rl78-expand.md 2013-10-15 19:24:15.821884272 +0100 +++ gcc/config/rl78/rl78-expand.md 2013-11-07 09:41:50.754226143 +0000 @@ -177,7 +177,7 @@ (define_expand "xorqi3" (define_expand "one_cmplqi2" [(set (match_operand:QI 0 "nonimmediate_operand") (xor:QI (match_operand:QI 1 "general_operand") - (const_int 255))) + (const_int -1))) ] "" "if (rl78_force_nonfar_2 (operands, gen_one_cmplqi2))