<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 13, 2015 at 10:41 AM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">On Mon, Jul 13, 2015 at 11:31:54AM -0400, Tom Honermann wrote:<br>
> Clang (3.4-trunk) ignores nonnull attributes on pointer-to-member-function<br>
> declarations.<br>
<br>
</span>You are aware that 3.4-trunk is quite old and we are about to start the<br>
3.7 release cycle?</blockquote><div><br></div><div>I read that as "from version 3.4 to trunk". And it's true: clang trunk still behaves as described. But I'm a bit confused, because the referenced GCC bug report says they made this work:</div><div><br></div><div><div>struct Foo;</div><div>void foo (void (Foo::*) () __attribute__ ((nonnull)));</div></div><div><br></div><div>... where the attribute would presumably apply to the pointer-to-member, and the request is to support this:</div><div><br></div><div><div>void (S::*pmf)(int *p1)</div><div>    __attribute__((nonnull));</div></div><div><br></div><div>... where the attribute (again, presumably) jumps over the pointer-to-member and applies to the pointer parameter? This does not seem consistent. What is the actual GCC behavior?</div></div></div></div>