OSDN Git Service

[pf3gnuchains/gcc-fork.git] / gcc / except.h
index d20b606..540044b 100644 (file)
@@ -24,11 +24,9 @@ typedef struct rtx_def *_except_rtx;
 #define rtx _except_rtx
 #endif
 
-/* The labels generated by expand_builtin_eh_stub and
-   expand_builtin_eh_stub_old.  */
+/* The label generated by expand_builtin_eh_return.  */
 
-extern rtx current_function_eh_stub_label;
-extern rtx current_function_eh_old_stub_label;
+extern rtx eh_return_stub_label;
 
 #ifdef TREE_CODE
 
@@ -53,6 +51,10 @@ struct label_node {
    label or not. New ones are needed for additional catch blocks if
    it has.
 
+   FALSE_LABEL is used when either setjmp/longjmp exceptions are in
+   use, or old style table exceptions. It contains the label for 
+   branching to the next runtime type check as handlers are processed.
+
    FINALIZATION is the tree codes for the handler, or is NULL_TREE if
    one hasn't been generated yet, or is integer_zero_node to mark the
    end of a group of try blocks.  */
@@ -62,6 +64,7 @@ struct eh_entry {
   rtx exception_handler_label;
   tree finalization;
   int label_used;
+  rtx false_label;
 };
 
 /* A list of EH_ENTRYs. ENTRY is the entry; CHAIN points to the next
@@ -237,6 +240,10 @@ extern void add_eh_table_entry                     PROTO((int n));
 extern void start_catch_handler                 PROTO((tree));
 #endif
 
+/* End an individual catch clause. */
+
+extern void end_catch_handler                   PROTO((void));
+
 /* Returns a non-zero value if we need to output an exception table.  */
 
 extern int exception_table_p                   PROTO((void));
@@ -368,15 +375,13 @@ extern void expand_fixup_region_end       PROTO((tree));
 
 void expand_builtin_unwind_init                PROTO((void));
 rtx expand_builtin_dwarf_fp_regnum     PROTO((void));
-rtx expand_builtin_eh_stub             PROTO((void));
-rtx expand_builtin_eh_stub_old          PROTO((void));
 #ifdef TREE_CODE
 rtx expand_builtin_frob_return_addr    PROTO((tree));
 rtx expand_builtin_extract_return_addr PROTO((tree));
-void expand_builtin_set_return_addr_reg PROTO((tree));
-void expand_builtin_set_eh_regs                PROTO((tree, tree));
 rtx expand_builtin_dwarf_reg_size      PROTO((tree, rtx));
+void expand_builtin_eh_return          PROTO((tree, tree, tree));
 #endif
+void expand_eh_return                  PROTO((void));
 
 
 /* Checking whether 2 instructions are within the same exception region. */