dcoughlin added a comment.

In https://reviews.llvm.org/D39518#914515, @george.karpenkov wrote:

> Updated the diff, addressed review concerns.
>  Made it more explicit in comments in tests that we do not crash on libcxx03 
> implementation, but that we don't model it either.
>
> @dcoughlin sorry I disagree on previous testing notes (requiring to 
> explicitly test that the std::call_once on libcxx03 is ignored).
>  Current tests test exactly the specification we want them to test: libcxx11 
> is modeled, libcxx03 does not crash.


At a minimum we need to test that calling call_once() doesn't emit a 
diagnostic. If the analyzer were to emit a diagnostic on every call, that would 
be very bad.

It would probably also be good to also test that the arguments are escaped as 
well.

> Testing actual behavior on libcxx03 would entail many problems, with very 
> little benefit:
> 
> a) The fact that libcxx03 std::call_once is ignored is not part of the 
> specification, it's just not specified
>  b) Splitting libcxx03 into a separate file would case many issues:

You don't have to copy the whole file. Please, just add a test (somewhere, 
anywhere) making sure that that the analyzer does what we expect on a call to 
call_once() under libcxx03. This should not be difficult and it tests a 
supported analyzer configuration.

> c) Having separate behaviors with `ifndef` would make the file larger, 
> increase the cognitive overhead, and also make writing future tests more 
> difficult. This is also something easy to forget while writing future tests. 
> Also it's not clear how `ifndef` would even help, since LIT directives are 
> not controlled by the preprocessor.

You are testing with `-verify` and `// expected-warning`. Note that `-verify` 
does respect the preprocessor; this is a pattern used throughout the clang 
tests.


https://reviews.llvm.org/D39518



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

Reply via email to