<div dir="ltr">This test fails on OS X for me:<div><br></div><div><br></div><div><div>Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..</div><div>FAIL: libc++abi :: incomplete_type.sh.cpp (29529 of 29545)</div><div>******************** TEST 'libc++abi :: incomplete_type.sh.cpp' FAILED ********************</div><div>Script:</div><div>--</div><div>/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -v -DLIBCXXABI_NO_TIMER -funwind-tables -std=c++1z -nostdinc++ -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -c /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp -o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o</div><div>/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -v -DLIBCXXABI_NO_TIMER -funwind-tables -std=c++1z -nostdinc++ -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -c /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp -o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o -DTU_ONE</div><div>/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -v -nodefaultlibs -L/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -Wl,-rpath,/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -lc++ -lc++abi -lSystem -o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o</div><div>/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe</div><div>--</div><div>Exit Code: 134</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>Apple LLVM version 7.0.0 (clang-700.1.76)</div><div>Target: x86_64-apple-darwin15.0.0</div><div>Thread model: posix</div><div> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name incomplete_type.sh.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 253.6 -v -dwarf-column-info -coverage-file /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o -nostdinc++ -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -D LIBCXXABI_NO_TIMER -I /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o -x c++ /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp</div><div>clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target x86_64-apple-darwin15.0.0</div><div>ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"</div><div>ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"</div><div>#include "..." search starts here:</div><div>#include <...> search starts here:</div><div> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include</div><div> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include</div><div> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include</div><div> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include</div><div> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include</div><div> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory)</div><div>End of search list.</div><div>Apple LLVM version 7.0.0 (clang-700.1.76)</div><div>Target: x86_64-apple-darwin15.0.0</div><div>Thread model: posix</div><div> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name incomplete_type.sh.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 253.6 -v -dwarf-column-info -coverage-file /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o -nostdinc++ -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -D LIBCXXABI_NO_TIMER -D TU_ONE -I /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o -x c++ /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp</div><div>clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target x86_64-apple-darwin15.0.0</div><div>ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"</div><div>ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"</div><div>#include "..." search starts here:</div><div>#include <...> search starts here:</div><div> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include</div><div> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include</div><div> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include</div><div> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include</div><div> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include</div><div> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory)</div><div>End of search list.</div><div>Apple LLVM version 7.0.0 (clang-700.1.76)</div><div>Target: x86_64-apple-darwin15.0.0</div><div>Thread model: posix</div><div> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.11.0 -o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe -L/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -rpath /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -lc++ -lc++abi -lSystem /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o</div><div>libc++abi.dylib: terminating with uncaught exception of type int NeverDefined::*</div><div>/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.script: line 4: 58282 Abort trap: 6           /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe</div><div><br></div><div>--</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 23, 2015 at 2:04 AM, 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 Dec 23 01:04:32 2015<br>
New Revision: 256323<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=256323&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=256323&view=rev</a><br>
Log:<br>
Add new tests for throwing incomplete pointer types<br>
<br>
Modified:<br>
    libcxxabi/trunk/test/incomplete_type.sh.cpp<br>
<br>
Modified: libcxxabi/trunk/test/incomplete_type.sh.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/incomplete_type.sh.cpp?rev=256323&r1=256322&r2=256323&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/incomplete_type.sh.cpp?rev=256323&r1=256322&r2=256323&view=diff</a><br>
==============================================================================<br>
--- libcxxabi/trunk/test/incomplete_type.sh.cpp (original)<br>
+++ libcxxabi/trunk/test/incomplete_type.sh.cpp Wed Dec 23 01:04:32 2015<br>
@@ -14,9 +14,9 @@<br>
 // incomplete flags set, equality can be tested by comparing the type_info<br>
 // addresses.<br>
<br>
-// RUN: %cxx %compile_flags -c %s -o %t.one.o<br>
-// RUN: %cxx %compile_flags -c %s -o %t.two.o -DTU_ONE<br>
-// RUN: %cxx %link_flags -o %t.exe %t.one.o %t.two.o<br>
+// RUN: %cxx %flags %compile_flags -c %s -o %t.one.o<br>
+// RUN: %cxx %flags %compile_flags -c %s -o %t.two.o -DTU_ONE<br>
+// RUN: %cxx %flags %link_flags -o %t.exe %t.one.o %t.two.o<br>
 // RUN: %t.exe<br>
<br>
 #include <stdio.h><br>
@@ -24,28 +24,42 @@<br>
 #include <typeinfo><br>
<br>
 struct NeverDefined;<br>
-void ThrowNeverDefined();<br>
+void ThrowNeverDefinedMP();<br>
<br>
 struct IncompleteAtThrow;<br>
-void ThrowIncomplete();<br>
-std::type_info const& ReturnTypeInfoIncomplete();<br>
+void ThrowIncompleteMP();<br>
+void ThrowIncompletePP();<br>
+void ThrowIncompletePMP();<br>
+std::type_info const& ReturnTypeInfoIncompleteMP();<br>
+std::type_info const& ReturnTypeInfoIncompletePP();<br>
<br>
 struct CompleteAtThrow;<br>
-void ThrowComplete();<br>
-std::type_info const& ReturnTypeInfoComplete();<br>
+void ThrowCompleteMP();<br>
+void ThrowCompletePP();<br>
+void ThrowCompletePMP();<br>
+std::type_info const& ReturnTypeInfoCompleteMP();<br>
+std::type_info const& ReturnTypeInfoCompletePP();<br>
<br>
 void ThrowNullptr();<br>
<br>
 #ifndef TU_ONE<br>
<br>
-void ThrowNeverDefined() { throw (int NeverDefined::*)nullptr; }<br>
+void ThrowNeverDefinedMP() { throw (int NeverDefined::*)nullptr; }<br>
<br>
-void ThrowIncomplete() { throw (int IncompleteAtThrow::*)nullptr; }<br>
-std::type_info const& ReturnTypeInfoIncomplete() { return typeid(int IncompleteAtThrow::*); }<br>
+void ThrowIncompleteMP() { throw (int IncompleteAtThrow::*)nullptr; }<br>
+void ThrowIncompletePP() { throw (IncompleteAtThrow**)nullptr; }<br>
+void ThrowIncompletePMP() { throw (int IncompleteAtThrow::**)nullptr; }<br>
+<br>
+std::type_info const& ReturnTypeInfoIncompleteMP() { return typeid(int IncompleteAtThrow::*); }<br>
+std::type_info const& ReturnTypeInfoIncompletePP() { return typeid(IncompleteAtThrow**); }<br>
<br>
 struct CompleteAtThrow {};<br>
-void ThrowComplete() { throw (int CompleteAtThrow::*)nullptr; }<br>
-std::type_info const& ReturnTypeInfoComplete() { return typeid(int CompleteAtThrow::*); }<br>
+void ThrowCompleteMP() { throw (int CompleteAtThrow::*)nullptr; }<br>
+void ThrowCompletePP() { throw (CompleteAtThrow**)nullptr; }<br>
+void ThrowCompletePMP() { throw (int CompleteAtThrow::**)nullptr; }<br>
+<br>
+std::type_info const& ReturnTypeInfoCompleteMP() { return typeid(int CompleteAtThrow::*); }<br>
+std::type_info const& ReturnTypeInfoCompletePP() { return typeid(CompleteAtThrow**); }<br>
<br>
 void ThrowNullptr() { throw nullptr; }<br>
<br>
@@ -54,16 +68,81 @@ void ThrowNullptr() { throw nullptr; }<br>
 struct IncompleteAtThrow {};<br>
<br>
 int main() {<br>
-  assert(ReturnTypeInfoIncomplete() != typeid(int IncompleteAtThrow::*));<br>
   try {<br>
-    ThrowIncomplete();<br>
+    ThrowNeverDefinedMP();<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (int CompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (int NeverDefined::*) {}<br>
+<br>
+  assert(ReturnTypeInfoIncompleteMP() != typeid(int IncompleteAtThrow::*));<br>
+  try {<br>
+    ThrowIncompleteMP();<br>
+    assert(false);<br>
+  } catch (CompleteAtThrow**) {<br>
+    assert(false);<br>
+  } catch (int CompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (IncompleteAtThrow**) {<br>
+    assert(false);<br>
   } catch (int IncompleteAtThrow::*) {}<br>
<br>
-  assert(ReturnTypeInfoComplete() != typeid(int CompleteAtThrow::*));<br>
+  assert(ReturnTypeInfoIncompletePP() != typeid(IncompleteAtThrow**));<br>
+  try {<br>
+    ThrowIncompletePP();<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (IncompleteAtThrow**) {}<br>
+<br>
   try {<br>
-    ThrowComplete();<br>
+    ThrowIncompletePMP();<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (IncompleteAtThrow**) {<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::**) {}<br>
+<br>
+  assert(ReturnTypeInfoCompleteMP() != typeid(int CompleteAtThrow::*));<br>
+  try {<br>
+    ThrowCompleteMP();<br>
+    assert(false);<br>
+  } catch (IncompleteAtThrow**) {<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (CompleteAtThrow**) {<br>
+    assert(false);<br>
   } catch (int CompleteAtThrow::*) {}<br>
<br>
+  assert(ReturnTypeInfoCompletePP() != typeid(CompleteAtThrow**));<br>
+  try {<br>
+    ThrowCompletePP();<br>
+    assert(false);<br>
+  } catch (IncompleteAtThrow**) {<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (int CompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (CompleteAtThrow**) {}<br>
+<br>
+  try {<br>
+    ThrowCompletePMP();<br>
+    assert(false);<br>
+  } catch (IncompleteAtThrow**) {<br>
+    assert(false);<br>
+  } catch (int IncompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (int CompleteAtThrow::*) {<br>
+    assert(false);<br>
+  } catch (CompleteAtThrow**) {<br>
+    assert(false);<br>
+  } catch (int CompleteAtThrow::**) {}<br>
+<br>
 #if __cplusplus >= 201103L<br>
   // Catch nullptr as complete type<br>
   try {<br>
@@ -76,7 +155,7 @@ int main() {<br>
   } catch (int CompleteAtThrow::*) {}<br>
   // Catch nullptr as a type that is never complete.<br>
   try {<br>
-    ThrowNeverDefined();<br>
+    ThrowNullptr();<br>
   } catch (int NeverDefined::*) {}<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>