diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-19 10:54:53 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-19 10:54:53 +0000 |
commit | 13b802d70d691cdc8dd1157523d517f822313e88 (patch) | |
tree | 6efa7bf4ecf82f27c400f99353c69a8bcca1b6c7 /gcc/ada/gigi.h | |
parent | 8e7611912c74f7cad8cea8d80b6575376c1027f8 (diff) | |
download | gcc-13b802d70d691cdc8dd1157523d517f822313e88.tar.gz |
* a-exexpr.adb (Others_Value, All_Others_Value): New variables, the
address of which may be used to represent "others" and "all others"
choices in exception tables, instead of the current harcoded
(void *)0 and (void *)1.
(Setup_Exception): Do nothing in the GNAT SJLJ case.
* gigi.h (others_decl, all_others_decl): New decls representing the
new Others_Value and All_Others_Value objects.
(struct attrib): Rename "arg" component as "args", since GCC expects a
list of arguments in there.
* raise.c (GNAT_OTHERS, GNAT_ALL_OTHERS): Are now the address of the
corresponding objects exported by a-exexpr, instead of hardcoded dummy
addresses.
* trans.c (Exception_Handler_to_gnu_zcx): Use the address of
others_decl and all_others_decl instead of hardcoded dummy addresses
to represent "others" and "all others" choices, which is cleaner and
more flexible with respect to the possible eh pointer encoding policies.
* utils.c (init_gigi_decls): Initialize others_decl and all_others_decl.
(process_attributes): Account for the naming change of the "args"
attribute list entry component.
* decl.c (build_attr_list): Rename into prepend_attributes to allow
cumulating attributes for different entities into a single list.
(gnat_to_gnu_entity): Use prepend_attributes to build the list of
attributes for the current entity and propagate first subtype
attributes to other subtypes.
<E_Procedure>: Attribute arguments are attr->args and not
attr->arg any more.
(build_attr_list): Ditto. Make attr->args a TREE_LIST when there is an
argument provided, as this is what GCC expects. Use NULL_TREE instead
of 0 for trees.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90900 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/gigi.h')
-rw-r--r-- | gcc/ada/gigi.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ada/gigi.h b/gcc/ada/gigi.h index 233c22be5ed..20784c1b5d2 100644 --- a/gcc/ada/gigi.h +++ b/gcc/ada/gigi.h @@ -297,7 +297,7 @@ struct attrib struct attrib *next; enum attr_type type; tree name; - tree arg; + tree args; Node_Id error_point; }; @@ -340,6 +340,8 @@ enum standard_datatypes ADT_raise_nodefer_decl, ADT_begin_handler_decl, ADT_end_handler_decl, + ADT_others_decl, + ADT_all_others_decl, ADT_LAST}; extern GTY(()) tree gnat_std_decls[(int) ADT_LAST]; @@ -363,6 +365,8 @@ extern GTY(()) tree gnat_raise_decls[(int) LAST_REASON_CODE + 1]; #define update_setjmp_buf_decl gnat_std_decls[(int) ADT_update_setjmp_buf_decl] #define raise_nodefer_decl gnat_std_decls[(int) ADT_raise_nodefer_decl] #define begin_handler_decl gnat_std_decls[(int) ADT_begin_handler_decl] +#define others_decl gnat_std_decls[(int) ADT_others_decl] +#define all_others_decl gnat_std_decls[(int) ADT_all_others_decl] #define end_handler_decl gnat_std_decls[(int) ADT_end_handler_decl] /* Routines expected by the gcc back-end. They must have exactly the same |