On Thu, Mar 3, 2011 at 5:27 AM, Mark Mentovai <m...@moxienet.com> wrote:
> Felix Fietkau wrote:
>> Actually, it emits -16384 in both the working and non-working case,
>> I think what makes the difference of working vs non-working is this:
>>
>> Broken: (0xffffc000 is in v0)
>> -  e8:        00021a02        srl     v1,v0,0x8
>> -  ec:        00021200        sll     v0,v0,0x8
>>
>> Working: (0xffffc000 is in v1)
>> +  e8:        7c623a00        ext     v0,v1,0x8,0x8
>> +  ec:        00031a00        sll     v1,v1,0x8
>>
>> using ext instead of srl prevents the extra bits from spilling over.
>
> Sure. I was looking at the assembly emitted by the other compilers I tested. 
> None of those even ever use -16384 (0xffffc000). They all simply OR in 0xc000 
> (as an immediate value).
>
> I’m in touch with Linaro about this bug, so maybe we’ll get some traction 
> without having to commit my workaround patch.

Yip, Richard is having a look into this.  Officially we don't support
MIPS, but compiler bugs are so rare it's worth looking into each one.

-- Michael
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to