<div dir="ltr">Hi Eric,<div><br></div><div>I'm seeing failures on the builders that look like they're related to this - <a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/359/">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/359/</a></div><div><br></div><div>Could you look in to what's going on here?</div><div><br></div><div>- Lang.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 19, 2016 at 11:36 PM, Eric Fiselier via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ericwf<br>
Date: Wed Jul 20 01:36:11 2016<br>
New Revision: 276092<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=276092&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=276092&view=rev</a><br>
Log:<br>
Unbreak is_constructible tests for Clang <= 3.7.<br>
<br>
There is a bug in Clang's __is_constructible builtin that causes it<br>
to return true for function types; ex [T = void()].<br>
<br>
<br>
<br>
Modified:<br>
    libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp<br>
    libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp<br>
<br>
Modified: libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp?rev=276092&r1=276091&r2=276092&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp?rev=276092&r1=276091&r2=276092&view=diff</a><br>
==============================================================================<br>
--- libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp (original)<br>
+++ libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp Wed Jul 20 01:36:11 2016<br>
@@ -151,9 +151,21 @@ int main()<br>
     test_is_constructible<PrivateDtor&, PrivateDtor&>();<br>
     test_is_not_constructible<PrivateDtor, int>();<br>
<br>
+    test_is_not_constructible<void() const, void() const>();<br>
+    test_is_not_constructible<void() const, void*>();<br>
+<br>
+// TODO: Remove this workaround once Clang <= 3.7 are no longer used regularly.<br>
+// In those compiler versions the __is_constructible builtin gives the wrong<br>
+// results for abominable function types.<br>
+#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ < 8<br>
+#define WORKAROUND_CLANG_BUG<br>
+#endif<br>
+#if !defined(WORKAROUND_CLANG_BUG)<br>
+    test_is_not_constructible<void()>();<br>
     test_is_not_constructible<void() const> ();<br>
     test_is_not_constructible<void() volatile> ();<br>
     test_is_not_constructible<void() &> ();<br>
     test_is_not_constructible<void() &&> ();<br>
 #endif<br>
+#endif<br>
 }<br>
<br>
Modified: libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp?rev=276092&r1=276091&r2=276092&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp?rev=276092&r1=276091&r2=276092&view=diff</a><br>
==============================================================================<br>
--- libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp (original)<br>
+++ libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp Wed Jul 20 01:36:11 2016<br>
@@ -107,7 +107,19 @@ int main()<br>
 #if TEST_STD_VER >= 11<br>
     test_is_not_default_constructible<B>();<br>
     test_is_not_default_constructible<int&&>();<br>
+<br>
+// TODO: Remove this workaround once Clang <= 3.7 are no longer used regularly.<br>
+// In those compiler versions the __is_constructible builtin gives the wrong<br>
+// results for abominable function types.<br>
+#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ < 8<br>
+#define WORKAROUND_CLANG_BUG<br>
+#endif<br>
+#if !defined(WORKAROUND_CLANG_BUG)<br>
     test_is_not_default_constructible<void()>();<br>
-    test_is_not_default_constructible<void() const>();<br>
+    test_is_not_default_constructible<void() const> ();<br>
+    test_is_not_default_constructible<void() volatile> ();<br>
+    test_is_not_default_constructible<void() &> ();<br>
+    test_is_not_default_constructible<void() &&> ();<br>
+#endif<br>
 #endif<br>
 }<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>