summaryrefslogtreecommitdiffstats
path: root/lldb/test/lang/cpp/exceptions/exceptions.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-03-06 03:52:02 +0000
committerJim Ingham <jingham@apple.com>2012-03-06 03:52:02 +0000
commit97f7e8189149390ea4eb3daa46fac132dbb5183e (patch)
treeb7f04b598e7b36788ffcfc25e1583cecd291d575 /lldb/test/lang/cpp/exceptions/exceptions.cpp
parent7856d7a671d2ac49b3f9ad297237441f2befc072 (diff)
downloadbcm5719-llvm-97f7e8189149390ea4eb3daa46fac132dbb5183e.tar.gz
bcm5719-llvm-97f7e8189149390ea4eb3daa46fac132dbb5183e.zip
Add a test case and fix the C++ exception symbols.
llvm-svn: 152101
Diffstat (limited to 'lldb/test/lang/cpp/exceptions/exceptions.cpp')
-rw-r--r--lldb/test/lang/cpp/exceptions/exceptions.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/lldb/test/lang/cpp/exceptions/exceptions.cpp b/lldb/test/lang/cpp/exceptions/exceptions.cpp
new file mode 100644
index 00000000000..150d420b241
--- /dev/null
+++ b/lldb/test/lang/cpp/exceptions/exceptions.cpp
@@ -0,0 +1,42 @@
+#include <exception>
+#include <stdio.h>
+
+int throws_exception_on_even (int value);
+int intervening_function (int value);
+int catches_exception (int value);
+
+int
+catches_exception (int value)
+{
+ try
+ {
+ return intervening_function(value); // This is the line you should stop at for catch
+ }
+ catch (int value)
+ {
+ return value;
+ }
+}
+
+int
+intervening_function (int value)
+{
+ return throws_exception_on_even (2 * value);
+}
+
+int
+throws_exception_on_even (int value)
+{
+ printf ("Mod two works: %d.\n", value%2);
+ if (value % 2 == 0)
+ throw 30;
+ else
+ return value;
+}
+
+int
+main ()
+{
+ catches_exception (10); // Stop here
+ return 5;
+}
OpenPOWER on IntegriCloud