Re: spill failure after IF-CASE-2 transformation

2012-02-22 Thread Bernd Schmidt
On 02/22/2012 05:15 PM, Henderson, Stuart wrote: >> Make an exception for BImode and small_register_classes_for_mode_p >> (BImode). > > Thanks Bernd. > > Would this be acceptable: > > diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c > index 8d81c89..e4e13ab 100644 > --- a/gcc/ifcvt.c > +++ b/gcc/ifcvt.c >

RE: spill failure after IF-CASE-2 transformation

2012-02-22 Thread Henderson, Stuart
>Make an exception for BImode and small_register_classes_for_mode_p >(BImode). Thanks Bernd. Would this be acceptable: diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 8d81c89..e4e13ab 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -2295,7 +2295,9 @@ noce_get_condition (rtx jump, rtx *earliest, bool

Re: spill failure after IF-CASE-2 transformation

2012-02-22 Thread Bernd Schmidt
On 02/22/2012 01:23 PM, Henderson, Stuart wrote: > The problem with noce_get_condition is that if the condition variable > is a MODE_INT register it will return it and set earliest as the jump > insn itself. I'm not sure why this is the case, but it seems like > something we don't want to be doing

RE: spill failure after IF-CASE-2 transformation

2012-02-22 Thread Henderson, Stuart
>Not really. I think in dead_or_predicable you need to check in the > /* Try the NCE path if the CE path did not result in any changes. */ >block (I assume this is where we end up in this testcase) that none of >the live hard regs at the point where we are going to insert the insns >are in small

Re: spill failure after IF-CASE-2 transformation

2012-02-20 Thread Bernd Schmidt
On 02/14/2012 07:12 PM, Henderson, Stuart wrote: >> spill_failure does return for asms since we don't want to ICE on bad >> user code. That's all that's going on here. > > ahh, thanks. > >> It sounds like ifcvt needs to be fixed. Your example: >>> block 44: >>> set cc = x; >>> set cc = y; (*) >>>

RE: spill failure after IF-CASE-2 transformation

2012-02-20 Thread Henderson, Stuart
Ping. >>looks like an invalid transformation, but I suspect rather than setting >>the CC register, the (*) insn is setting a pseudo (more accurate RTL >>would be useful). There are some cases in ifcvt.c which check >>targetm.small_register_classes_for_mode already, this is probably what >>should be

RE: spill failure after IF-CASE-2 transformation

2012-02-14 Thread Henderson, Stuart
>spill_failure does return for asms since we don't want to ICE on bad >user code. That's all that's going on here. ahh, thanks. >It sounds like ifcvt needs to be fixed. Your example: >> block 44: >> set cc = x; >> set cc = y; (*) >> if cc jump; > >looks like an invalid transformation, but I suspe

Re: spill failure after IF-CASE-2 transformation

2012-02-08 Thread Bernd Schmidt
On 02/07/2012 07:42 PM, Henderson, Stuart wrote: > Hi, > I'm investigating the following ICE building the Blackfin compiler from trunk: > /home/shender/gnu-upstream/toolchain/gcc-4.7/libgfortran/generated/eoshift1_4.c: > In function ÃâËeoshift1Ãââ: > /home/shender/gnu-upstream/toolchain/gcc-4.7/li