|
|
On Thu, 2009-06-04 at 08:54 -0700, Richard Henderson wrote:
> > +(define_expand "cbranchsi4"
> > + [(set (reg:CC CC_REG)
> > + (compare:CC
> > + (match_operand:SI 1 "general_operand" "")
> > + (match_operand:SI 2 "general_operand" "")))
> > + (set (pc)
> > + (if_then_else (match_operator:CC 0 "comparison_operator"
> > + [(reg:CC CC_REG) (const_int 0)])
> > + (label_ref (match_operand 3 "" ""))
> > + (pc)))]
> > + ""
> > + "
> > + /* Force the compare operands into regsiters. */
> > + if (GET_CODE (operands[1]) != REG)
> > + operands[1] = force_reg (SImode, operands[1]);
> > + if (GET_CODE (operands[2]) != REG)
> > + operands[2] = force_reg (SImode, operands[2]);
> > +")
>
> Use register_operand for op1 and op2 and you won't need
> the C code there.
But when I make this change I get...
/green/github/moxiedev/gcc/gcc/testsuite/gcc.c-torture/compile/20010326-1.c:16:1:
error: unrecognizable insn:
(insn 29 28 30
5
/green/github/moxiedev/gcc/gcc/testsuite/gcc.c-torture/compile/20010326-1.c:14
(set (reg:CC 11 $r9)
(compare:CC (reg:SI 35)
(const_int 0 [0x0]))) -1 (nil))
/green/github/moxiedev/gcc/gcc/testsuite/gcc.c-torture/compile/20010326-1.c:16:1:
internal compiler error: in extract_insn, at recog.c:2078
Reverting this change it the last version of the port gets me back to
reasonable testsuite results.
=== gcc Summary ===
# of expected passes 49186
# of unexpected failures 58
# of unexpected successes 4
# of expected failures 71
# of unsupported tests 611
=== g++ Summary ===
# of expected passes 18805
# of unexpected failures 12
# of expected failures 137
# of unsupported tests 197
AG
|
|