summaryrefslogtreecommitdiff
path: root/test/test_vector1.pass.cpp
diff options
context:
space:
mode:
authorAsiri Rathnayake <asiri.rathnayake@arm.com>2016-05-31 12:01:32 +0000
committerAsiri Rathnayake <asiri.rathnayake@arm.com>2016-05-31 12:01:32 +0000
commit4174e8b402ba05e3b3e003b1066f1eae6fbeb24b (patch)
tree00a63addfb8fc122d9d3f275d22d2541ea4a63e2 /test/test_vector1.pass.cpp
parent436072f52ff05d69f626a9c7a309a1464758f129 (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.cpp21
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;
}