rjmccall accepted this revision.
rjmccall added a comment.
This revision is now accepted and ready to land.
Thanks, LGTM.



================
Comment at: clang/lib/CodeGen/CGCall.cpp:2515
+                } else {
+                  AI->addAttr(llvm::Attribute::NonNull);
+                }
----------------
aaron.ballman wrote:
> rjmccall wrote:
> > aaron.ballman wrote:
> > > rjmccall wrote:
> > > > Isn't the old logic still correct?  If the element size is static and 
> > > > the element count is positive, the argument is dereferenceable out to 
> > > > their product; otherwise it's nonnull if null is the zero value and we 
> > > > aren't semantically allowing that to be a valid pointer.
> > > I was questioning this -- I didn't think the old logic was correct 
> > > because it checks that the array is in address space 0, but the 
> > > nonnull-ness should apply regardless of address space (I think). The 
> > > point about valid null pointers still stands, though. Am I 
> > > misunderstanding the intended address space behavior?
> > I believe LLVM's `nonnull` actually always means nonzero.  `static` just 
> > tells us that the address is valid, so (1) we always have to suppress the 
> > attribute under `NullPointerIsValid` and (2) we have the suppress the 
> > attribute if the null address is nonzero, because the zero address could 
> > still be valid in that case.  The way the existing code is implementing the 
> > latter seems excessively conservative about non-standard address spaces, 
> > since we might know that they still use a zero null pointer; more 
> > importantly, it seems wrong in the face of an address space that lowers to 
> > LLVM's address space 0 but doesn't use a zero null pointer.  You can call 
> > `getTargetInfo().getNullPointerValue(ETy.getAddressSpace()) == 0` to answer 
> > this more correctly.
> Ah, I see! Thank you for the explanation -- I wasn't aware that null could be 
> a valid address in other address spaces, but that makes sense.
(the zero representation, not null)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83502/new/

https://reviews.llvm.org/D83502



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to