On 07/01/2015 11:27 PM, Chen Gang wrote:
> On 7/1/15 21:52, Bernd Schmidt wrote:
>> On 07/01/2015 03:04 AM, Chen Gang wrote:
>>
>>> For me, the more details are:
>>>
>>>   - The insns have 2 loops which can be lsetup optimized.
>>>
>>>   - After hwloop_optimize finishes 1st lsetup optimization, it generates
>>>     new lsetup insn which appends to jump insn in the basic block (which
>>>     causes the insns are not 'standard' but OK for code generation).
>>
>> The problem is that you can't append anything to a basic block after a jump. 
>> You need to create a new one. This problem doesn't usually show up since 
>> nothing ever looks at the basic block again, unless both directions from the 
>> conditional branch happen to branch to lsetup candidate loops.
>>
> 
> OK, thanks. What you said sound reasonable to me.
>  
>> Below is a patch. Can you test this with anything you have beyond the 
>> testsuite?
>>
> 
> It can fix this issue (Bug66620), let the insns standard, and can build
> the bfin kernel with allmodconfig successfully (although for bfin kernel
> members, they stick to allmodconfig is not a good idea for bfin kernel).
> 
> It finished lsetup optimization for one loop, but still left the other (
> get the same .s as my original fix). for 2nd times in hwloop_optimize, it
> return false. And welcome any additional ideas for it.
> 

I shall continue to analyse why 2nd lsetup optimiation has not happened.
Hope I can finish within next week (2015-07-12).


> For me, my original fix is incorrect: it still remains the insns in the
> incorrect state (although my fix can generate the correct .s, and can
> build bfin kernel with allmodconfig successfully).
> 
> 
> Thanks.
> 

-- 
Chen Gang

Open, share, and attitude like air, water, and life which God blessed

Reply via email to