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

Scott Wood scottwood at freescale.com
Wed Oct 1 02:28:18 EST 2008


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.

-Scott



More information about the devicetree-discuss mailing list