diff options
author | Asiri Rathnayake <asiri.rathnayake@arm.com> | 2016-05-31 12:01:32 +0000 |
---|---|---|
committer | Asiri Rathnayake <asiri.rathnayake@arm.com> | 2016-05-31 12:01:32 +0000 |
commit | 4174e8b402ba05e3b3e003b1066f1eae6fbeb24b (patch) | |
tree | 00a63addfb8fc122d9d3f275d22d2541ea4a63e2 /test/test_vector1.pass.cpp | |
parent | 436072f52ff05d69f626a9c7a309a1464758f129 (diff) |
[libcxxabi] Introduce a -fno-exceptions libc++abi libary variant
Currently there is only support for a -fno-exceptions libc++ build. This is
problematic for functions such as std::terminate() which are defined in
libc++abi and using any of those functions throws away most of the benefits
of using -fno-exceptions (code-size). This patch introduces a -fno-exceptions
libc++abi build to address this issue.
This new variant of libc++abi cannot be linked against any with-exceptions
code as some symbols necessary for handling exceptions are missing in this
library.
Differential revision: http://reviews.llvm.org/D20677
Reviewers: EricWF, mclow.lists, bcraig
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@271267 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/test_vector1.pass.cpp')
-rw-r--r-- | test/test_vector1.pass.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/test/test_vector1.pass.cpp b/test/test_vector1.pass.cpp index 6790cb5..978ed3c 100644 --- a/test/test_vector1.pass.cpp +++ b/test/test_vector1.pass.cpp @@ -47,8 +47,19 @@ int gConstructorCounter; int gConstructorThrowTarget; int gDestructorCounter; int gDestructorThrowTarget; -void throw_construct ( void *p ) { if ( gConstructorCounter == gConstructorThrowTarget ) throw 1; ++gConstructorCounter; } -void throw_destruct ( void *p ) { if ( ++gDestructorCounter == gDestructorThrowTarget ) throw 2; } +void throw_construct ( void *p ) { +#ifndef LIBCXXABI_HAS_NO_EXCEPTIONS + if ( gConstructorCounter == gConstructorThrowTarget ) + throw 1; + ++gConstructorCounter; +#endif +} +void throw_destruct ( void *p ) { +#ifndef LIBCXXABI_HAS_NO_EXCEPTIONS + if ( ++gDestructorCounter == gDestructorThrowTarget ) + throw 2; +#endif +} #if __cplusplus >= 201103L # define CAN_THROW noexcept(false) @@ -146,6 +157,7 @@ int test_counted ( ) { return retVal; } +#ifndef LIBCXXABI_HAS_NO_EXCEPTIONS // Make sure the constructors and destructors are matched int test_exception_in_constructor ( ) { int retVal = 0; @@ -202,7 +214,9 @@ int test_exception_in_constructor ( ) { return retVal; } +#endif +#ifndef LIBCXXABI_HAS_NO_EXCEPTIONS // Make sure the constructors and destructors are matched int test_exception_in_destructor ( ) { int retVal = 0; @@ -253,12 +267,15 @@ int test_exception_in_destructor ( ) { return retVal; } +#endif int main ( int argc, char *argv [] ) { int retVal = 0; retVal += test_empty (); retVal += test_counted (); +#ifndef LIBCXXABI_HAS_NO_EXCEPTIONS retVal += test_exception_in_constructor (); retVal += test_exception_in_destructor (); +#endif return retVal; } |