jamesr added a comment.
Thank you for posting the LIT changes - that's the part I was unable to figure
out. I have a number of additional failure test cases that I will add.
I don't know what sort of code this could break, although I certainly don't
claim to know more about these annotations than the author. Do you have a link
to that discussion handy? The most obvious way this could break existing code
would be if existing code was compiling with -Wthread-safety and had its own
annotations that were inconsistent with these, but as it's a compile error to
declare thread-safety relationships with types that aren't already annotated I
can't see how any code that would be broken could compile today. Concretely,
if some code is written like this today:
struct Foo {
int a __attribute__((guarded_by(m)));
std::mutex m;
};
void Bad(Foo* f) { f->a++; }
will fail to compile without this patch in libc++ with the error:
/tmp/test.cc:4:26: error: 'guarded_by' attribute requires arguments whose type
is annotated with 'capability' attribute; type here is 'std::mutex'
[-Werror,-Wthread-safety-attributes]
int a __attribute__((guarded_by(m))
http://reviews.llvm.org/D14731
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits