<div dir="ltr">Hi Hans,<div><br></div><div>Can I have today to work on this? If I can't come up with a fix we can revert tommorow.</div><div>I'll ping you tommorow with the result.</div><div><br></div><div>Does that work?</div><div><br></div><div>/Eric</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 19, 2016 at 10:30 AM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Nico pointed out his revert should probably be merged to 3.8.<br>
<br>
Has there been any follow-up here, e.g. fixes, that I should be aware of?<br>
<br>
Thanks,<br>
Hans<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Jan 15, 2016 at 7:48 AM, Nico Weber via cfe-commits<br>
<<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br>
> I reverted this and 322 for now in 257896.<br>
><br>
> On Fri, Jan 15, 2016 at 10:36 AM, Nico Weber <<a href="mailto:thakis@chromium.org">thakis@chromium.org</a>> wrote:<br>
>><br>
>> This test fails on OS X for me:<br>
>><br>
>><br>
>> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..<br>
>> FAIL: libc++abi :: incomplete_type.sh.cpp (29529 of 29545)<br>
>> ******************** TEST 'libc++abi :: incomplete_type.sh.cpp' FAILED<br>
>> ********************<br>
>> Script:<br>
>> --<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++<br>
>> -v -DLIBCXXABI_NO_TIMER -funwind-tables -std=c++1z -nostdinc++<br>
>> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include<br>
>> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>> -isysroot<br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk<br>
>> -c<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp<br>
>> -o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++<br>
>> -v -DLIBCXXABI_NO_TIMER -funwind-tables -std=c++1z -nostdinc++<br>
>> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include<br>
>> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>> -isysroot<br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk<br>
>> -c<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp<br>
>> -o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o<br>
>> -DTU_ONE<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++<br>
>> -v -nodefaultlibs<br>
>> -L/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib<br>
>> -Wl,-rpath,/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -lc++<br>
>> -lc++abi -lSystem -o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o<br>
>><br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe<br>
>> --<br>
>> Exit Code: 134<br>
>><br>
>> Command Output (stderr):<br>
>> --<br>
>> Apple LLVM version 7.0.0 (clang-700.1.76)<br>
>> Target: x86_64-apple-darwin15.0.0<br>
>> Thread model: posix<br>
>><br>
>> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"<br>
>> -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage<br>
>> -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free<br>
>> -disable-llvm-verifier -main-file-name incomplete_type.sh.cpp<br>
>> -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim<br>
>> -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 253.6<br>
>> -v -dwarf-column-info -coverage-file<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>> -nostdinc++ -resource-dir<br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0<br>
>> -isysroot<br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk<br>
>> -D LIBCXXABI_NO_TIMER -I<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>> -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test<br>
>> -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign<br>
>> -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature<br>
>> -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option<br>
>> -o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>> -x c++<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp<br>
>> clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target<br>
>> x86_64-apple-darwin15.0.0<br>
>> ignoring nonexistent directory<br>
>> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"<br>
>> ignoring nonexistent directory<br>
>> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"<br>
>> #include "..." search starts here:<br>
>> #include <...> search starts here:<br>
>>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include<br>
>>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks<br>
>> (framework directory)<br>
>> End of search list.<br>
>> Apple LLVM version 7.0.0 (clang-700.1.76)<br>
>> Target: x86_64-apple-darwin15.0.0<br>
>> Thread model: posix<br>
>><br>
>> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"<br>
>> -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage<br>
>> -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free<br>
>> -disable-llvm-verifier -main-file-name incomplete_type.sh.cpp<br>
>> -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim<br>
>> -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 253.6<br>
>> -v -dwarf-column-info -coverage-file<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o<br>
>> -nostdinc++ -resource-dir<br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0<br>
>> -isysroot<br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk<br>
>> -D LIBCXXABI_NO_TIMER -D TU_ONE -I<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>> -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test<br>
>> -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign<br>
>> -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature<br>
>> -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option<br>
>> -o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o<br>
>> -x c++<br>
>> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp<br>
>> clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target<br>
>> x86_64-apple-darwin15.0.0<br>
>> ignoring nonexistent directory<br>
>> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"<br>
>> ignoring nonexistent directory<br>
>> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"<br>
>> #include "..." search starts here:<br>
>> #include <...> search starts here:<br>
>>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include<br>
>>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include<br>
>><br>
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks<br>
>> (framework directory)<br>
>> End of search list.<br>
>> Apple LLVM version 7.0.0 (clang-700.1.76)<br>
>> Target: x86_64-apple-darwin15.0.0<br>
>> Thread model: posix<br>
>><br>
>> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"<br>
>> -demangle -dynamic -arch x86_64 -macosx_version_min 10.11.0 -o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe<br>
>> -L/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -rpath<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -lc++ -lc++abi<br>
>> -lSystem<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o<br>
>> libc++abi.dylib: terminating with uncaught exception of type int<br>
>> NeverDefined::*<br>
>><br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.script:<br>
>> line 4: 58282 Abort trap: 6<br>
>> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe<br>
>><br>
>> --<br>
>><br>
>> On Wed, Dec 23, 2015 at 2:04 AM, Eric Fiselier via cfe-commits<br>
>> <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br>
>>><br>
>>> 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:<br>
>>> <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>
>>> ==============================================================================<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<br>
>>> 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<br>
>>> 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<br>
>>> IncompleteAtThrow::*); }<br>
>>> +std::type_info const& ReturnTypeInfoIncompletePP() { return<br>
>>> typeid(IncompleteAtThrow**); }<br>
>>><br>
>>>  struct CompleteAtThrow {};<br>
>>> -void ThrowComplete() { throw (int CompleteAtThrow::*)nullptr; }<br>
>>> -std::type_info const& ReturnTypeInfoComplete() { return typeid(int<br>
>>> 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<br>
>>> CompleteAtThrow::*); }<br>
>>> +std::type_info const& ReturnTypeInfoCompletePP() { return<br>
>>> 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<br>
>>> 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<br>
>>> 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>
>><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>
><br>
</div></div></blockquote></div><br></div>