<div dir="ltr">Equally as good. Thanks.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 19, 2016 at 2:09 PM, 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">Actually, I'll go ahead and merge Nico's revert to 3.8 for now to<br>
unbreak the build there, and then I'll be happy to merge fixes when<br>
you've looked into it. Sorry for the double messaging.<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Jan 19, 2016 at 9:43 AM, Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:<br>
> That sounds great. Thanks!<br>
><br>
> On Tue, Jan 19, 2016 at 9:33 AM, Eric Fiselier <<a href="mailto:eric@efcs.ca">eric@efcs.ca</a>> wrote:<br>
>> Hi Hans,<br>
>><br>
>> Can I have today to work on this? If I can't come up with a fix we can<br>
>> revert tommorow.<br>
>> I'll ping you tommorow with the result.<br>
>><br>
>> Does that work?<br>
>><br>
>> /Eric<br>
>><br>
>> On Tue, Jan 19, 2016 at 10:30 AM, Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:<br>
>>><br>
>>> 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>
>>><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>><br>
>>> > 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>
>>> >><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>
>>> >><br>
>>> >> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>>> >> -isysroot<br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk<br>
>>> >> -c<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp<br>
>>> >> -o<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<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>
>>> >><br>
>>> >> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>>> >> -isysroot<br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk<br>
>>> >> -c<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp<br>
>>> >> -o<br>
>>> >><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>
>>> >><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<br>
>>> >> -lc++<br>
>>> >> -lc++abi -lSystem -o<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o<br>
>>> >><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>
>>> >><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<br>
>>> >> -mdisable-fp-elim<br>
>>> >> -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version<br>
>>> >> 253.6<br>
>>> >> -v -dwarf-column-info -coverage-file<br>
>>> >><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>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0<br>
>>> >> -isysroot<br>
>>> >><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<br>
>>> >> -I<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>>> >> -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir<br>
>>> >><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<br>
>>> >> -fencode-extended-block-signature<br>
>>> >> -fcxx-exceptions -fexceptions -fmax-type-align=16<br>
>>> >> -fdiagnostics-show-option<br>
>>> >> -o<br>
>>> >><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>
>>> >><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>
>>> >><br>
>>> >> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"<br>
>>> >> ignoring nonexistent directory<br>
>>> >><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>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>>> >><br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include<br>
>>> >><br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include<br>
>>> >><br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include<br>
>>> >><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>
>>> >><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<br>
>>> >> -mdisable-fp-elim<br>
>>> >> -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version<br>
>>> >> 253.6<br>
>>> >> -v -dwarf-column-info -coverage-file<br>
>>> >><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>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0<br>
>>> >> -isysroot<br>
>>> >><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<br>
>>> >> -I<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>>> >> -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir<br>
>>> >><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<br>
>>> >> -fencode-extended-block-signature<br>
>>> >> -fcxx-exceptions -fexceptions -fmax-type-align=16<br>
>>> >> -fdiagnostics-show-option<br>
>>> >> -o<br>
>>> >><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>
>>> >><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>
>>> >><br>
>>> >> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"<br>
>>> >> ignoring nonexistent directory<br>
>>> >><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>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include<br>
>>> >><br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include<br>
>>> >><br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include<br>
>>> >><br>
>>> >><br>
>>> >> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include<br>
>>> >><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>
>>> >><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>
>>> >><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++<br>
>>> >> -lc++abi<br>
>>> >> -lSystem<br>
>>> >><br>
>>> >> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o<br>
>>> >><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>
>>> >><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>
>>> >><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>
>>> >>><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>
>>> >>> ==============================================================================<br>
>>> >>> --- libcxxabi/trunk/test/incomplete_type.sh.cpp (original)<br>
>>> >>> +++ libcxxabi/trunk/test/incomplete_type.sh.cpp Wed Dec 23 01:04:32<br>
>>> >>> 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>
>>> >>> +<br>
>>> >>> +std::type_info const& ReturnTypeInfoIncompleteMP() { return<br>
>>> >>> 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() !=<br>
>>> >>> 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<br>
>>> >>> 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>
>><br>
>><br>
</div></div></blockquote></div><br></div>