<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jan 23, 2014 at 9:20 AM, Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This mostly looks good to me. One comment, though:<br>
<br>
+          !RetValExp->isValueDependent() &&<br>
<br>
The returns_nonnull check doesn't bother to check if it's value-dependent first. Is that necessary? Should that be folded in somewhere else?</blockquote><div><br></div><div>Yes, that is necessary. If your CheckNonNullExpr is supposed to conservatively return false if the expression isn't known to be null, it should return false on any value-dependent expression.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888">
Jordan<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Jan 23, 2014, at 2:24 , Artyom Skrobov <<a href="mailto:Artyom.Skrobov@arm.com">Artyom.Skrobov@arm.com</a>> wrote:<br>
<br>
> Jordan, good catch that this can be combined; attaching for a review.<br>
><br>
><br>
><br>
> -----Original Message-----<br>
> From: Jordan Rose [mailto:<a href="mailto:jordan_rose@apple.com">jordan_rose@apple.com</a>]<br>
> Sent: 22 January 2014 17:21<br>
> To: Ted Kremenek<br>
> Cc: llvm cfe; Richard Smith; Artyom Skrobov<br>
> Subject: Re: r199790 - Add basic checking for returning null from<br>
> functions/methods marked 'returns_nonnull'.<br>
><br>
> Should this be combined with the check that a throwing operator new never<br>
> returns non-null? (r199452)<br>
><br>
><br>
> On Jan 21, 2014, at 22:10 , Ted Kremenek <<a href="mailto:kremenek@apple.com">kremenek@apple.com</a>> wrote:<br>
><br>
>> Author: kremenek<br>
>> Date: Wed Jan 22 00:10:28 2014<br>
>> New Revision: 199790<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=199790&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=199790&view=rev</a><br>
>> Log:<br>
>> Add basic checking for returning null from functions/methods marked<br>
> 'returns_nonnull'.<br>
>><br>
>> This involved making CheckReturnStackAddr into a static function, which<br>
>> is now called by a top-level return value checking routine called<br>
>> CheckReturnValExpr.<br>
>><br>
>> Modified:<br>
>>   cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td<br>
>>   cfe/trunk/include/clang/Sema/Sema.h<br>
>>   cfe/trunk/lib/Sema/SemaChecking.cpp<br>
>>   cfe/trunk/lib/Sema/SemaStmt.cpp<br>
>>   cfe/trunk/test/Sema/nonnull.c<br>
>>   cfe/trunk/test/SemaObjC/nonnull.m<br>
</div></div><br><br>
<br></blockquote></div><br></div></div>