Ada routine gnat_eh_type_covers.
From-SVN: r158258
+2010-04-13 Duncan Sands <baldrick@free.fr>
+
+ * except.h (lang_eh_type_covers): Remove.
+ * except.c (lang_eh_type_covers): Likewise.
+
2010-04-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+2010-04-13 Duncan Sands <baldrick@free.fr>
+
+ * gcc-interface/misc.c (gnat_eh_type_covers): Remove.
+ * gcc-interface/trans.c (Exception_Handler_to_gnu_zcx): Update comment.
+
2010-04-13 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/gigi.h (standard_datatypes): Add ADT_parent_name_id.
static const char *gnat_printable_name (tree, int);
static const char *gnat_dwarf_name (tree, int);
static tree gnat_return_tree (tree);
-static int gnat_eh_type_covers (tree, tree);
static void gnat_parse_file (int);
static void internal_error_function (const char *, va_list *);
static tree gnat_type_max_size (const_tree);
right exception regions. */
using_eh_for_cleanups ();
- lang_eh_type_covers = gnat_eh_type_covers;
-
/* Turn on -fexceptions and -fnon-call-exceptions. The first one triggers
the generation of the necessary exception runtime tables. The second one
is useful for two reasons: 1/ we map some asynchronous signals like SEGV
return t;
}
-/* Return true if type A catches type B. Callback for flow analysis from
- the exception handling part of the back-end. */
-
-static int
-gnat_eh_type_covers (tree a, tree b)
-{
- /* a catches b if they represent the same exception id or if a
- is an "others".
-
- ??? integer_zero_node for "others" is hardwired in too many places
- currently. */
- return (a == b || a == integer_zero_node);
-}
-\f
/* Get the alias set corresponding to a type or expression. */
static alias_set_type
handler can catch, with special cases for others and all others cases.
Each exception type is actually identified by a pointer to the exception
- id, or to a dummy object for "others" and "all others".
-
- Care should be taken to ensure that the control flow impact of "others"
- and "all others" is known to GCC. lang_eh_type_covers is doing the trick
- currently. */
+ id, or to a dummy object for "others" and "all others". */
for (gnat_temp = First (Exception_Choices (gnat_node));
gnat_temp; gnat_temp = Next (gnat_temp))
{
to the given failure handler. */
tree (*lang_protect_cleanup_actions) (void);
-/* Return true if type A catches type B. */
-int (*lang_eh_type_covers) (tree a, tree b);
-
static GTY(()) int call_site_base;
static GTY ((param_is (union tree_node)))
htab_t type_to_runtime_map;
FUNCTION_DECL for `std::terminate'. */
extern tree (*lang_protect_cleanup_actions) (void);
-/* Return true if type A catches type B. */
-extern int (*lang_eh_type_covers) (tree a, tree b);
-
/* Just because the user configured --with-sjlj-exceptions=no doesn't
mean that we can use call frame exceptions. Detect that the target