================
Comment at: lib/Sema/SemaDeclAttr.cpp:1130
@@ -1129,2 +1129,3 @@
+bool Sema::isValidPointerAttrType(QualType T) {
T = T.getNonReferenceType();
----------------
rsmith wrote:
> hfinkel wrote:
> > rsmith wrote:
> > > Is this really appropriate for your attribute? (It makes almost no sense
> > > for `__attribute__((nonnull))` either, but I couldn't find anyone at
> > > Apple to tell me what the relevant radar says, so I have no idea why we
> > > have this "feature".)
> > Nice :-) -- Honestly, I don't have a strong opinion regarding whether or
> > not we strip references, but I like the idea of consistency between the two
> > attributes. The set of returned pointers about which I can assert something
> > about the alignment should be the same as that about which I can assert a
> > nonnull property.
> >
> > That having been said, it looks like the CodeGen for returns_nonnull that
> > adds the nonnull IR attribute (and the associated UBSan code) does not
> > handle references-to-pointers correctly. I'll fix that as a follow-up too.
> It seems really weird for either of these to look through references to the
> referenced pointer. And it's ambiguous: does the attribute apply to the
> reference or to the pointer that the reference refers to? (For the nonnull
> attribute, GCC and Clang make different choices here, at least in the cases
> where you can persuade GCC not to reject the attribute!)
Indeed, unlike nonnull, this does become ambiguous. Perhaps it is best to
prohibit it?
How do Clang and GCC make different choices for nonnull; is that a bug? Because
a reference cannot be null, it would seem that it should apply to the pointer
being bound.
http://reviews.llvm.org/D4601
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits