On Thu, May 24, 2007 at 12:29:43AM +0100, Derek M Jones wrote:
> It was intended as a probabilit statement (ok, I did not make that
> clear). An expression containing n+n is more likely to overflow
> than one containing n-n.
Gimme a break.
a) s/int/unsigned and run that through gcc; no change in behaviour
b) no fscking way in hell *either* is acceptable for bitfield
width - definitely not with -std=c99 -pedantic. Violates 6.6p6 and 6.7.2.1p3.
c) what's happening is pretty obvious - the difference is not in
overflows, it's in expression tree structure (remember, + and - are
left-to-right). gcc throws several cheap optimizations at the expression
and checks if it has come up with a constant. Simple common factors are taken
out (n*m - n*m is seen as 0), common subexpressions are not recognized
((n+m)-(n+m) is not seen as constant).
d) (c) is an exercise in software proctology - gcc has an obvious
bug in that area (mishandling recognition of integer constant expressions),
period.
-
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html