[cfe-commits] r79743 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/Sema/compare.c
Chris Lattner
sabre at nondot.org
Sat Aug 22 17:03:53 PDT 2009
On Aug 22, 2009, at 4:42 PM, Eli Friedman wrote:
> On Sat, Aug 22, 2009 at 4:36 PM, Chris Lattner<sabre at nondot.org>
> wrote:
>>
>> On Aug 22, 2009, at 4:08 PM, Eli Friedman wrote:
>>
>>> On Sat, Aug 22, 2009 at 11:58 AM, Chris Lattner<sabre at nondot.org>
>>> wrote:
>>>>
>>>> Author: lattner
>>>> Date: Sat Aug 22 13:58:31 2009
>>>> New Revision: 79743
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=79743&view=rev
>>>> Log:
>>>> tweak some pointer sema checking stuff (which was added to
>>>> implement
>>>> PR4175) to
>>>> avoid emitting a warning on "someptr > 0". This is obviously
>>>> questionable (they
>>>> could use != instead) but is reasonable, and the warning "ordered
>>>> comparison
>>>> between pointer and integer" didn't make a ton of sense because 0
>>>> is a
>>>> valid
>>>> null pointer constant.
>>>
>>> Sure, but the standard requires us to warn... it would be okay to
>>> split it into a separate warning, though.
>>
>> It does? Citation?
>
> C99 6.5.8p2:
> One of the following shall hold:
> -- both operands have real type;
> -- both operands are pointers to qualified or unqualified versions of
> compatible object types; or
> -- both operands are pointers to qualified or unqualified versions of
> compatible incomplete types.
>
> None of those hold, so it's a constraint violation. Note that
> equality operators make an explicit allowance for null pointer
> constants.
Aha, cute! I forgot that relational differed from equality in this
respect, thank you! Fixed in r79791.
-Chris
More information about the cfe-commits
mailing list