summaryrefslogtreecommitdiffstats
path: root/gcc/tree.def
diff options
context:
space:
mode:
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>1997-04-23 20:04:25 +0000
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>1997-04-23 20:04:25 +0000
commit694ec51983be9bfc22d051e98e22e185c6b00651 (patch)
treeed1bd25525ef36f94c97fb911c74203e02095a25 /gcc/tree.def
parentc446d93c756b52b25588a6816d1728f4852d2068 (diff)
downloadppe42-gcc-694ec51983be9bfc22d051e98e22e185c6b00651.tar.gz
ppe42-gcc-694ec51983be9bfc22d051e98e22e185c6b00651.zip
Add setjmp/longjmp exception handling.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13968 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.def')
-rw-r--r--gcc/tree.def23
1 files changed, 22 insertions, 1 deletions
diff --git a/gcc/tree.def b/gcc/tree.def
index 8ba266a4efa..e77adeb5c65 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -458,7 +458,10 @@ DEFTREECODE (METHOD_CALL_EXPR, "method_call_expr", "e", 4)
manages to act on the proper value.
The cleanup is executed by the first enclosing CLEANUP_POINT_EXPR, if
it exists, otherwise it is the responsibility of the caller to manually
- call expand_cleanups_to, as needed. */
+ call expand_start_target_temps/expand_end_target_temps, as needed.
+
+ This differs from TRY_CATCH_EXPR in that operand 2 is always
+ evaluated when an exception isn't throw when cleanups are run. */
DEFTREECODE (WITH_CLEANUP_EXPR, "with_cleanup_expr", "e", 3)
/* Specify a cleanup point.
@@ -689,6 +692,24 @@ DEFTREECODE (PREDECREMENT_EXPR, "predecrement_expr", "e", 2)
DEFTREECODE (PREINCREMENT_EXPR, "preincrement_expr", "e", 2)
DEFTREECODE (POSTDECREMENT_EXPR, "postdecrement_expr", "e", 2)
DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", "e", 2)
+
+/* Evalute operand 1. If and only if an exception is thrown during
+ the evaluation of operand 1, evaluate operand 2.
+
+ This differs from WITH_CLEANUP_EXPR, in that operand 2 is never
+ evaluated unless an exception is throw. */
+DEFTREECODE (TRY_CATCH_EXPR, "try_catch_expr", "e", 2)
+
+/* Pop the top element off the dynamic handler chain. Used in
+ conjunction with setjmp/longjmp based exception handling, see
+ except.c for more details. This is meant to be used only by the
+ exception handling backend, expand_dhc_cleanup specifically. */
+DEFTREECODE (POPDHC_EXPR, "popdhc_expr", "s", 0)
+
+/* Pop the top element off the dynamic cleanup chain. Used in
+ conjunction with the exception handling. This is meant to be used
+ only by the exception handling backend. */
+DEFTREECODE (POPDCC_EXPR, "popdcc_expr", "s", 0)
/* These types of expressions have no useful value,
and always have side effects. */
OpenPOWER on IntegriCloud