[cfe-dev] Warning at always true condition
Jordan Rose
jordan_rose at apple.com
Tue Jun 12 10:28:35 PDT 2012
The analyzer will catch this (under the "deadcode" checkers, enabled by default), although in your particular test case it's actually smart enough to /know/ that p[0] is 'H' (because it can see the initialization).
Adding this to the compiler is certainly possible, at least not for the limited case of ($x != k1 || $x != k2). If you put another conditional in the middle ($x != k1 || $y || $x != k2) it's a bit harder to see immediately that this is always true. I can see how the original case would come up in real life with your example, though—in English you can say "*p is not 'h' or 'H'", but in C you have to say "*p is not 'h' AND *p is not 'H'".
If you decide to implement this yourself, watch out for when something in the condition has side effects—then it's /not/ guaranteed to be a tautology. If you were just asking, please file an "enhancement" bug at http://llvm.org/bugs/
Jordan
On Jun 11, 2012, at 11:12 PM, Devchandra L Meetei wrote:
> Sorry but true.
> This is not what, I was looking.
>
>> char *p ="Hello World\n";
>> if(p[0] != 'h' || p[0] != 'H')
>> {
>> cout << "Word does not start with h/H\n";
>> }
>
> The condition is always true and none of compiler seems to warn them.
>
>
> --Regards
> --Deleisha
>
>
>
> On Tue, Jun 12, 2012 at 11:30 AM, Devchandra L Meetei <dlmeetei at gmail.com> wrote:
> Thanks Sean
> I will have a look at that.
> Thanks for the pointer
>
> --Deleisha
>
>
> On Tue, Jun 12, 2012 at 5:34 AM, Seth Cantrell <bames53 at gmail.com> wrote:
> There's a -Weverything which I think you can use to check to see if a bit of code triggers any warnings.
>
> On Jun 11, 2012, at 7:10 AM, Devchandra L Meetei wrote:
>
>> Hi All
>> Does clang support any switch to warn about a conditional eg in if(p* !='h' || p* !='H'), which is always true.
>>
>>
>> Thankss in reply for timely response
>>
>> Warm Reagrds
>> --Dev
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
More information about the cfe-dev
mailing list