aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/atree.h
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2021-02-03 05:31:16 -0500
committerPierre-Marie de Rodat <derodat@adacore.com>2021-05-07 05:29:09 -0400
commit76f9c7f44fffb0b03266730b137313fe79f1c99e (patch)
tree8c77fa6bd5661f0ffb427f7003a21b9a46dc30d6 /gcc/ada/atree.h
parent476ed6bf66ab20e22ae4b3da0fd7fd94753f2334 (diff)
downloadgcc-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/atree.h')
-rw-r--r--gcc/ada/atree.h941
1 files changed, 131 insertions, 810 deletions
diff --git a/gcc/ada/atree.h b/gcc/ada/atree.h
index 2c88697..6b8f7b9 100644
--- a/gcc/ada/atree.h
+++ b/gcc/ada/atree.h
@@ -35,353 +35,12 @@
extern "C" {
#endif
-/* Structure used for the first part of the node in the case where we have
- an Nkind. */
-
-struct NFK
-{
- Boolean is_extension : 1;
- Boolean pflag1 : 1;
- Boolean pflag2 : 1;
- Boolean in_list : 1;
- Boolean has_aspects : 1;
- Boolean rewrite_ins : 1;
- Boolean analyzed : 1;
- Boolean c_f_s : 1;
- Boolean error_posted : 1;
-
- Boolean flag4 : 1;
- Boolean flag5 : 1;
- Boolean flag6 : 1;
- Boolean flag7 : 1;
- Boolean flag8 : 1;
- Boolean flag9 : 1;
- Boolean flag10 : 1;
-
- Boolean flag11 : 1;
- Boolean flag12 : 1;
- Boolean flag13 : 1;
- Boolean flag14 : 1;
- Boolean flag15 : 1;
- Boolean flag16 : 1;
- Boolean flag17 : 1;
- Boolean flag18 : 1;
-
- unsigned char kind;
-};
-
-/* Structure for the first part of a node when Nkind is not present by
- extra flag bits are. */
-
-struct NFNK
-{
- Boolean is_extension : 1;
- Boolean pflag1 : 1;
- Boolean pflag2 : 1;
- Boolean in_list : 1;
- Boolean has_aspects : 1;
- Boolean rewrite_ins : 1;
- Boolean analyzed : 1;
- Boolean c_f_s : 1;
- Boolean error_posted : 1;
-
- Boolean flag4 : 1;
- Boolean flag5 : 1;
- Boolean flag6 : 1;
- Boolean flag7 : 1;
- Boolean flag8 : 1;
- Boolean flag9 : 1;
- Boolean flag10 : 1;
-
- Boolean flag11 : 1;
- Boolean flag12 : 1;
- Boolean flag13 : 1;
- Boolean flag14 : 1;
- Boolean flag15 : 1;
- Boolean flag16 : 1;
- Boolean flag17 : 1;
- Boolean flag18 : 1;
-
- Boolean flag65 : 1;
- Boolean flag66 : 1;
- Boolean flag67 : 1;
- Boolean flag68 : 1;
- Boolean flag69 : 1;
- Boolean flag70 : 1;
- Boolean flag71 : 1;
- Boolean flag72 : 1;
-};
-
-/* Structure used for extra flags in third component overlaying Field12 */
-struct Flag_Word
-{
- Boolean flag73 : 1;
- Boolean flag74 : 1;
- Boolean flag75 : 1;
- Boolean flag76 : 1;
- Boolean flag77 : 1;
- Boolean flag78 : 1;
- Boolean flag79 : 1;
- Boolean flag80 : 1;
- Boolean flag81 : 1;
- Boolean flag82 : 1;
- Boolean flag83 : 1;
- Boolean flag84 : 1;
- Boolean flag85 : 1;
- Boolean flag86 : 1;
- Boolean flag87 : 1;
- Boolean flag88 : 1;
- Boolean flag89 : 1;
- Boolean flag90 : 1;
- Boolean flag91 : 1;
- Boolean flag92 : 1;
- Boolean flag93 : 1;
- Boolean flag94 : 1;
- Boolean flag95 : 1;
- Boolean flag96 : 1;
- Byte convention : 8;
-};
-
-/* Structure used for extra flags in fourth component overlaying Field12 */
-struct Flag_Word2
-{
- Boolean flag97 : 1;
- Boolean flag98 : 1;
- Boolean flag99 : 1;
- Boolean flag100 : 1;
- Boolean flag101 : 1;
- Boolean flag102 : 1;
- Boolean flag103 : 1;
- Boolean flag104 : 1;
- Boolean flag105 : 1;
- Boolean flag106 : 1;
- Boolean flag107 : 1;
- Boolean flag108 : 1;
- Boolean flag109 : 1;
- Boolean flag110 : 1;
- Boolean flag111 : 1;
- Boolean flag112 : 1;
- Boolean flag113 : 1;
- Boolean flag114 : 1;
- Boolean flag115 : 1;
- Boolean flag116 : 1;
- Boolean flag117 : 1;
- Boolean flag118 : 1;
- Boolean flag119 : 1;
- Boolean flag120 : 1;
- Boolean flag121 : 1;
- Boolean flag122 : 1;
- Boolean flag123 : 1;
- Boolean flag124 : 1;
- Boolean flag125 : 1;
- Boolean flag126 : 1;
- Boolean flag127 : 1;
- Boolean flag128 : 1;
-};
-
-/* Structure used for extra flags in fourth component overlaying Field11 */
-struct Flag_Word3
-{
- Boolean flag152 : 1;
- Boolean flag153 : 1;
- Boolean flag154 : 1;
- Boolean flag155 : 1;
- Boolean flag156 : 1;
- Boolean flag157 : 1;
- Boolean flag158 : 1;
- Boolean flag159 : 1;
-
- Boolean flag160 : 1;
- Boolean flag161 : 1;
- Boolean flag162 : 1;
- Boolean flag163 : 1;
- Boolean flag164 : 1;
- Boolean flag165 : 1;
- Boolean flag166 : 1;
- Boolean flag167 : 1;
-
- Boolean flag168 : 1;
- Boolean flag169 : 1;
- Boolean flag170 : 1;
- Boolean flag171 : 1;
- Boolean flag172 : 1;
- Boolean flag173 : 1;
- Boolean flag174 : 1;
- Boolean flag175 : 1;
-
- Boolean flag176 : 1;
- Boolean flag177 : 1;
- Boolean flag178 : 1;
- Boolean flag179 : 1;
- Boolean flag180 : 1;
- Boolean flag181 : 1;
- Boolean flag182 : 1;
- Boolean flag183 : 1;
-};
-
-/* Structure used for extra flags in fifth component overlaying Field12 */
-struct Flag_Word4
-{
- Boolean flag184 : 1;
- Boolean flag185 : 1;
- Boolean flag186 : 1;
- Boolean flag187 : 1;
- Boolean flag188 : 1;
- Boolean flag189 : 1;
- Boolean flag190 : 1;
- Boolean flag191 : 1;
-
- Boolean flag192 : 1;
- Boolean flag193 : 1;
- Boolean flag194 : 1;
- Boolean flag195 : 1;
- Boolean flag196 : 1;
- Boolean flag197 : 1;
- Boolean flag198 : 1;
- Boolean flag199 : 1;
-
- Boolean flag200 : 1;
- Boolean flag201 : 1;
- Boolean flag202 : 1;
- Boolean flag203 : 1;
- Boolean flag204 : 1;
- Boolean flag205 : 1;
- Boolean flag206 : 1;
- Boolean flag207 : 1;
-
- Boolean flag208 : 1;
- Boolean flag209 : 1;
- Boolean flag210 : 1;
- Boolean flag211 : 1;
- Boolean flag212 : 1;
- Boolean flag213 : 1;
- Boolean flag214 : 1;
- Boolean flag215 : 1;
-};
-
-/* Structure used for extra flags in sixth component overlaying Field12 */
-struct Flag_Word5
-{
- Boolean flag255 : 1;
- Boolean flag256 : 1;
- Boolean flag257 : 1;
- Boolean flag258 : 1;
- Boolean flag259 : 1;
- Boolean flag260 : 1;
- Boolean flag261 : 1;
- Boolean flag262 : 1;
-
- Boolean flag263 : 1;
- Boolean flag264 : 1;
- Boolean flag265 : 1;
- Boolean flag266 : 1;
- Boolean flag267 : 1;
- Boolean flag268 : 1;
- Boolean flag269 : 1;
- Boolean flag270 : 1;
-
- Boolean flag271 : 1;
- Boolean flag272 : 1;
- Boolean flag273 : 1;
- Boolean flag274 : 1;
- Boolean flag275 : 1;
- Boolean flag276 : 1;
- Boolean flag277 : 1;
- Boolean flag278 : 1;
-
- Boolean flag279 : 1;
- Boolean flag280 : 1;
- Boolean flag281 : 1;
- Boolean flag282 : 1;
- Boolean flag283 : 1;
- Boolean flag284 : 1;
- Boolean flag285 : 1;
- Boolean flag286 : 1;
-};
-struct Non_Extended
-{
- Source_Ptr sloc;
- Int link;
- Int field1;
- Int field2;
- Int field3;
- Int field4;
- Int field5;
-};
-
-/* The Following structure corresponds to variant with is_extension = True. */
-struct Extended
-{
- Int field6;
- Int field7;
- Int field8;
- Int field9;
- Int field10;
- union
- {
- Int field11;
- struct Flag_Word3 fw3;
- } X;
-
- union
- {
- Int field12;
- struct Flag_Word fw;
- struct Flag_Word2 fw2;
- struct Flag_Word4 fw4;
- struct Flag_Word5 fw5;
- } U;
-};
-
-/* A tree node itself. */
-
-struct Node
-{
- union kind
- {
- struct NFK K;
- struct NFNK NK;
- } U;
-
- union variant
- {
- struct Non_Extended NX;
- struct Extended EX;
- } V;
-};
-
-/* The actual tree is an array of nodes. The pointer to this array is passed
- as a parameter to the tree transformer procedure and stored in the global
- variable Nodes_Ptr after adjusting it by subtracting Node_First_Entry, so
- that Node_Id values can be used as subscripts. */
-extern struct Node *Nodes_Ptr;
-
#define Parent atree__parent
extern Node_Id Parent (Node_Id);
#define Original_Node atree__original_node
extern Node_Id Original_Node (Node_Id);
-/* The auxiliary flags array which is allocated in parallel to Nodes */
-
-struct Flags
-{
- Boolean Flag0 : 1;
- Boolean Flag1 : 1;
- Boolean Flag2 : 1;
- Boolean Flag3 : 1;
- Boolean Spare0 : 1;
- Boolean Spare1 : 1;
- Boolean Spare2 : 1;
- Boolean Spare3 : 1;
-};
-extern struct Flags *Flags_Ptr;
-
-/* Overloaded Functions:
-
- These functions are overloaded in the original Ada source, but there is
- only one corresponding C function, which works as described below. */
-
/* Type used for union of Node_Id, List_Id, Elist_Id. */
typedef Int Tree_Id;
@@ -400,7 +59,7 @@ No (Tree_Id N)
INLINE Boolean
Present (Tree_Id N)
{
- return N != Empty;
+ return !No (N);
}
extern Node_Id Parent (Tree_Id);
@@ -408,488 +67,150 @@ extern Node_Id Parent (Tree_Id);
#define Current_Error_Node atree__current_error_node
extern Node_Id Current_Error_Node;
-/* Node Access Functions: */
-
-#define Nkind(N) ((Node_Kind) (Nodes_Ptr[(N) - First_Node_Id].U.K.kind))
-#define Ekind(N) ((Entity_Kind) (Nodes_Ptr[N + 1].U.K.kind))
-#define Sloc(N) (Nodes_Ptr[(N) - First_Node_Id].V.NX.sloc)
-#define Paren_Count(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.pflag1 \
- + 2 * Nodes_Ptr[(N) - First_Node_Id].U.K.pflag2)
-
-#define Field1(N) (Nodes_Ptr[(N) - First_Node_Id].V.NX.field1)
-#define Field2(N) (Nodes_Ptr[(N) - First_Node_Id].V.NX.field2)
-#define Field3(N) (Nodes_Ptr[(N) - First_Node_Id].V.NX.field3)
-#define Field4(N) (Nodes_Ptr[(N) - First_Node_Id].V.NX.field4)
-#define Field5(N) (Nodes_Ptr[(N) - First_Node_Id].V.NX.field5)
-#define Field6(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.field6)
-#define Field7(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.field7)
-#define Field8(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.field8)
-#define Field9(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.field9)
-#define Field10(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.field10)
-#define Field11(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.X.field11)
-#define Field12(N) (Nodes_Ptr[(N) - First_Node_Id + 1].V.EX.U.field12)
-#define Field13(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.field6)
-#define Field14(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.field7)
-#define Field15(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.field8)
-#define Field16(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.field9)
-#define Field17(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.field10)
-#define Field18(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.X.field11)
-#define Field19(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.field6)
-#define Field20(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.field7)
-#define Field21(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.field8)
-#define Field22(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.field9)
-#define Field23(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.field10)
-#define Field24(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.field6)
-#define Field25(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.field7)
-#define Field26(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.field8)
-#define Field27(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.field9)
-#define Field28(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.field10)
-#define Field29(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.X.field11)
-#define Field30(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.field6)
-#define Field31(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.field7)
-#define Field32(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.field8)
-#define Field33(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.field9)
-#define Field34(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.field10)
-#define Field35(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.X.field11)
-#define Field36(N) (Nodes_Ptr[(N) - First_Node_Id + 6].V.EX.field6)
-#define Field37(N) (Nodes_Ptr[(N) - First_Node_Id + 6].V.EX.field7)
-#define Field38(N) (Nodes_Ptr[(N) - First_Node_Id + 6].V.EX.field8)
-#define Field39(N) (Nodes_Ptr[(N) - First_Node_Id + 6].V.EX.field9)
-#define Field40(N) (Nodes_Ptr[(N) - First_Node_Id + 6].V.EX.field10)
-#define Field41(N) (Nodes_Ptr[(N) - First_Node_Id + 6].V.EX.X.field11)
-
-#define Node1(N) Field1 (N)
-#define Node2(N) Field2 (N)
-#define Node3(N) Field3 (N)
-#define Node4(N) Field4 (N)
-#define Node5(N) Field5 (N)
-#define Node6(N) Field6 (N)
-#define Node7(N) Field7 (N)
-#define Node8(N) Field8 (N)
-#define Node9(N) Field9 (N)
-#define Node10(N) Field10 (N)
-#define Node11(N) Field11 (N)
-#define Node12(N) Field12 (N)
-#define Node13(N) Field13 (N)
-#define Node14(N) Field14 (N)
-#define Node15(N) Field15 (N)
-#define Node16(N) Field16 (N)
-#define Node17(N) Field17 (N)
-#define Node18(N) Field18 (N)
-#define Node19(N) Field19 (N)
-#define Node20(N) Field20 (N)
-#define Node21(N) Field21 (N)
-#define Node22(N) Field22 (N)
-#define Node23(N) Field23 (N)
-#define Node24(N) Field24 (N)
-#define Node25(N) Field25 (N)
-#define Node26(N) Field26 (N)
-#define Node27(N) Field27 (N)
-#define Node28(N) Field28 (N)
-#define Node29(N) Field29 (N)
-#define Node30(N) Field30 (N)
-#define Node31(N) Field31 (N)
-#define Node32(N) Field32 (N)
-#define Node33(N) Field33 (N)
-#define Node34(N) Field34 (N)
-#define Node35(N) Field35 (N)
-#define Node36(N) Field36 (N)
-#define Node37(N) Field37 (N)
-#define Node38(N) Field38 (N)
-#define Node39(N) Field39 (N)
-#define Node40(N) Field40 (N)
-#define Node41(N) Field41 (N)
-
-#define List1(N) Field1 (N)
-#define List2(N) Field2 (N)
-#define List3(N) Field3 (N)
-#define List4(N) Field4 (N)
-#define List5(N) Field5 (N)
-#define List10(N) Field10 (N)
-#define List14(N) Field14 (N)
-#define List25(N) Field25 (N)
-#define List38(N) Field38 (N)
-#define List39(N) Field39 (N)
-
-#define Elist1(N) Field1 (N)
-#define Elist2(N) Field2 (N)
-#define Elist3(N) Field3 (N)
-#define Elist4(N) Field4 (N)
-#define Elist5(N) Field5 (N)
-#define Elist8(N) Field8 (N)
-#define Elist9(N) Field9 (N)
-#define Elist10(N) Field10 (N)
-#define Elist11(N) Field11 (N)
-#define Elist13(N) Field13 (N)
-#define Elist15(N) Field15 (N)
-#define Elist16(N) Field16 (N)
-#define Elist18(N) Field18 (N)
-#define Elist21(N) Field21 (N)
-#define Elist23(N) Field23 (N)
-#define Elist24(N) Field24 (N)
-#define Elist25(N) Field25 (N)
-#define Elist26(N) Field26 (N)
-#define Elist29(N) Field29 (N)
-#define Elist30(N) Field30 (N)
-#define Elist36(N) Field36 (N)
-
-#define Name1(N) Field1 (N)
-#define Name2(N) Field2 (N)
-
-#define Char_Code2(N) (Field2 (N) - Char_Code_Bias)
-
-#define Str3(N) Field3 (N)
+// The following code corresponds to the Get_n_Bit_Field functions (for
+// various n) in package Atree. The low-level getters in sinfo.h call
+// these even-lower-level getters.
-#define Uint2(N) ((Field2 (N) == 0) ? Uint_0 : Field2 (N))
-#define Uint3(N) ((Field3 (N) == 0) ? Uint_0 : Field3 (N))
-#define Uint4(N) ((Field4 (N) == 0) ? Uint_0 : Field4 (N))
-#define Uint5(N) ((Field5 (N) == 0) ? Uint_0 : Field5 (N))
-#define Uint8(N) ((Field8 (N) == 0) ? Uint_0 : Field8 (N))
-#define Uint9(N) ((Field9 (N) == 0) ? Uint_0 : Field9 (N))
-#define Uint10(N) ((Field10 (N) == 0) ? Uint_0 : Field10 (N))
-#define Uint11(N) ((Field11 (N) == 0) ? Uint_0 : Field11 (N))
-#define Uint12(N) ((Field12 (N) == 0) ? Uint_0 : Field12 (N))
-#define Uint13(N) ((Field13 (N) == 0) ? Uint_0 : Field13 (N))
-#define Uint14(N) ((Field14 (N) == 0) ? Uint_0 : Field14 (N))
-#define Uint15(N) ((Field15 (N) == 0) ? Uint_0 : Field15 (N))
-#define Uint16(N) ((Field16 (N) == 0) ? Uint_0 : Field16 (N))
-#define Uint17(N) ((Field17 (N) == 0) ? Uint_0 : Field17 (N))
-#define Uint22(N) ((Field22 (N) == 0) ? Uint_0 : Field22 (N))
-#define Uint24(N) ((Field24 (N) == 0) ? Uint_0 : Field24 (N))
+extern Field_Offset *Node_Offsets_Ptr;
+extern slot* Slots_Ptr;
-#define Ureal3(N) Field3 (N)
-#define Ureal18(N) Field18 (N)
-#define Ureal21(N) Field21 (N)
+static Union_Id Get_1_Bit_Field(Node_Id N, Field_Offset Offset);
+static Union_Id Get_2_Bit_Field(Node_Id N, Field_Offset Offset);
+static Union_Id Get_4_Bit_Field(Node_Id N, Field_Offset Offset);
+static Union_Id Get_8_Bit_Field(Node_Id N, Field_Offset Offset);
+static Union_Id Get_32_Bit_Field(Node_Id N, Field_Offset Offset);
+static Union_Id Get_32_Bit_Field_With_Default
+ (Node_Id N, Field_Offset Offset, Union_Id Default_Value);
-#define Analyzed(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.analyzed)
-#define Comes_From_Source(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.c_f_s)
-#define Error_Posted(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.error_posted)
-#define Has_Aspects(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.has_aspects)
-#define Convention(N) \
- (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.convention)
-
-#define Flag0(N) (Flags_Ptr[(N) - First_Node_Id].Flag0)
-#define Flag1(N) (Flags_Ptr[(N) - First_Node_Id].Flag1)
-#define Flag2(N) (Flags_Ptr[(N) - First_Node_Id].Flag2)
-#define Flag3(N) (Flags_Ptr[(N) - First_Node_Id].Flag3)
-
-#define Flag4(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag4)
-#define Flag5(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag5)
-#define Flag6(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag6)
-#define Flag7(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag7)
-#define Flag8(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag8)
-#define Flag9(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag9)
-#define Flag10(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag10)
-#define Flag11(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag11)
-#define Flag12(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag12)
-#define Flag13(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag13)
-#define Flag14(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag14)
-#define Flag15(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag15)
-#define Flag16(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag16)
-#define Flag17(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag17)
-#define Flag18(N) (Nodes_Ptr[(N) - First_Node_Id].U.K.flag18)
+INLINE Union_Id
+Get_1_Bit_Field(Node_Id N, Field_Offset Offset)
+{
+ const Field_Offset L = 32;
+ slot_1_bit slot = (Slots_Ptr + (Node_Offsets_Ptr[N] + Offset/L))->slot_1;
-#define Flag19(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.in_list)
-#define Flag20(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.has_aspects)
-#define Flag21(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.rewrite_ins)
-#define Flag22(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.analyzed)
-#define Flag23(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.c_f_s)
-#define Flag24(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.error_posted)
-#define Flag25(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag4)
-#define Flag26(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag5)
-#define Flag27(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag6)
-#define Flag28(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag7)
-#define Flag29(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag8)
-#define Flag30(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag9)
-#define Flag31(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag10)
-#define Flag32(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag11)
-#define Flag33(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag12)
-#define Flag34(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag13)
-#define Flag35(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag14)
-#define Flag36(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag15)
-#define Flag37(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag16)
-#define Flag38(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag17)
-#define Flag39(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.flag18)
+ switch (Offset%L)
+ {
+ case 0: return slot.f0;
+ case 1: return slot.f1;
+ case 2: return slot.f2;
+ case 3: return slot.f3;
+ case 4: return slot.f4;
+ case 5: return slot.f5;
+ case 6: return slot.f6;
+ case 7: return slot.f7;
+ case 8: return slot.f8;
+ case 9: return slot.f9;
+ case 10: return slot.f10;
+ case 11: return slot.f11;
+ case 12: return slot.f12;
+ case 13: return slot.f13;
+ case 14: return slot.f14;
+ case 15: return slot.f15;
+ case 16: return slot.f16;
+ case 17: return slot.f17;
+ case 18: return slot.f18;
+ case 19: return slot.f19;
+ case 20: return slot.f20;
+ case 21: return slot.f21;
+ case 22: return slot.f22;
+ case 23: return slot.f23;
+ case 24: return slot.f24;
+ case 25: return slot.f25;
+ case 26: return slot.f26;
+ case 27: return slot.f27;
+ case 28: return slot.f28;
+ case 29: return slot.f29;
+ case 30: return slot.f30;
+ case 31: return slot.f31;
+ default: gcc_assert(false);
+ }
+}
-#define Flag40(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.in_list)
-#define Flag41(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.has_aspects)
-#define Flag42(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.rewrite_ins)
-#define Flag43(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.analyzed)
-#define Flag44(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.c_f_s)
-#define Flag45(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.error_posted)
-#define Flag46(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag4)
-#define Flag47(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag5)
-#define Flag48(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag6)
-#define Flag49(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag7)
-#define Flag50(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag8)
-#define Flag51(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag9)
-#define Flag52(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag10)
-#define Flag53(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag11)
-#define Flag54(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag12)
-#define Flag55(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag13)
-#define Flag56(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag14)
-#define Flag57(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag15)
-#define Flag58(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag16)
-#define Flag59(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag17)
-#define Flag60(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.flag18)
-#define Flag61(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.pflag1)
-#define Flag62(N) (Nodes_Ptr[(N) - First_Node_Id + 1].U.K.pflag2)
-#define Flag63(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.pflag1)
-#define Flag64(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.K.pflag2)
+INLINE Union_Id
+Get_2_Bit_Field(Node_Id N, Field_Offset Offset)
+{
+ const Field_Offset L = 16;
+ slot_2_bit slot = (Slots_Ptr + (Node_Offsets_Ptr[N] + Offset/L))->slot_2;
-#define Flag65(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag65)
-#define Flag66(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag66)
-#define Flag67(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag67)
-#define Flag68(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag68)
-#define Flag69(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag69)
-#define Flag70(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag70)
-#define Flag71(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag71)
-#define Flag72(N) (Nodes_Ptr[(N) - First_Node_Id + 2].U.NK.flag72)
+ switch (Offset%L)
+ {
+ case 0: return slot.f0;
+ case 1: return slot.f1;
+ case 2: return slot.f2;
+ case 3: return slot.f3;
+ case 4: return slot.f4;
+ case 5: return slot.f5;
+ case 6: return slot.f6;
+ case 7: return slot.f7;
+ case 8: return slot.f8;
+ case 9: return slot.f9;
+ case 10: return slot.f10;
+ case 11: return slot.f11;
+ case 12: return slot.f12;
+ case 13: return slot.f13;
+ case 14: return slot.f14;
+ case 15: return slot.f15;
+ default: gcc_assert(false);
+ }
+}
-#define Flag73(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag73)
-#define Flag74(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag74)
-#define Flag75(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag75)
-#define Flag76(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag76)
-#define Flag77(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag77)
-#define Flag78(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag78)
-#define Flag79(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag79)
-#define Flag80(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag80)
-#define Flag81(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag81)
-#define Flag82(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag82)
-#define Flag83(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag83)
-#define Flag84(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag84)
-#define Flag85(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag85)
-#define Flag86(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag86)
-#define Flag87(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag87)
-#define Flag88(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag88)
-#define Flag89(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag89)
-#define Flag90(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag90)
-#define Flag91(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag91)
-#define Flag92(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag92)
-#define Flag93(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag93)
-#define Flag94(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag94)
-#define Flag95(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag95)
-#define Flag96(N) (Nodes_Ptr[(N) - First_Node_Id + 2].V.EX.U.fw.flag96)
-#define Flag97(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag97)
-#define Flag98(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag98)
-#define Flag99(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag99)
-#define Flag100(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag100)
-#define Flag101(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag101)
-#define Flag102(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag102)
-#define Flag103(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag103)
-#define Flag104(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag104)
-#define Flag105(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag105)
-#define Flag106(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag106)
-#define Flag107(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag107)
-#define Flag108(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag108)
-#define Flag109(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag109)
-#define Flag110(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag110)
-#define Flag111(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag111)
-#define Flag112(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag112)
-#define Flag113(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag113)
-#define Flag114(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag114)
-#define Flag115(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag115)
-#define Flag116(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag116)
-#define Flag117(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag117)
-#define Flag118(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag118)
-#define Flag119(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag119)
-#define Flag120(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag120)
-#define Flag121(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag121)
-#define Flag122(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag122)
-#define Flag123(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag123)
-#define Flag124(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag124)
-#define Flag125(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag125)
-#define Flag126(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag126)
-#define Flag127(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag127)
-#define Flag128(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.U.fw2.flag128)
+INLINE Union_Id
+Get_4_Bit_Field(Node_Id N, Field_Offset Offset)
+{
+ const Field_Offset L = 8;
+ slot_4_bit slot = (Slots_Ptr + (Node_Offsets_Ptr[N] + Offset/L))->slot_4;
-#define Flag129(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.in_list)
-#define Flag130(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.has_aspects)
-#define Flag131(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.rewrite_ins)
-#define Flag132(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.analyzed)
-#define Flag133(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.c_f_s)
-#define Flag134(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.error_posted)
-#define Flag135(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag4)
-#define Flag136(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag5)
-#define Flag137(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag6)
-#define Flag138(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag7)
-#define Flag139(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag8)
-#define Flag140(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag9)
-#define Flag141(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag10)
-#define Flag142(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag11)
-#define Flag143(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag12)
-#define Flag144(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag13)
-#define Flag145(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag14)
-#define Flag146(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag15)
-#define Flag147(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag16)
-#define Flag148(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag17)
-#define Flag149(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.flag18)
-#define Flag150(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.pflag1)
-#define Flag151(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.K.pflag2)
+ switch (Offset%L)
+ {
+ case 0: return slot.f0;
+ case 1: return slot.f1;
+ case 2: return slot.f2;
+ case 3: return slot.f3;
+ case 4: return slot.f4;
+ case 5: return slot.f5;
+ case 6: return slot.f6;
+ case 7: return slot.f7;
+ default: gcc_assert(false);
+ }
+}
-#define Flag152(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag152)
-#define Flag153(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag153)
-#define Flag154(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag154)
-#define Flag155(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag155)
-#define Flag156(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag156)
-#define Flag157(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag157)
-#define Flag158(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag158)
-#define Flag159(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag159)
-#define Flag160(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag160)
-#define Flag161(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag161)
-#define Flag162(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag162)
-#define Flag163(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag163)
-#define Flag164(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag164)
-#define Flag165(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag165)
-#define Flag166(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag166)
-#define Flag167(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag167)
-#define Flag168(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag168)
-#define Flag169(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag169)
-#define Flag170(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag170)
-#define Flag171(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag171)
-#define Flag172(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag172)
-#define Flag173(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag173)
-#define Flag174(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag174)
-#define Flag175(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag175)
-#define Flag176(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag176)
-#define Flag177(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag177)
-#define Flag178(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag178)
-#define Flag179(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag179)
-#define Flag180(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag180)
-#define Flag181(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag181)
-#define Flag182(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag182)
-#define Flag183(N) (Nodes_Ptr[(N) - First_Node_Id + 3].V.EX.X.fw3.flag183)
+INLINE Union_Id
+Get_8_Bit_Field(Node_Id N, Field_Offset Offset)
+{
+ const Field_Offset L = 4;
+ slot_8_bit slot = (Slots_Ptr + (Node_Offsets_Ptr[N] + Offset/L))->slot_8;
-#define Flag184(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag184)
-#define Flag185(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag185)
-#define Flag186(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag186)
-#define Flag187(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag187)
-#define Flag188(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag188)
-#define Flag189(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag189)
-#define Flag190(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag190)
-#define Flag191(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag191)
-#define Flag192(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag192)
-#define Flag193(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag193)
-#define Flag194(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag194)
-#define Flag195(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag195)
-#define Flag196(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag196)
-#define Flag197(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag197)
-#define Flag198(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag198)
-#define Flag199(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag199)
-#define Flag200(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag200)
-#define Flag201(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag201)
-#define Flag202(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag202)
-#define Flag203(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag203)
-#define Flag204(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag204)
-#define Flag205(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag205)
-#define Flag206(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag206)
-#define Flag207(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag207)
-#define Flag208(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag208)
-#define Flag209(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag209)
-#define Flag210(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag210)
-#define Flag211(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag211)
-#define Flag212(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag212)
-#define Flag213(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag213)
-#define Flag214(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag214)
-#define Flag215(N) (Nodes_Ptr[(N) - First_Node_Id + 4].V.EX.U.fw4.flag215)
+ switch (Offset%L)
+ {
+ case 0: return slot.f0;
+ case 1: return slot.f1;
+ case 2: return slot.f2;
+ case 3: return slot.f3;
+ default: gcc_assert(false);
+ }
+}
-#define Flag216(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.in_list)
-#define Flag217(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.has_aspects)
-#define Flag218(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.rewrite_ins)
-#define Flag219(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.analyzed)
-#define Flag220(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.c_f_s)
-#define Flag221(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.error_posted)
-#define Flag222(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag4)
-#define Flag223(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag5)
-#define Flag224(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag6)
-#define Flag225(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag7)
-#define Flag226(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag8)
-#define Flag227(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag9)
-#define Flag228(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag10)
-#define Flag229(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag11)
-#define Flag230(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag12)
-#define Flag231(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag13)
-#define Flag232(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag14)
-#define Flag233(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag15)
-#define Flag234(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag16)
-#define Flag235(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag17)
-#define Flag236(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.flag18)
-#define Flag237(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.pflag1)
-#define Flag238(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.K.pflag2)
+INLINE Union_Id
+Get_32_Bit_Field(Node_Id N, Field_Offset Offset)
+{
+ const Field_Offset L = 1;
+ slot_32_bit slot = (Slots_Ptr + (Node_Offsets_Ptr[N] + Offset/L))->slot_32;
+ return slot;
+}
-#define Flag239(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag65)
-#define Flag240(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag66)
-#define Flag241(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag67)
-#define Flag242(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag68)
-#define Flag243(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag69)
-#define Flag244(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag70)
-#define Flag245(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag71)
-#define Flag246(N) (Nodes_Ptr[(N) - First_Node_Id + 3].U.NK.flag72)
+INLINE Union_Id
+Get_32_Bit_Field_With_Default(Node_Id N, Field_Offset Offset, Union_Id Default_Value)
+{
+ const Field_Offset L = 1;
+ slot_32_bit slot = (Slots_Ptr + (Node_Offsets_Ptr[N] + Offset/L))->slot_32;
-#define Flag247(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag65)
-#define Flag248(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag66)
-#define Flag249(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag67)
-#define Flag250(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag68)
-#define Flag251(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag69)
-#define Flag252(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag70)
-#define Flag253(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag71)
-#define Flag254(N) (Nodes_Ptr[(N) - First_Node_Id + 4].U.NK.flag72)
+ if (slot == Empty)
+ {
+ return Default_Value;
+ }
-#define Flag255(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag255)
-#define Flag256(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag256)
-#define Flag257(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag257)
-#define Flag258(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag258)
-#define Flag259(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag259)
-#define Flag260(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag260)
-#define Flag261(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag261)
-#define Flag262(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag262)
-#define Flag263(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag263)
-#define Flag264(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag264)
-#define Flag265(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag265)
-#define Flag266(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag266)
-#define Flag267(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag267)
-#define Flag268(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag268)
-#define Flag269(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag269)
-#define Flag270(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag270)
-#define Flag271(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag271)
-#define Flag272(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag272)
-#define Flag273(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag273)
-#define Flag274(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag274)
-#define Flag275(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag275)
-#define Flag276(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag276)
-#define Flag277(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag277)
-#define Flag278(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag278)
-#define Flag279(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag279)
-#define Flag280(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag280)
-#define Flag281(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag281)
-#define Flag282(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag282)
-#define Flag283(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag283)
-#define Flag284(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag284)
-#define Flag285(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag285)
-#define Flag286(N) (Nodes_Ptr[(N) - First_Node_Id + 5].V.EX.U.fw5.flag286)
-#define Flag287(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.in_list)
-#define Flag288(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.has_aspects)
-#define Flag289(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.rewrite_ins)
-#define Flag290(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.analyzed)
-#define Flag291(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.c_f_s)
-#define Flag292(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.error_posted)
-#define Flag293(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag4)
-#define Flag294(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag5)
-#define Flag295(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag6)
-#define Flag296(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag7)
-#define Flag297(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag8)
-#define Flag298(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag9)
-#define Flag299(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag10)
-#define Flag300(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag11)
-#define Flag301(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag12)
-#define Flag302(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag13)
-#define Flag303(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag14)
-#define Flag304(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag15)
-#define Flag305(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag16)
-#define Flag306(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag17)
-#define Flag307(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag18)
-#define Flag308(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.pflag1)
-#define Flag309(N) (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.pflag2)
+ return slot;
+}
#ifdef __cplusplus
}