[llvm-commits] [test-suite] r139730 - in /test-suite/trunk/SingleSource/UnitTests/EH: ./ Makefile rethrow-1.cpp rethrow-1.reference_output rethrow-2.cpp rethrow-2.reference_output simple-1.cpp simple-1.reference_output simple-2.cpp simple-2.reference_output

Bill Wendling isanbard at gmail.com
Wed Sep 14 13:46:19 PDT 2011


Author: void
Date: Wed Sep 14 15:46:19 2011
New Revision: 139730

URL: http://llvm.org/viewvc/llvm-project?rev=139730&view=rev
Log:
Add some simple throw and rethrow exception handling tests.

Added:
    test-suite/trunk/SingleSource/UnitTests/EH/
    test-suite/trunk/SingleSource/UnitTests/EH/Makefile
    test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.cpp
    test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.reference_output
    test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.cpp
    test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.reference_output
    test-suite/trunk/SingleSource/UnitTests/EH/simple-1.cpp
    test-suite/trunk/SingleSource/UnitTests/EH/simple-1.reference_output
    test-suite/trunk/SingleSource/UnitTests/EH/simple-2.cpp
    test-suite/trunk/SingleSource/UnitTests/EH/simple-2.reference_output

Added: test-suite/trunk/SingleSource/UnitTests/EH/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/Makefile?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/Makefile (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/Makefile Wed Sep 14 15:46:19 2011
@@ -0,0 +1,7 @@
+LEVEL = ../../..
+REQUIRES_EH_SUPPORT = 1
+
+include $(LEVEL)/Makefile.config
+
+LDFLAGS += -lstdc++
+include $(LEVEL)/SingleSource/Makefile.singlesrc

Added: test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.cpp?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.cpp (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.cpp Wed Sep 14 15:46:19 2011
@@ -0,0 +1,120 @@
+#include <iostream>
+#include <string>
+
+#define DECL_ATTR_FUNC(FUNC)                            \
+  void FUNC() __attribute__((noinline));                \
+  void FUNC()
+
+#define DECLARE_FUNC(FUNC)                              \
+  DECL_ATTR_FUNC(throw_ ## FUNC)
+
+#define DECLARE_RETHROW_FUNC(TYPE)              \
+  DECL_ATTR_FUNC(rethrow_ ## TYPE) {            \
+    try {                                       \
+      throw_ ## TYPE ();                        \
+    } catch (TYPE e) {                          \
+      std::cout << "Rethrowing: " << e << "\n"; \
+      throw;                                    \
+    }                                           \
+  }
+
+DECLARE_FUNC(char) {
+  char c = 'a';
+  std::cout << "Throwing char: " << c << "\n";
+  throw c;
+}
+
+DECLARE_RETHROW_FUNC(char)
+
+DECLARE_FUNC(int) {
+  int i = 37;
+  std::cout << "Throwing int: " << i << "\n";
+  throw i;
+}
+
+DECLARE_RETHROW_FUNC(int)
+
+DECLARE_FUNC(float) {
+  float f = 37.927;
+  std::cout << "Throwing float: " << f << "\n";
+  throw f;
+}
+
+DECLARE_RETHROW_FUNC(float)
+
+DECLARE_FUNC(double) {
+  double d = 37.927;
+  std::cout << "Throwing double: " << d << "\n";
+  throw d;
+}
+
+DECLARE_RETHROW_FUNC(double)
+
+DECLARE_FUNC(string) {
+  std::string s = "hello world";
+  std::cout << "Throwing std::string: " << s << "\n";
+  throw s;
+}
+
+DECL_ATTR_FUNC(rethrow_string) {
+  try {
+    throw_string();
+  } catch (const std::string &s) {
+    std::cout << "Rethrowing: " << s << "\n";
+    throw;
+  }
+}
+
+struct A {};
+
+DECLARE_FUNC(A) {
+  std::cout << "Throwing A\n";
+  throw A();
+}
+
+DECL_ATTR_FUNC(rethrow_A) {
+  try {
+    throw_A();
+  } catch (const A &) {
+    std::cout << "Rethrowing A\n";
+    throw;
+  }
+}
+
+int main() {
+  try {
+    rethrow_char();
+  } catch (char e) {
+    std::cout << "Caught char: " << e << "\n";
+  }
+
+  try {
+    rethrow_int();
+  } catch (int e) {
+    std::cout << "Caught int: " << e << "\n";
+  }
+
+  try {
+    rethrow_float();
+  } catch (float e) {
+    std::cout << "Caught float: " << e << "\n";
+  }
+
+  try {
+    rethrow_double();
+  } catch (double e) {
+    std::cout << "Caught double: " << e << "\n";
+  }
+
+  try {
+    rethrow_string();
+  } catch (const std::string &e) {
+    std::cout << "Caught std::string: " << e << "\n";
+  }
+
+  try {
+    rethrow_A();
+  } catch (const A &) {
+    std::cout << "Caught A\n";
+  }
+}

Added: test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.reference_output?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.reference_output (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/rethrow-1.reference_output Wed Sep 14 15:46:19 2011
@@ -0,0 +1,19 @@
+Throwing char: a
+Rethrowing: a
+Caught char: a
+Throwing int: 37
+Rethrowing: 37
+Caught int: 37
+Throwing float: 37.927
+Rethrowing: 37.927
+Caught float: 37.927
+Throwing double: 37.927
+Rethrowing: 37.927
+Caught double: 37.927
+Throwing std::string: hello world
+Rethrowing: hello world
+Caught std::string: hello world
+Throwing A
+Rethrowing A
+Caught A
+exit 0

Added: test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.cpp?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.cpp (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.cpp Wed Sep 14 15:46:19 2011
@@ -0,0 +1,120 @@
+#include <iostream>
+#include <string>
+
+#define DECL_ATTR_FUNC(FUNC)                            \
+  void FUNC() __attribute__((noinline));                \
+  void FUNC()
+
+#define DECLARE_FUNC(FUNC)                      \
+  DECL_ATTR_FUNC(throw_ ## FUNC)
+
+#define DECLARE_RETHROW_FUNC(TYPE)              \
+  DECL_ATTR_FUNC(rethrow_ ## TYPE) {            \
+    try {                                       \
+      throw_ ## TYPE ();                        \
+    } catch (TYPE e) {                          \
+      std::cout << "Rethrowing: " << e << "\n"; \
+      throw;                                    \
+    }                                           \
+  }
+
+DECLARE_FUNC(char) {
+  char c = 'a';
+  std::cout << "Throwing char: " << c << "\n";
+  throw c;
+}
+
+DECLARE_RETHROW_FUNC(char)
+
+DECLARE_FUNC(int) {
+  int i = 37;
+  std::cout << "Throwing int: " << i << "\n";
+  throw i;
+}
+
+DECLARE_RETHROW_FUNC(int)
+
+DECLARE_FUNC(float) {
+  float f = 37.927;
+  std::cout << "Throwing float: " << f << "\n";
+  throw f;
+}
+
+DECLARE_RETHROW_FUNC(float)
+
+DECLARE_FUNC(double) {
+  double d = 37.927;
+  std::cout << "Throwing double: " << d << "\n";
+  throw d;
+}
+
+DECLARE_RETHROW_FUNC(double)
+
+DECLARE_FUNC(string) {
+  std::string s = "hello world";
+  std::cout << "Throwing std::string: " << s << "\n";
+  throw s;
+}
+
+DECL_ATTR_FUNC(rethrow_string) {
+  try {
+    throw_string();
+  } catch (const std::string &s) {
+    std::cout << "Rethrowing: " << s << "\n";
+    throw;
+  }
+}
+
+struct A {};
+
+DECLARE_FUNC(A) {
+  std::cout << "Throwing A\n";
+  throw A();
+}
+
+DECL_ATTR_FUNC(rethrow_A) {
+  try {
+    throw_A();
+  } catch (const A &) {
+    std::cout << "Rethrowing A\n";
+    throw;
+  }
+}
+
+int main() {
+  try {
+    rethrow_char();
+  } catch (char e) {
+    std::cout << "Caught char: " << e << "\n";
+  }
+
+  try {
+    rethrow_int();
+  } catch (int e) {
+    std::cout << "Caught int: " << e << "\n";
+  }
+
+  try {
+    rethrow_float();
+  } catch (float e) {
+    std::cout << "Caught float: " << e << "\n";
+  }
+
+  try {
+    rethrow_double();
+  } catch (double e) {
+    std::cout << "Caught double: " << e << "\n";
+  }
+
+  try {
+    rethrow_string();
+  } catch (const std::string &e) {
+    std::cout << "Caught std::string: " << e << "\n";
+  }
+
+  try {
+    rethrow_A();
+  } catch (const A &) {
+    std::cout << "Caught A\n";
+  }
+}

Added: test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.reference_output?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.reference_output (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/rethrow-2.reference_output Wed Sep 14 15:46:19 2011
@@ -0,0 +1,19 @@
+Throwing char: a
+Rethrowing: a
+Caught char: a
+Throwing int: 37
+Rethrowing: 37
+Caught int: 37
+Throwing float: 37.927
+Rethrowing: 37.927
+Caught float: 37.927
+Throwing double: 37.927
+Rethrowing: 37.927
+Caught double: 37.927
+Throwing std::string: hello world
+Rethrowing: hello world
+Caught std::string: hello world
+Throwing A
+Rethrowing A
+Caught A
+exit 0

Added: test-suite/trunk/SingleSource/UnitTests/EH/simple-1.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/simple-1.cpp?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/simple-1.cpp (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/simple-1.cpp Wed Sep 14 15:46:19 2011
@@ -0,0 +1,81 @@
+#include <iostream>
+#include <string>
+
+#define DECLARE_FUNC(FUNC)                                \
+  void throw_ ## FUNC() __attribute__((noinline));        \
+  void throw_ ## FUNC()
+
+DECLARE_FUNC(char) {
+  char c = 'a';
+  std::cout << "Throwing char: " << c << "\n";
+  throw c;
+}
+
+DECLARE_FUNC(int) {
+  int i = 37;
+  std::cout << "Throwing int: " << i << "\n";
+  throw i;
+}
+
+DECLARE_FUNC(float) {
+  float f = 37.927;
+  std::cout << "Throwing float: " << f << "\n";
+  throw f;
+}
+
+DECLARE_FUNC(double) {
+  double d = 37.927;
+  std::cout << "Throwing double: " << d << "\n";
+  throw d;
+}
+
+DECLARE_FUNC(string) {
+  std::string s = "hello world";
+  std::cout << "Throwing std::string: " << s << "\n";
+  throw s;
+}
+
+struct A {};
+
+DECLARE_FUNC(A) {
+  std::cout << "Throwing A\n";
+  throw A();
+}
+
+int main() {
+  try {
+    throw_char();
+  } catch (char e) {
+    std::cout << "Caught char: " << e << "\n";
+  }
+
+  try {
+    throw_int();
+  } catch (int e) {
+    std::cout << "Caught int: " << e << "\n";
+  }
+
+  try {
+    throw_float();
+  } catch (float e) {
+    std::cout << "Caught float: " << e << "\n";
+  }
+
+  try {
+    throw_double();
+  } catch (double e) {
+    std::cout << "Caught double: " << e << "\n";
+  }
+
+  try {
+    throw_string();
+  } catch (const std::string &e) {
+    std::cout << "Caught std::string: " << e << "\n";
+  }
+
+  try {
+    throw_A();
+  } catch (const A &e) {
+    std::cout << "Caught A\n";
+  }
+}

Added: test-suite/trunk/SingleSource/UnitTests/EH/simple-1.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/simple-1.reference_output?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/simple-1.reference_output (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/simple-1.reference_output Wed Sep 14 15:46:19 2011
@@ -0,0 +1,13 @@
+Throwing char: a
+Caught char: a
+Throwing int: 37
+Caught int: 37
+Throwing float: 37.927
+Caught float: 37.927
+Throwing double: 37.927
+Caught double: 37.927
+Throwing std::string: hello world
+Caught std::string: hello world
+Throwing A
+Caught A
+exit 0

Added: test-suite/trunk/SingleSource/UnitTests/EH/simple-2.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/simple-2.cpp?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/simple-2.cpp (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/simple-2.cpp Wed Sep 14 15:46:19 2011
@@ -0,0 +1,81 @@
+#include <iostream>
+#include <string>
+
+#define DECLARE_FUNC(FUNC)                                \
+  void throw_ ## FUNC() __attribute__((always_inline));   \
+  void throw_ ## FUNC()
+
+DECLARE_FUNC(char) {
+  char c = 'a';
+  std::cout << "Throwing char: " << c << "\n";
+  throw c;
+}
+
+DECLARE_FUNC(int) {
+  int i = 37;
+  std::cout << "Throwing int: " << i << "\n";
+  throw i;
+}
+
+DECLARE_FUNC(float) {
+  float f = 37.927;
+  std::cout << "Throwing float: " << f << "\n";
+  throw f;
+}
+
+DECLARE_FUNC(double) {
+  double d = 37.927;
+  std::cout << "Throwing double: " << d << "\n";
+  throw d;
+}
+
+DECLARE_FUNC(string) {
+  std::string s = "hello world";
+  std::cout << "Throwing std::string: " << s << "\n";
+  throw s;
+}
+
+struct A {};
+
+DECLARE_FUNC(A) {
+  std::cout << "Throwing A\n";
+  throw A();
+}
+
+int main() {
+  try {
+    throw_char();
+  } catch (char e) {
+    std::cout << "Caught char: " << e << "\n";
+  }
+
+  try {
+    throw_int();
+  } catch (int e) {
+    std::cout << "Caught int: " << e << "\n";
+  }
+
+  try {
+    throw_float();
+  } catch (float e) {
+    std::cout << "Caught float: " << e << "\n";
+  }
+
+  try {
+    throw_double();
+  } catch (double e) {
+    std::cout << "Caught double: " << e << "\n";
+  }
+
+  try {
+    throw_string();
+  } catch (const std::string &e) {
+    std::cout << "Caught std::string: " << e << "\n";
+  }
+
+  try {
+    throw_A();
+  } catch (const A &e) {
+    std::cout << "Caught A\n";
+  }
+}

Added: test-suite/trunk/SingleSource/UnitTests/EH/simple-2.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/EH/simple-2.reference_output?rev=139730&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/EH/simple-2.reference_output (added)
+++ test-suite/trunk/SingleSource/UnitTests/EH/simple-2.reference_output Wed Sep 14 15:46:19 2011
@@ -0,0 +1,13 @@
+Throwing char: a
+Caught char: a
+Throwing int: 37
+Caught int: 37
+Throwing float: 37.927
+Caught float: 37.927
+Throwing double: 37.927
+Caught double: 37.927
+Throwing std::string: hello world
+Caught std::string: hello world
+Throwing A
+Caught A
+exit 0





More information about the llvm-commits mailing list