[PATCH] Fix an overflow case in fdt_offset_ptr() detected by GCC 4.3.

David Gibson david at gibson.dropbear.id.au
Wed Oct 1 11:19:42 EST 2008


On Tue, Sep 30, 2008 at 11:28:18AM -0500, Scott Wood wrote:
> David Gibson wrote:
>> On Mon, Sep 29, 2008 at 08:51:02PM -0500, Jon Loeliger wrote:
>>>> On Mon, Sep 29, 2008 at 04:13:27PM -0500, Jon Loeliger wrote:
>>>> Uh.. Jon.. did you see my reply to this.  I'm not at all convinced
>>>> this patches a real problem.  I suspect it's just replacing a problem
>>>> that gcc could detect with a similar one that gcc can't (and for which
>>>> we already had a test to deal with, anyway).
>>> I saw your reply, and you are welcome to read up
>>> on the fist fight over in GCC land too.
>>>
>>> In the meantime, it fixes a real problem that we
>>> have at Freescale.
>>
>> Ok.. and can you explain this real problem?
>>
>> If this is just to work around a silly gcc warning that appears in
>> some circumstances and not others, that's fine, but the commit message
>> should say so.
>
> It seems that the C standard says that signed overflow is undefined, but  
> not unsigned overflow.  Presumably that was to accomodate  
> non-twos-complement machines (which we don't really care about), but GCC  
> abuses it to completely optimize away any paths that depend on such  
> overflow, and the fact that they had to add a warning about it didn't  
> strike them as a reason why they should maybe not go ahead with such an  
> optimization by default, even if it's permitted by the spec.

Ah, ok!  The old C undefined behaviour problem.  Ok, now this patch
makes sense - we were indeed assuming that overflow behaved as you'd
expect for a two's complement machine

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson



More information about the devicetree-discuss mailing list