2012/5/25 Stefan Kristiansson <[email protected]> > compiling code like: > > int foo(int a, int b) > { > if (a > b) > return a; > else > return b; > } > > with: > > or1k-elf-gcc -O2 -mcmov -c -S cmov.c -o - > > caused an internal compiler error > due to the fact that or1k_compare_op0 and or1k_compare_op1 > never get assigned with anything > --- > > Note! > I'm not at all confident about this... > Feedback or better suggestions are appreciated. > > --- > gcc/config/or1k/or1k.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/gcc/config/or1k/or1k.c b/gcc/config/or1k/or1k.c > index 16238fe..2a6bb96 100644 > --- a/gcc/config/or1k/or1k.c > +++ b/gcc/config/or1k/or1k.c > @@ -381,18 +381,19 @@ or1k_emit_int_cmove (rtx dest, > rtx false_cond) > { > rtx condition_rtx, cr; > + rtx op0 = XEXP (op, 0); > + rtx op1 = XEXP (op, 1); > > - if ((GET_MODE (or1k_compare_op0) != SImode) && > - (GET_MODE (or1k_compare_op0) != HImode) && > - (GET_MODE (or1k_compare_op0) != QImode)) > + if ((GET_MODE (op0) != SImode) && > + (GET_MODE (op0) != HImode) && > + (GET_MODE (op0) != QImode)) > { > return 0; > } > > /* We still have to do the compare, because cmov doesn't do a compare, it > just looks at the FLAG bit set by a previous compare instruction. */ > - condition_rtx = or1k_expand_compare (GET_CODE (op), > - or1k_compare_op0, or1k_compare_op1); > + condition_rtx = or1k_expand_compare (GET_CODE (op), op0, op1); > > cr = XEXP (condition_rtx, 0); > > -- > 1.7.9.5 > > _______________________________________________ > Openrisc mailing list > [email protected] > http://lists.opencores.org/listinfo/openrisc >
Hmm... is this related to good ol' bug bug 27? Would be interesting to see if your changes affect that one too. -- Olof Kindgren ______________________________________________ ORSoC Website: www.orsoc.se Email: [email protected] ______________________________________________ FPGA, ASIC, DSP - embedded SoC design
_______________________________________________ OpenRISC mailing list [email protected] http://lists.openrisc.net/listinfo/openrisc
