[libcxxabi] r256323 - Add new tests for throwing incomplete pointer types

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 19 13:17:27 PST 2016


Equally as good. Thanks.

On Tue, Jan 19, 2016 at 2:09 PM, Hans Wennborg <hans at chromium.org> wrote:

> Actually, I'll go ahead and merge Nico's revert to 3.8 for now to
> unbreak the build there, and then I'll be happy to merge fixes when
> you've looked into it. Sorry for the double messaging.
>
> On Tue, Jan 19, 2016 at 9:43 AM, Hans Wennborg <hans at chromium.org> wrote:
> > That sounds great. Thanks!
> >
> > On Tue, Jan 19, 2016 at 9:33 AM, Eric Fiselier <eric at efcs.ca> wrote:
> >> Hi Hans,
> >>
> >> Can I have today to work on this? If I can't come up with a fix we can
> >> revert tommorow.
> >> I'll ping you tommorow with the result.
> >>
> >> Does that work?
> >>
> >> /Eric
> >>
> >> On Tue, Jan 19, 2016 at 10:30 AM, Hans Wennborg <hans at chromium.org>
> wrote:
> >>>
> >>> Nico pointed out his revert should probably be merged to 3.8.
> >>>
> >>> Has there been any follow-up here, e.g. fixes, that I should be aware
> of?
> >>>
> >>> Thanks,
> >>> Hans
> >>>
> >>> On Fri, Jan 15, 2016 at 7:48 AM, Nico Weber via cfe-commits
> >>> <cfe-commits at lists.llvm.org> wrote:
> >>> > I reverted this and 322 for now in 257896.
> >>> >
> >>> > On Fri, Jan 15, 2016 at 10:36 AM, Nico Weber <thakis at chromium.org>
> >>> > wrote:
> >>> >>
> >>> >> This test fails on OS X for me:
> >>> >>
> >>> >>
> >>> >> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
> >>> >> FAIL: libc++abi :: incomplete_type.sh.cpp (29529 of 29545)
> >>> >> ******************** TEST 'libc++abi :: incomplete_type.sh.cpp'
> FAILED
> >>> >> ********************
> >>> >> Script:
> >>> >> --
> >>> >>
> >>> >>
> >>> >>
> /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
> >>> >>
> >>> >>
> >>> >>
> /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
> >>> >>
> >>> >>
> >>> >>
> /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
> >>> >>
> >>> >>
> >>> >>
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe
> >>> >> --
> >>> >> Exit Code: 134
> >>> >>
> >>> >> Command Output (stderr):
> >>> >> --
> >>> >> Apple LLVM version 7.0.0 (clang-700.1.76)
> >>> >> Target: x86_64-apple-darwin15.0.0
> >>> >> Thread model: posix
> >>> >>
> >>> >>
> >>> >>
> "/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
> >>> >> clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target
> >>> >> x86_64-apple-darwin15.0.0
> >>> >> ignoring nonexistent directory
> >>> >>
> >>> >>
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"
> >>> >> ignoring nonexistent directory
> >>> >>
> >>> >>
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"
> >>> >> #include "..." search starts here:
> >>> >> #include <...> search starts here:
> >>> >>
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include
> >>> >>
> >>> >>
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks
> >>> >> (framework directory)
> >>> >> End of search list.
> >>> >> Apple LLVM version 7.0.0 (clang-700.1.76)
> >>> >> Target: x86_64-apple-darwin15.0.0
> >>> >> Thread model: posix
> >>> >>
> >>> >>
> >>> >>
> "/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
> >>> >> clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target
> >>> >> x86_64-apple-darwin15.0.0
> >>> >> ignoring nonexistent directory
> >>> >>
> >>> >>
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"
> >>> >> ignoring nonexistent directory
> >>> >>
> >>> >>
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"
> >>> >> #include "..." search starts here:
> >>> >> #include <...> search starts here:
> >>> >>
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include
> >>> >>
> >>> >>
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
> >>> >>
> >>> >>
> >>> >>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks
> >>> >> (framework directory)
> >>> >> End of search list.
> >>> >> Apple LLVM version 7.0.0 (clang-700.1.76)
> >>> >> Target: x86_64-apple-darwin15.0.0
> >>> >> Thread model: posix
> >>> >>
> >>> >>
> >>> >>
> "/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
> >>> >> libc++abi.dylib: terminating with uncaught exception of type int
> >>> >> NeverDefined::*
> >>> >>
> >>> >>
> >>> >>
> /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
> >>> >>
> >>> >> --
> >>> >>
> >>> >> On Wed, Dec 23, 2015 at 2:04 AM, Eric Fiselier via cfe-commits
> >>> >> <cfe-commits at lists.llvm.org> wrote:
> >>> >>>
> >>> >>> Author: ericwf
> >>> >>> Date: Wed Dec 23 01:04:32 2015
> >>> >>> New Revision: 256323
> >>> >>>
> >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=256323&view=rev
> >>> >>> Log:
> >>> >>> Add new tests for throwing incomplete pointer types
> >>> >>>
> >>> >>> Modified:
> >>> >>>     libcxxabi/trunk/test/incomplete_type.sh.cpp
> >>> >>>
> >>> >>> Modified: libcxxabi/trunk/test/incomplete_type.sh.cpp
> >>> >>> URL:
> >>> >>>
> >>> >>>
> http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/incomplete_type.sh.cpp?rev=256323&r1=256322&r2=256323&view=diff
> >>> >>>
> >>> >>>
> >>> >>>
> ==============================================================================
> >>> >>> --- libcxxabi/trunk/test/incomplete_type.sh.cpp (original)
> >>> >>> +++ libcxxabi/trunk/test/incomplete_type.sh.cpp Wed Dec 23 01:04:32
> >>> >>> 2015
> >>> >>> @@ -14,9 +14,9 @@
> >>> >>>  // incomplete flags set, equality can be tested by comparing the
> >>> >>> type_info
> >>> >>>  // addresses.
> >>> >>>
> >>> >>> -// RUN: %cxx %compile_flags -c %s -o %t.one.o
> >>> >>> -// RUN: %cxx %compile_flags -c %s -o %t.two.o -DTU_ONE
> >>> >>> -// RUN: %cxx %link_flags -o %t.exe %t.one.o %t.two.o
> >>> >>> +// RUN: %cxx %flags %compile_flags -c %s -o %t.one.o
> >>> >>> +// RUN: %cxx %flags %compile_flags -c %s -o %t.two.o -DTU_ONE
> >>> >>> +// RUN: %cxx %flags %link_flags -o %t.exe %t.one.o %t.two.o
> >>> >>>  // RUN: %t.exe
> >>> >>>
> >>> >>>  #include <stdio.h>
> >>> >>> @@ -24,28 +24,42 @@
> >>> >>>  #include <typeinfo>
> >>> >>>
> >>> >>>  struct NeverDefined;
> >>> >>> -void ThrowNeverDefined();
> >>> >>> +void ThrowNeverDefinedMP();
> >>> >>>
> >>> >>>  struct IncompleteAtThrow;
> >>> >>> -void ThrowIncomplete();
> >>> >>> -std::type_info const& ReturnTypeInfoIncomplete();
> >>> >>> +void ThrowIncompleteMP();
> >>> >>> +void ThrowIncompletePP();
> >>> >>> +void ThrowIncompletePMP();
> >>> >>> +std::type_info const& ReturnTypeInfoIncompleteMP();
> >>> >>> +std::type_info const& ReturnTypeInfoIncompletePP();
> >>> >>>
> >>> >>>  struct CompleteAtThrow;
> >>> >>> -void ThrowComplete();
> >>> >>> -std::type_info const& ReturnTypeInfoComplete();
> >>> >>> +void ThrowCompleteMP();
> >>> >>> +void ThrowCompletePP();
> >>> >>> +void ThrowCompletePMP();
> >>> >>> +std::type_info const& ReturnTypeInfoCompleteMP();
> >>> >>> +std::type_info const& ReturnTypeInfoCompletePP();
> >>> >>>
> >>> >>>  void ThrowNullptr();
> >>> >>>
> >>> >>>  #ifndef TU_ONE
> >>> >>>
> >>> >>> -void ThrowNeverDefined() { throw (int NeverDefined::*)nullptr; }
> >>> >>> +void ThrowNeverDefinedMP() { throw (int NeverDefined::*)nullptr; }
> >>> >>>
> >>> >>> -void ThrowIncomplete() { throw (int IncompleteAtThrow::*)nullptr;
> }
> >>> >>> -std::type_info const& ReturnTypeInfoIncomplete() { return
> typeid(int
> >>> >>> IncompleteAtThrow::*); }
> >>> >>> +void ThrowIncompleteMP() { throw (int
> IncompleteAtThrow::*)nullptr; }
> >>> >>> +void ThrowIncompletePP() { throw (IncompleteAtThrow**)nullptr; }
> >>> >>> +void ThrowIncompletePMP() { throw (int
> IncompleteAtThrow::**)nullptr;
> >>> >>> }
> >>> >>> +
> >>> >>> +std::type_info const& ReturnTypeInfoIncompleteMP() { return
> >>> >>> typeid(int
> >>> >>> IncompleteAtThrow::*); }
> >>> >>> +std::type_info const& ReturnTypeInfoIncompletePP() { return
> >>> >>> typeid(IncompleteAtThrow**); }
> >>> >>>
> >>> >>>  struct CompleteAtThrow {};
> >>> >>> -void ThrowComplete() { throw (int CompleteAtThrow::*)nullptr; }
> >>> >>> -std::type_info const& ReturnTypeInfoComplete() { return typeid(int
> >>> >>> CompleteAtThrow::*); }
> >>> >>> +void ThrowCompleteMP() { throw (int CompleteAtThrow::*)nullptr; }
> >>> >>> +void ThrowCompletePP() { throw (CompleteAtThrow**)nullptr; }
> >>> >>> +void ThrowCompletePMP() { throw (int CompleteAtThrow::**)nullptr;
> }
> >>> >>> +
> >>> >>> +std::type_info const& ReturnTypeInfoCompleteMP() { return
> typeid(int
> >>> >>> CompleteAtThrow::*); }
> >>> >>> +std::type_info const& ReturnTypeInfoCompletePP() { return
> >>> >>> typeid(CompleteAtThrow**); }
> >>> >>>
> >>> >>>  void ThrowNullptr() { throw nullptr; }
> >>> >>>
> >>> >>> @@ -54,16 +68,81 @@ void ThrowNullptr() { throw nullptr; }
> >>> >>>  struct IncompleteAtThrow {};
> >>> >>>
> >>> >>>  int main() {
> >>> >>> -  assert(ReturnTypeInfoIncomplete() != typeid(int
> >>> >>> IncompleteAtThrow::*));
> >>> >>>    try {
> >>> >>> -    ThrowIncomplete();
> >>> >>> +    ThrowNeverDefinedMP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int CompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int NeverDefined::*) {}
> >>> >>> +
> >>> >>> +  assert(ReturnTypeInfoIncompleteMP() != typeid(int
> >>> >>> IncompleteAtThrow::*));
> >>> >>> +  try {
> >>> >>> +    ThrowIncompleteMP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (CompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int CompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (IncompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>>    } catch (int IncompleteAtThrow::*) {}
> >>> >>>
> >>> >>> -  assert(ReturnTypeInfoComplete() != typeid(int
> CompleteAtThrow::*));
> >>> >>> +  assert(ReturnTypeInfoIncompletePP() !=
> >>> >>> typeid(IncompleteAtThrow**));
> >>> >>> +  try {
> >>> >>> +    ThrowIncompletePP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (IncompleteAtThrow**) {}
> >>> >>> +
> >>> >>>    try {
> >>> >>> -    ThrowComplete();
> >>> >>> +    ThrowIncompletePMP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (IncompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::**) {}
> >>> >>> +
> >>> >>> +  assert(ReturnTypeInfoCompleteMP() != typeid(int
> >>> >>> CompleteAtThrow::*));
> >>> >>> +  try {
> >>> >>> +    ThrowCompleteMP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (IncompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (CompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>>    } catch (int CompleteAtThrow::*) {}
> >>> >>>
> >>> >>> +  assert(ReturnTypeInfoCompletePP() != typeid(CompleteAtThrow**));
> >>> >>> +  try {
> >>> >>> +    ThrowCompletePP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (IncompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int CompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (CompleteAtThrow**) {}
> >>> >>> +
> >>> >>> +  try {
> >>> >>> +    ThrowCompletePMP();
> >>> >>> +    assert(false);
> >>> >>> +  } catch (IncompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int IncompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int CompleteAtThrow::*) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (CompleteAtThrow**) {
> >>> >>> +    assert(false);
> >>> >>> +  } catch (int CompleteAtThrow::**) {}
> >>> >>> +
> >>> >>>  #if __cplusplus >= 201103L
> >>> >>>    // Catch nullptr as complete type
> >>> >>>    try {
> >>> >>> @@ -76,7 +155,7 @@ int main() {
> >>> >>>    } catch (int CompleteAtThrow::*) {}
> >>> >>>    // Catch nullptr as a type that is never complete.
> >>> >>>    try {
> >>> >>> -    ThrowNeverDefined();
> >>> >>> +    ThrowNullptr();
> >>> >>>    } catch (int NeverDefined::*) {}
> >>> >>>  #endif
> >>> >>>  }
> >>> >>>
> >>> >>>
> >>> >>> _______________________________________________
> >>> >>> cfe-commits mailing list
> >>> >>> cfe-commits at lists.llvm.org
> >>> >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> >>> >>
> >>> >>
> >>> >
> >>> >
> >>> > _______________________________________________
> >>> > cfe-commits mailing list
> >>> > cfe-commits at lists.llvm.org
> >>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> >>> >
> >>
> >>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160119/45734c42/attachment-0001.html>


More information about the cfe-commits mailing list