diff options
author | Bob Duff <duff@adacore.com> | 2021-02-03 05:31:16 -0500 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-05-07 05:29:09 -0400 |
commit | 76f9c7f44fffb0b03266730b137313fe79f1c99e (patch) | |
tree | 8c77fa6bd5661f0ffb427f7003a21b9a46dc30d6 /gcc/ada/fe.h | |
parent | 476ed6bf66ab20e22ae4b3da0fd7fd94753f2334 (diff) | |
download | gcc-76f9c7f44fffb0b03266730b137313fe79f1c99e.zip gcc-76f9c7f44fffb0b03266730b137313fe79f1c99e.tar.gz gcc-76f9c7f44fffb0b03266730b137313fe79f1c99e.tar.bz2 |
[Ada] Variable-sized node types
gcc/ada/
* atree.ads, atree.adb: Major rewrite to support variable-sized
node types. Add pragmas Suppress and Assertion_Policy. We now
have an extra level of indirection: Node_Offsets is a table
mapping Node_Ids to the offset of the start of each node in
Slots. Slots is a table containing one or more contiguous slots
for each node. Each slot is a 32-bit unchecked union that can
contain any mixture of 1, 2, 4, 8, and 32-bit fields that fits.
The old low-level getters and setters (e.g. Flag123) are
removed.
* gen_il-fields.ads, gen_il-gen-gen_entities.adb,
gen_il-gen-gen_nodes.adb, gen_il-gen.adb, gen_il-gen.ads,
gen_il-main.adb, gen_il-types.ads, gen_il-utils.adb,
gen_il-utils.ads, gen_il.adb, gen_il.ads: New gen_il program
that generates various Ada and C++ files. In particular, the
following files are generated by gen_il: einfo-entities.adb
einfo-entities.ads, gnatvsn.ads, nmake.adb, nmake.ads,
seinfo.ads, seinfo_tables.adb, seinfo_tables.ads,
sinfo-nodes.adb, sinfo-nodes.ads, einfo.h, and sinfo.h.
* sinfo-utils.adb, sinfo-utils.ads, einfo-utils.adb,
einfo-utils.ads: New files containing code that needs to refer
to Sinfo.Nodes and Einfo.Entities. This code is mostly moved
here from Sinfo and Einfo to break cycles.
* back_end.adb: Pass node_offsets_ptr and slots_ptr to gigi,
instead of nodes_ptr and flags_ptr. The Nodes and Flags tables
no longer exist. (Note that gigi never used the Flags table.)
* sinfo-cn.ads (Change_Identifier_To_Defining_Identifier,
Change_Character_Literal_To_Defining_Character_Literal,
Change_Operator_Symbol_To_Defining_Operator_Symbol): Turn N into
an IN formal.
* sinfo-cn.adb: Update. Add assertions, which can be removed at
some point. Rewrite to use higher-level facilities. Make sure
vanishing fields are zeroed out. Add with/use for new packages.
* sem_util.adb: Remove "Assert(False)" immediately followed by
"raise Program_Error". Use higher-level facilities such as
Walk_Sinfo_Fields instead of depending on low-level Set_FieldN
routines that no longer exist. Use Get_Comes_From_Source_Default
instead of Default_Node.Comes_From_Source (Default_Node no
longer exists). Use Set_Basic_Convention instead of
Basic_Set_Convention. Add with/use for new packages.
* sem_util.ads: The Convention field had getter Convention and
setter Basic_Set_Convention. Make that more uniform: there is
now a field called Basic_Convention, with Basic_Convention and
Set_Basic_Convention as getter/setter, and write Convention and
Set_Convention here.
* nlists.adb: Rewrite to use abstractions, rather then depending
on low-level implementation details of Atree. Necessary because
those details have changed. Add with/use for new packages.
* sem_ch12.adb: Use higher-level facilities such as
Walk_Sinfo_Fields instead of depending on low-level Set_FieldN
routines that no longer exist. Add with/use for new packages.
* exp_cg.adb, sem_ch10.adb, sem_ch4.adb, sem_eval.adb,
sem_prag.adb, sem_warn.adb: Change expanded names to refer to
the new packages for things that moved. Add with/use for new
packages.
* sem_ch3.adb: Likewise. Reinitialize vanishing fields.
* exp_disp.adb: Likewise. Remove failing assertion.
* sinfo.ads, einfo.ads: Remove code that is now generated into
Sinfo.Nodes and Einfo.Entities.
* sinfo.adb, einfo.adb: Replace bodies with "pragma No_Body;".
We should delete these at some point, but No_Body makes make
files easier. Some code is moved to Sinfo.Nodes, Einfo.Entities,
Sinfo.Utils, and Einfo.Utils. Some is no longer necessary.
* treepr.adb: Rewrite to use new tables. We no longer need
treeprs.ads.
* treepr.ads: Add comment.
* types.ads: Move types Component_Alignment_Kind and
Float_Rep_Kind here.
* atree.h: Major update to match atree.ads changes. Add slot
types, for use by getters/setters.
* types.h: Move types Component_Alignment_Kind and
Float_Rep_Kind here.
* fe.h: Rewrite to deal with code that has changed or moved from
Atree, Sinfo, Einfo.
* nlists.h: Move some code to fe.h.
* alloc.ads: Split Nodes_* constants into Node_Offsets and
Slots, because Atree has two separate tables. Increase values.
Remove Nodes_Release_Threshold. Improve comment.
* debug.adb, gnat1drv.adb: Remove obsolete gnatd.A and gnatd.N
switches. Add with/use for new packages.
* opt.ads: Minor comment fix.
* aspects.adb, checks.adb, comperr.adb, contracts.adb,
cstand.adb, debug_a.adb, errout.adb, eval_fat.adb, exp_aggr.adb,
exp_atag.adb, exp_attr.adb, exp_ch11.adb, exp_ch12.adb,
exp_ch13.adb, exp_ch2.adb, exp_ch3.adb, exp_ch4.adb,
exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_ch8.adb, exp_ch9.adb,
exp_code.adb, exp_dbug.adb, exp_dist.adb, exp_fixd.adb,
exp_imgv.adb, exp_intr.adb, exp_pakd.adb, exp_prag.adb,
exp_put_image.adb, exp_sel.adb, exp_smem.adb, exp_spark.adb,
exp_strm.adb, exp_tss.adb, exp_unst.adb, exp_util.adb,
exp_util.ads, expander.adb, freeze.adb, frontend.adb,
get_targ.ads, ghost.adb, gnat_cuda.adb, impunit.adb, inline.adb,
itypes.adb, itypes.ads, layout.adb, lib.adb, lib-load.adb,
lib-writ.adb, lib-xref.adb, lib-xref.ads,
lib-xref-spark_specific.adb, live.adb, par.adb, par_sco.adb,
pprint.adb, repinfo.adb, restrict.adb, rtsfind.adb, scil_ll.adb,
scn.adb, sem.adb, sem.ads, sem_aggr.adb, sem_attr.adb,
sem_aux.adb, sem_case.adb, sem_cat.adb, sem_ch11.adb,
sem_ch13.adb, sem_ch2.adb, sem_ch5.adb, sem_ch6.adb,
sem_ch7.adb, sem_ch8.adb, sem_ch9.adb, sem_dim.adb,
sem_disp.adb, sem_dist.adb, sem_elab.adb, sem_elim.adb,
sem_intr.adb, sem_mech.adb, sem_res.adb, sem_scil.adb,
sem_smem.adb, sem_type.adb, set_targ.ads, sinput.adb,
sinput-l.adb, sprint.adb, style.adb, styleg.adb, tbuild.adb,
tbuild.ads, uname.adb: Add with/use for new packages.
* libgnat/a-stoubu.adb, libgnat/a-stouut.adb: Simplify to ease
bootstrap.
* libgnat/a-stobfi.adb, libgnat/a-stoufi.adb (Create_File,
Create_New_File): Create file in binary format, to avoid
introducing unwanted text conversions on Windows. Simplify to
ease bootstrap.
* libgnat/a-stteou__bootstrap.ads: New.
* ceinfo.adb, csinfo.adb, nmake.adt, treeprs.adt, xeinfo.adb,
xnmake.adb, xsinfo.adb, xtreeprs.adb: Delete.
* Make-generated.in: Build and run the gen_il program to
generate files. The files are generated in the ada/gen_il
subdirectory, and then moved up to ada. We rely on gnatmake (as
opposed to make) to build the gen_il program efficiently (i.e.
don't do anything if the sources didn't change).
* gcc-interface/Makefile.in (ADAFLAGS): Add -gnatU.
(GNATMAKE_OBJS): Add new object files.
(GENERATED_FILES_FOR_TOOLS): New variable.
(../stamp-tools): Create a link for all
GENERATED_FILES_FOR_TOOLS.
* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add new object
files. Remove ada/treeprs.o.
(GNATBIND_OBJS): Add new object files.
(ada.mostlyclean): Remove ada/sdefault.adb and add
ada/stamp-gen_il.
(ada.maintainer-clean): Remove ada/treeprs.ads.
(update-sources): Remove obsolete target.
(ada_generated_files): Rename to...
(ADA_GENERATED_FILES): ... this. Add new source files. Add
comment.
* gcc-interface/trans.c: Remove obsolete Nodes_Ptr and
Flags_ptr. Add Node_Offsets_Ptr and Slots_Ptr, which point to
the corresponding tables in Atree.
* gcc-interface/gigi.h (gigi): New parameters for initializing
Node_Offsets_Ptr and Slots_Ptr.
* gcc-interface/decl.c: Numeric_Kind,
Discrete_Or_Fixed_Point_Kind, and Record_Kind were
nonhierarchical, and were therefore removed for simplicity.
Replace uses with calls to Is_In_... functions.
gnattools/
* Makefile.in (GENERATED_FILES_FOR_TOOLS): New variable.
($(GCC_DIR)/stamp-tools): Walk it for the first copy operation.
Diffstat (limited to 'gcc/ada/fe.h')
-rw-r--r-- | gcc/ada/fe.h | 404 |
1 files changed, 391 insertions, 13 deletions
diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h index e19745e..9c4a572 100644 --- a/gcc/ada/fe.h +++ b/gcc/ada/fe.h @@ -69,14 +69,14 @@ extern Boolean Debug_Flag_NN; /* einfo: */ -#define Set_Alignment einfo__set_alignment -#define Set_Component_Bit_Offset einfo__set_component_bit_offset -#define Set_Component_Size einfo__set_component_size -#define Set_Esize einfo__set_esize -#define Set_Mechanism einfo__set_mechanism -#define Set_Normalized_First_Bit einfo__set_normalized_first_bit -#define Set_Normalized_Position einfo__set_normalized_position -#define Set_RM_Size einfo__set_rm_size +#define Set_Alignment einfo__entities__set_alignment +#define Set_Component_Bit_Offset einfo__entities__set_component_bit_offset +#define Set_Component_Size einfo__entities__set_component_size +#define Set_Esize einfo__entities__set_esize +#define Set_Mechanism einfo__entities__set_mechanism +#define Set_Normalized_First_Bit einfo__entities__set_normalized_first_bit +#define Set_Normalized_Position einfo__entities__set_normalized_position +#define Set_RM_Size einfo__entities__set_rm_size extern void Set_Alignment (Entity_Id, Uint); extern void Set_Component_Bit_Offset (Entity_Id, Uint); @@ -87,11 +87,11 @@ extern void Set_Normalized_First_Bit (Entity_Id, Uint); extern void Set_Normalized_Position (Entity_Id, Uint); extern void Set_RM_Size (Entity_Id, Uint); -#define Is_Entity_Name einfo__is_entity_name +#define Is_Entity_Name einfo__utils__is_entity_name extern Boolean Is_Entity_Name (Node_Id); -#define Get_Attribute_Definition_Clause einfo__get_attribute_definition_clause +#define Get_Attribute_Definition_Clause einfo__utils__get_attribute_definition_clause extern Node_Id Get_Attribute_Definition_Clause (Entity_Id, unsigned char); @@ -301,9 +301,9 @@ extern Boolean Requires_Transient_Scope (Entity_Id); /* sinfo: */ -#define End_Location sinfo__end_location -#define Set_Has_No_Elaboration_Code sinfo__set_has_no_elaboration_code -#define Set_Present_Expr sinfo__set_present_expr +#define End_Location sinfo__utils__end_location +#define Set_Has_No_Elaboration_Code sinfo__nodes__set_has_no_elaboration_code +#define Set_Present_Expr sinfo__nodes__set_present_expr extern Source_Ptr End_Location (Node_Id); extern void Set_Has_No_Elaboration_Code (Node_Id, Boolean); @@ -343,6 +343,384 @@ extern Boolean Stack_Check_Probes_On_Target; extern Boolean Warn_On_Questionable_Layout; +// The following corresponds to Ada code in Einfo.Utils. + +typedef Boolean B; +typedef Component_Alignment_Kind C; +typedef Entity_Id E; +typedef Mechanism_Type M; +typedef Node_Id N; +typedef Uint U; +typedef Ureal R; +typedef Elist_Id L; +typedef List_Id S; + +#define Is_Access_Object_Type einfo__utils__is_access_object_type +B Is_Access_Object_Type (E Id); + +#define Is_Named_Access_Type einfo__utils__is_named_access_type +B Is_Named_Access_Type (E Id); + +#define Address_Clause einfo__utils__address_clause +N Address_Clause (E Id); + +#define Aft_Value einfo__utils__aft_value +U Aft_Value (E Id); + +#define Alignment_Clause einfo__utils__alignment_clause +N Alignment_Clause (E Id); + +#define Base_Type einfo__utils__base_type +E Base_Type (E Id); + +#define Declaration_Node einfo__utils__declaration_node +N Declaration_Node (E Id); + +#define Designated_Type einfo__utils__designated_type +E Designated_Type (E Id); + +#define First_Component einfo__utils__first_component +E First_Component (E Id); + +#define First_Component_Or_Discriminant einfo__utils__first_component_or_discriminant +E First_Component_Or_Discriminant (E Id); + +#define First_Formal einfo__utils__first_formal +E First_Formal (E Id); + +#define First_Formal_With_Extras einfo__utils__first_formal_with_extras +E First_Formal_With_Extras (E Id); + +#define Has_Attach_Handler einfo__utils__has_attach_handler +B Has_Attach_Handler (E Id); + +#define Has_Entries einfo__utils__has_entries +B Has_Entries (E Id); + +#define Has_Foreign_Convention einfo__utils__has_foreign_convention +B Has_Foreign_Convention (E Id); + +#define Has_Interrupt_Handler einfo__utils__has_interrupt_handler +B Has_Interrupt_Handler (E Id); + +#define Has_Non_Limited_View einfo__utils__has_non_limited_view +B Has_Non_Limited_View (E Id); + +#define Has_Non_Null_Abstract_State einfo__utils__has_non_null_abstract_state +B Has_Non_Null_Abstract_State (E Id); + +#define Has_Non_Null_Visible_Refinement einfo__utils__has_non_null_visible_refinement +B Has_Non_Null_Visible_Refinement (E Id); + +#define Has_Null_Abstract_State einfo__utils__has_null_abstract_state +B Has_Null_Abstract_State (E Id); + +#define Has_Null_Visible_Refinement einfo__utils__has_null_visible_refinement +B Has_Null_Visible_Refinement (E Id); + +#define Implementation_Base_Type einfo__utils__implementation_base_type +E Implementation_Base_Type (E Id); + +#define Is_Base_Type einfo__utils__is_base_type +B Is_Base_Type (E Id); + +#define Is_Boolean_Type einfo__utils__is_boolean_type +B Is_Boolean_Type (E Id); + +#define Is_Constant_Object einfo__utils__is_constant_object +B Is_Constant_Object (E Id); + +#define Is_Controlled einfo__utils__is_controlled +B Is_Controlled (E Id); + +#define Is_Discriminal einfo__utils__is_discriminal +B Is_Discriminal (E Id); + +#define Is_Dynamic_Scope einfo__utils__is_dynamic_scope +B Is_Dynamic_Scope (E Id); + +#define Is_Elaboration_Target einfo__utils__is_elaboration_target +B Is_Elaboration_Target (E Id); + +#define Is_External_State einfo__utils__is_external_state +B Is_External_State (E Id); + +#define Is_Finalizer einfo__utils__is_finalizer +B Is_Finalizer (E Id); + +#define Is_Null_State einfo__utils__is_null_state +B Is_Null_State (E Id); + +#define Is_Package_Or_Generic_Package einfo__utils__is_package_or_generic_package +B Is_Package_Or_Generic_Package (E Id); + +#define Is_Packed_Array einfo__utils__is_packed_array +B Is_Packed_Array (E Id); + +#define Is_Prival einfo__utils__is_prival +B Is_Prival (E Id); + +#define Is_Protected_Component einfo__utils__is_protected_component +B Is_Protected_Component (E Id); + +#define Is_Protected_Interface einfo__utils__is_protected_interface +B Is_Protected_Interface (E Id); + +#define Is_Protected_Record_Type einfo__utils__is_protected_record_type +B Is_Protected_Record_Type (E Id); + +#define Is_Relaxed_Initialization_State einfo__utils__is_relaxed_initialization_state +B Is_Relaxed_Initialization_State (E Id); + +#define Is_Standard_Character_Type einfo__utils__is_standard_character_type +B Is_Standard_Character_Type (E Id); + +#define Is_Standard_String_Type einfo__utils__is_standard_string_type +B Is_Standard_String_Type (E Id); + +#define Is_String_Type einfo__utils__is_string_type +B Is_String_Type (E Id); + +#define Is_Synchronized_Interface einfo__utils__is_synchronized_interface +B Is_Synchronized_Interface (E Id); + +#define Is_Synchronized_State einfo__utils__is_synchronized_state +B Is_Synchronized_State (E Id); + +#define Is_Task_Interface einfo__utils__is_task_interface +B Is_Task_Interface (E Id); + +#define Is_Task_Record_Type einfo__utils__is_task_record_type +B Is_Task_Record_Type (E Id); + +#define Is_Wrapper_Package einfo__utils__is_wrapper_package +B Is_Wrapper_Package (E Id); + +#define Last_Formal einfo__utils__last_formal +E Last_Formal (E Id); + +#define Machine_Emax_Value einfo__utils__machine_emax_value +U Machine_Emax_Value (E Id); + +#define Machine_Emin_Value einfo__utils__machine_emin_value +U Machine_Emin_Value (E Id); + +#define Machine_Mantissa_Value einfo__utils__machine_mantissa_value +U Machine_Mantissa_Value (E Id); + +#define Machine_Radix_Value einfo__utils__machine_radix_value +U Machine_Radix_Value (E Id); + +#define Model_Emin_Value einfo__utils__model_emin_value +U Model_Emin_Value (E Id); + +#define Model_Epsilon_Value einfo__utils__model_epsilon_value +R Model_Epsilon_Value (E Id); + +#define Model_Mantissa_Value einfo__utils__model_mantissa_value +U Model_Mantissa_Value (E Id); + +#define Model_Small_Value einfo__utils__model_small_value +R Model_Small_Value (E Id); + +#define Next_Component einfo__utils__next_component +E Next_Component (E Id); + +#define Next_Component_Or_Discriminant einfo__utils__next_component_or_discriminant +E Next_Component_Or_Discriminant (E Id); + +#define Next_Discriminant einfo__utils__next_discriminant +E Next_Discriminant (E Id); + +#define Next_Formal einfo__utils__next_formal +E Next_Formal (E Id); + +#define Next_Formal_With_Extras einfo__utils__next_formal_with_extras +E Next_Formal_With_Extras (E Id); + +#define Number_Dimensions einfo__utils__number_dimensions +Pos Number_Dimensions (E Id); + +#define Number_Entries einfo__utils__number_entries +Nat Number_Entries (E Id); + +#define Number_Formals einfo__utils__number_formals +Pos Number_Formals (E Id); + +#define Object_Size_Clause einfo__utils__object_size_clause +N Object_Size_Clause (E Id); + +#define Partial_Refinement_Constituents einfo__utils__partial_refinement_constituents +L Partial_Refinement_Constituents (E Id); + +#define Primitive_Operations einfo__utils__primitive_operations +L Primitive_Operations (E Id); + +#define Root_Type einfo__utils__root_type +E Root_Type (E Id); + +#define Safe_Emax_Value einfo__utils__safe_emax_value +U Safe_Emax_Value (E Id); + +#define Safe_First_Value einfo__utils__safe_first_value +R Safe_First_Value (E Id); + +#define Safe_Last_Value einfo__utils__safe_last_value +R Safe_Last_Value (E Id); + +#define Scope_Depth einfo__utils__scope_depth +U Scope_Depth (E Id); + +#define Scope_Depth_Set einfo__utils__scope_depth_set +B Scope_Depth_Set (E Id); + +#define Size_Clause einfo__utils__size_clause +N Size_Clause (E Id); + +#define Stream_Size_Clause einfo__utils__stream_size_clause +N Stream_Size_Clause (E Id); + +#define Type_High_Bound einfo__utils__type_high_bound +N Type_High_Bound (E Id); + +#define Type_Low_Bound einfo__utils__type_low_bound +N Type_Low_Bound (E Id); + +#define Underlying_Type einfo__utils__underlying_type +E Underlying_Type (E Id); + +#define Known_Alignment einfo__utils__known_alignment +B Known_Alignment (Entity_Id E); + +#define Known_Component_Bit_Offset einfo__utils__known_component_bit_offset +B Known_Component_Bit_Offset (Entity_Id E); + +#define Known_Component_Size einfo__utils__known_component_size +B Known_Component_Size (Entity_Id E); + +#define Known_Esize einfo__utils__known_esize +B Known_Esize (Entity_Id E); + +#define Known_Normalized_First_Bit einfo__utils__known_normalized_first_bit +B Known_Normalized_First_Bit (Entity_Id E); + +#define Known_Normalized_Position einfo__utils__known_normalized_position +B Known_Normalized_Position (Entity_Id E); + +#define Known_Normalized_Position_Max einfo__utils__known_normalized_position_max +B Known_Normalized_Position_Max (Entity_Id E); + +#define Known_RM_Size einfo__utils__known_rm_size +B Known_RM_Size (Entity_Id E); + +#define Known_Static_Component_Bit_Offset einfo__utils__known_static_component_bit_offset +B Known_Static_Component_Bit_Offset (Entity_Id E); + +#define Known_Static_Component_Size einfo__utils__known_static_component_size +B Known_Static_Component_Size (Entity_Id E); + +#define Known_Static_Esize einfo__utils__known_static_esize +B Known_Static_Esize (Entity_Id E); + +#define Known_Static_Normalized_First_Bit einfo__utils__known_static_normalized_first_bit +B Known_Static_Normalized_First_Bit (Entity_Id E); + +#define Known_Static_Normalized_Position einfo__utils__known_static_normalized_position +B Known_Static_Normalized_Position (Entity_Id E); + +#define Known_Static_Normalized_Position_Max einfo__utils__known_static_normalized_position_max +B Known_Static_Normalized_Position_Max (Entity_Id E); + +#define Known_Static_RM_Size einfo__utils__known_static_rm_size +B Known_Static_RM_Size (Entity_Id E); + +#define Unknown_Alignment einfo__utils__unknown_alignment +B Unknown_Alignment (Entity_Id E); + +#define Unknown_Component_Bit_Offset einfo__utils__unknown_component_bit_offset +B Unknown_Component_Bit_Offset (Entity_Id E); + +#define Unknown_Component_Size einfo__utils__unknown_component_size +B Unknown_Component_Size (Entity_Id E); + +#define Unknown_Esize einfo__utils__unknown_esize +B Unknown_Esize (Entity_Id E); + +#define Unknown_Normalized_First_Bit einfo__utils__unknown_normalized_first_bit +B Unknown_Normalized_First_Bit (Entity_Id E); + +#define Unknown_Normalized_Position einfo__utils__unknown_normalized_position +B Unknown_Normalized_Position (Entity_Id E); + +#define Unknown_Normalized_Position_Max einfo__utils__unknown_normalized_position_max +B Unknown_Normalized_Position_Max (Entity_Id E); + +#define Unknown_RM_Size einfo__utils__unknown_rm_size +B Unknown_RM_Size (Entity_Id E); + +// The following were automatically generated as INLINE functions in the old +// einfo.h by the spitbol program. +// Is it important that they be inlined???? + +#define Is_Discrete_Or_Fixed_Point_Type einfo__utils__is_discrete_or_fixed_point_type +B Is_Discrete_Or_Fixed_Point_Type (E Id); + +#define Is_Floating_Point_Type einfo__utils__is_floating_point_type +B Is_Floating_Point_Type (E Id); + +#define Is_Record_Type einfo__utils__is_record_type +B Is_Record_Type (E Id); + +#define Has_DIC einfo__utils__has_dic +B Has_DIC (E Id); + +#define Has_Invariants einfo__utils__has_invariants +B Has_Invariants (E Id); + +#define Is_Full_Access einfo__utils__is_full_access +B Is_Full_Access (E Id); + +#define Next_Index einfo__utils__next_index +Node_Id Next_Index (Node_Id Id); + +#define Next_Literal einfo__utils__next_literal +E Next_Literal (E Id); + +#define Next_Stored_Discriminant einfo__utils__next_stored_discriminant +E Next_Stored_Discriminant (E Id); + +#define Parameter_Mode einfo__utils__parameter_mode +// Parameter_Mode really returns Formal_Kind, but that is not visible, because +// fe.h is included before einfo.h. +Entity_Kind Parameter_Mode (E Id); + +#define Is_List_Member einfo__utils__is_list_member +B Is_List_Member (N Node); + +#define List_Containing einfo__utils__list_containing +S List_Containing (N Node); + +// The following is needed because Convention in Sem_Util is a renaming +// of Basic_Convention. + +#define Convention einfo__entities__basic_convention +Convention_Id Convention (N Node); + +// See comments regarding Entity_Or_Associated_Node in Sinfo.Utils. + +#define Entity sinfo__nodes__entity_or_associated_node +Entity_Id Entity (N Node); + +// See comments regarding Renamed_Or_Alias in Einfo.Utils + +#define Alias einfo__entities__renamed_or_alias + +#define Renamed_Entity einfo__entities__renamed_or_alias +Node_Id Renamed_Entity (N Node); + +#define Renamed_Object einfo__entities__renamed_or_alias +Node_Id Renamed_Object (N Node); + #ifdef __cplusplus } #endif |