Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
sytb.m
Go to the documentation of this file.
00001 /*
00002 
00003   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
00004 
00005   This program is free software; you can redistribute it and/or modify it
00006   under the terms of version 2 of the GNU General Public License as
00007   published by the Free Software Foundation.
00008 
00009   This program is distributed in the hope that it would be useful, but
00010   WITHOUT ANY WARRANTY; without even the implied warranty of
00011   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
00012 
00013   Further, this software is distributed without any warranty that it is
00014   free of the rightful claim of any third person regarding infringement 
00015   or the like.  Any license provided herein, whether implied or 
00016   otherwise, applies only to this software file.  Patent licenses, if 
00017   any, provided herein do not apply to combinations of this program with 
00018   other software, or any other product whatsoever.  
00019 
00020   You should have received a copy of the GNU General Public License along
00021   with this program; if not, write the Free Software Foundation, Inc., 59
00022   Temple Place - Suite 330, Boston MA 02111-1307, USA.
00023 
00024   Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
00025   Mountain View, CA 94043, or:
00026 
00027   http://www.sgi.com
00028 
00029   For further information regarding this notice, see:
00030 
00031   http://oss.sgi.com/projects/GenInfo/NoticeExplan
00032 
00033 */
00034 
00035 
00036 /* USMID:  "\n@(#)5.0_pl/macros/sytb.m  5.16    09/30/99 15:47:54\n" */
00037 
00038 /**************************\
00039 |* RESERVED TABLE INDEXES *|
00040 \**************************/
00041 
00042 # define AT_WORK_IDX            NULL_IDX   /* Attr table work area            */
00043 # define BD_FREE_LIST_IDX       NULL_IDX   /* Bounds table free list          */
00044 
00045 /* WARNING - These must be 1-7.  Alot of code has made the asumption that     */
00046 /*           rank matches index for these default deferred shape arrays.      */
00047 
00048 # define BD_DEFERRED_1_IDX      1          /* Deferred shape - rank 1         */
00049 # define BD_DEFERRED_2_IDX      2          /* Deferred shape - rank 2         */
00050 # define BD_DEFERRED_3_IDX      3          /* Deferred shape - rank 3         */
00051 # define BD_DEFERRED_4_IDX      4          /* Deferred shape - rank 4         */
00052 # define BD_DEFERRED_5_IDX      5          /* Deferred shape - rank 5         */
00053 # define BD_DEFERRED_6_IDX      6          /* Deferred shape - rank 6         */
00054 # define BD_DEFERRED_7_IDX      7          /* Deferred shape - rank 7         */
00055 
00056 # define MAX_NUM_DIMS           7          /* Max # of dimensions we allow.   */
00057 
00058 /* If you add a constant macro here, you must change CN_LAST_USED_IDX.        */
00059 
00060 # define CN_INTEGER_ZERO_IDX            1
00061 # define CN_INTEGER_ONE_IDX             2
00062 # define CN_INTEGER_TWO_IDX             3
00063 # define CN_INTEGER_THREE_IDX           4
00064 # define CN_INTEGER_NEG_ONE_IDX         5
00065 # define CN_INTEGER_BITS_PER_WORD_IDX   6
00066 # define CN_INTEGER_CHAR_BIT_IDX        7  /* CHAR_BIT from limits.h          */
00067 # define CN_INTEGER_MIN_IDX             8 
00068 
00069 
00070 # define INTRINSIC_SCP_IDX      NULL_IDX   /* Intrinsic scope.                */
00071 # define MAIN_SCP_IDX           1          /* Scope index of outer program    */
00072 
00073 # define NAME_POOL_ZERO_IDX     1          /* The all zero entry - for LN     */
00074 # define NAME_POOL_ONES_IDX     2          /* The all ones entry - for LN     */
00075 
00076 # define TYP_WORK_IDX           0          /* Enter type table work area      */
00077 
00078 /* The enum Num_Linear_Types gets to the -dp entry in the type tbl. */
00079 /* It follows all the default linear type entries.                  */
00080 
00081 # define DOUBLE_PRECISION_TYPE_IDX                    Num_Linear_Types
00082 # define DOUBLE_COMPLEX_TYPE_IDX                      Num_Linear_Types + 1
00083 
00084 /********************\
00085 |* SIZES AND LIMITS *|
00086 \********************/
00087 
00088 # ifdef _HOST64
00089 #       define NUM_AA_WDS               3
00090 #       define NUM_AL_WDS               1
00091 /* #    define NUM_AT_WDS               7*/
00092 #       define NUM_AT_WDS               8       
00093 #       define NUM_BD_WDS               2
00094 #       define NUM_BLK_STK_WDS          8
00095 #       define NUM_CN_WDS               2
00096 #       define OLD_NUM_CN_WDS           1
00097 #       define NUM_CP_WDS               1
00098 #       define NUM_CS_WDS               1
00099 #       define NUM_EQ_WDS               4
00100 #       define NUM_FP_WDS               3
00101 #       define NUM_GA_WDS               4
00102 #       define NUM_GB_WDS               1
00103 #       define NUM_GL_WDS               5
00104 #       define NUM_GN_WDS               1
00105 #       define NUM_HN_WDS               1
00106 #       define NUM_IL_WDS               2
00107 #       define NUM_IR_WDS               4
00108 #       define NUM_LN_WDS               1
00109 #       define NUM_ML_WDS               6
00110 #       define NUM_NP_WDS               1
00111 # ifdef _WHIRL_HOST64_TARGET64
00112 #       define NUM_PDG_WDS              4
00113 # else
00114 #       define NUM_PDG_WDS              2
00115 # endif /* _WHIRL_HOST64_TARGET64 */
00116 #       define NUM_RO_WDS               3
00117 #       define NUM_SB_WDS               5
00118 #       define NUM_SCP_WDS              26
00119 #       define NUM_SH_WDS               3
00120 #       define NUM_SN_WDS               2
00121 #       define NUM_TYP_WDS              2
00122 # else
00123 #       define NUM_AA_WDS               6
00124 #       define NUM_AL_WDS               2
00125 /*#     define NUM_AT_WDS               14 */
00126 #       define NUM_AT_WDS               16 
00127 #       define NUM_BD_WDS               4 
00128 #       define NUM_BLK_STK_WDS          16
00129 #       define NUM_CN_WDS               4
00130 #       define OLD_NUM_CN_WDS           2
00131 #       define NUM_CP_WDS               1
00132 #       define NUM_CS_WDS               2
00133 #       define NUM_EQ_WDS               8
00134 #       define NUM_FP_WDS               6
00135 #       define NUM_GA_WDS               8
00136 #       define NUM_GB_WDS               2
00137 #       define NUM_GL_WDS               10
00138 #       define NUM_GN_WDS               2
00139 #       define NUM_HN_WDS               2
00140 #       define NUM_IL_WDS               4
00141 #       define NUM_IR_WDS               8
00142 #       define NUM_LN_WDS               2
00143 #       define NUM_ML_WDS               12
00144 #       define NUM_NP_WDS               1
00145 #       define NUM_PDG_WDS              4
00146 /* #    define NUM_RO_WDS               4 */
00147 #       define NUM_RO_WDS               6       
00148 #       define NUM_SB_WDS               10
00149 #       define NUM_SCP_WDS              52
00150 #       define NUM_SH_WDS               6
00151 #       define NUM_SN_WDS               4
00152 #       define NUM_TYP_WDS              4
00153 # endif
00154 
00155 # define SET_POINTER_SIZE       (cmd_line_flags.s_pointer8)
00156 
00157 # if defined(_DOPE_VECTOR_32_OR_64)
00158 
00159 # define DV_DIM_WORD_SIZE               ((SET_POINTER_SIZE)? 6 : 3)
00160 # define DV_HD_WORD_SIZE                ((SET_POINTER_SIZE)? 12 : 8)
00161 
00162 # define DV_BASE_ADDR(DOPE)             ((SET_POINTER_SIZE)?                   \
00163                      (DOPE).ptr64.base_addr : (DOPE).ptr32.base_addr)
00164 # define DV_EL_LEN(DOPE)                ((SET_POINTER_SIZE)?                   \
00165                      (DOPE).ptr64.el_len : (DOPE).ptr32.el_len)
00166 # define DV_ASSOC(DOPE)                 ((SET_POINTER_SIZE)?                   \
00167                      (DOPE).ptr64.assoc : (DOPE).ptr32.assoc)
00168 # define DV_PTR_ALLOC(DOPE)             ((SET_POINTER_SIZE)?                   \
00169                      (DOPE).ptr64.ptr_alloc : (DOPE).ptr32.ptr_alloc)
00170 # define DV_P_OR_A(DOPE)                ((SET_POINTER_SIZE)?                   \
00171                      (DOPE).ptr64.p_or_a : (DOPE).ptr32.p_or_a)
00172 # define DV_A_CONTIG(DOPE)              ((SET_POINTER_SIZE)?                   \
00173                      (DOPE).ptr64.a_contig : (DOPE).ptr32.a_contig)
00174 # define DV_NUM_DIMS(DOPE)              ((SET_POINTER_SIZE)?                   \
00175                      (DOPE).ptr64.num_dims : (DOPE).ptr32.num_dims)
00176 # define DV_TYPE_CODE(DOPE)             ((SET_POINTER_SIZE)?                   \
00177                      (DOPE).ptr64.type_code : (DOPE).ptr32.type_code)
00178 # define DV_UNUSED_1(DOPE)              ((SET_POINTER_SIZE)?                   \
00179                      (DOPE).ptr64.unused_1 : (DOPE).ptr32.unused_1)
00180 # define DV_UNUSED_2(DOPE)              ((SET_POINTER_SIZE)?                   \
00181                      (DOPE).ptr64.unused_2 : (DOPE).ptr32.unused_2)
00182 # define DV_UNUSED_3(DOPE)              ((SET_POINTER_SIZE)?                   \
00183                      (DOPE).ptr64.unused_3 : (DOPE).ptr32.unused_3)
00184 # define DV_ORIG_BASE(DOPE)             ((SET_POINTER_SIZE)?                   \
00185                      (DOPE).ptr64.orig_base : (DOPE).ptr32.orig_base)
00186 # define DV_ORIG_SIZE(DOPE)             ((SET_POINTER_SIZE)?                   \
00187                      (DOPE).ptr64.orig_size : (DOPE).ptr32.orig_size)
00188 # define DV_LOW_BOUND(DOPE,IDX)         ((SET_POINTER_SIZE)?                   \
00189          (DOPE).ptr64.dim[IDX].low_bound : (DOPE).ptr32.dim[IDX].low_bound)
00190 # define DV_EXTENT(DOPE,IDX)            ((SET_POINTER_SIZE)?                   \
00191          (DOPE).ptr64.dim[IDX].extent : (DOPE).ptr32.dim[IDX].extent)
00192 # define DV_STRIDE_MULT(DOPE,IDX)       ((SET_POINTER_SIZE)?                   \
00193          (DOPE).ptr64.dim[IDX].stride_mult : (DOPE).ptr32.dim[IDX].stride_mult)
00194 
00195 # define DV_SET_BASE_ADDR(DOPE,RHS)                                            \
00196                      { if (SET_POINTER_SIZE)(DOPE).ptr64.base_addr = (RHS);    \
00197                        else (DOPE).ptr32.base_addr = (RHS); }
00198 # define DV_SET_EL_LEN(DOPE,RHS)                                               \
00199                      { if (SET_POINTER_SIZE)(DOPE).ptr64.el_len = (RHS);       \
00200                        else (DOPE).ptr32.el_len = (RHS); }
00201 # define DV_SET_ASSOC(DOPE,RHS)                                                \
00202                      { if (SET_POINTER_SIZE)(DOPE).ptr64.assoc = (RHS);        \
00203                        else (DOPE).ptr32.assoc = (RHS); }
00204 # define DV_SET_PTR_ALLOC(DOPE,RHS)                                            \
00205                      { if (SET_POINTER_SIZE)(DOPE).ptr64.ptr_alloc = (RHS);    \
00206                        else (DOPE).ptr32.ptr_alloc = (RHS); }
00207 # define DV_SET_P_OR_A(DOPE,RHS)                                               \
00208                      { if (SET_POINTER_SIZE)(DOPE).ptr64.p_or_a = (RHS);       \
00209                        else (DOPE).ptr32.p_or_a = (RHS); }
00210 # define DV_SET_A_CONTIG(DOPE,RHS)                                             \
00211                      { if (SET_POINTER_SIZE)(DOPE).ptr64.a_contig = (RHS);     \
00212                        else (DOPE).ptr32.a_contig = (RHS); }
00213 # define DV_SET_NUM_DIMS(DOPE,RHS)                                             \
00214                      { if (SET_POINTER_SIZE)(DOPE).ptr64.num_dims = (RHS);     \
00215                        else (DOPE).ptr32.num_dims = (RHS); }
00216 # define DV_SET_TYPE_CODE(DOPE,RHS)                                            \
00217                      { if (SET_POINTER_SIZE)(DOPE).ptr64.type_code = (RHS);    \
00218                        else (DOPE).ptr32.type_code = (RHS); }
00219 # define DV_SET_UNUSED_1(DOPE,RHS)                                             \
00220                      { if (SET_POINTER_SIZE)(DOPE).ptr64.unused_1 = (RHS);     \
00221                        else (DOPE).ptr32.unused_1 = (RHS); }
00222 # define DV_SET_UNUSED_2(DOPE,RHS)                                             \
00223                      { if (SET_POINTER_SIZE)(DOPE).ptr64.unused_2 = (RHS);     \
00224                        else (DOPE).ptr32.unused_2 = (RHS); }
00225 # define DV_SET_UNUSED_3(DOPE,RHS)                                             \
00226                      { if (SET_POINTER_SIZE)(DOPE).ptr64.unused_3 = (RHS);     \
00227                        else (DOPE).ptr32.unused_3 = (RHS); }
00228 # define DV_SET_ORIG_BASE(DOPE,RHS)                                            \
00229                      { if (SET_POINTER_SIZE)(DOPE).ptr64.orig_base = (RHS);    \
00230                        else (DOPE).ptr32.orig_base = (RHS); }
00231 # define DV_SET_ORIG_SIZE(DOPE,RHS)                                            \
00232                      { if (SET_POINTER_SIZE)(DOPE).ptr64.orig_size = (RHS);    \
00233                        else (DOPE).ptr32.orig_size = (RHS); }
00234 # define DV_SET_LOW_BOUND(DOPE,IDX,RHS)                                        \
00235             { if (SET_POINTER_SIZE)(DOPE).ptr64.dim[IDX].low_bound = (RHS);    \
00236                        else (DOPE).ptr32.dim[IDX].low_bound = (RHS); }
00237 # define DV_SET_EXTENT(DOPE,IDX,RHS)                                           \
00238             { if (SET_POINTER_SIZE)(DOPE).ptr64.dim[IDX].extent = (RHS);       \
00239                        else (DOPE).ptr32.dim[IDX].extent = (RHS); }
00240 # define DV_SET_STRIDE_MULT(DOPE,IDX,RHS)                                      \
00241             { if (SET_POINTER_SIZE)(DOPE).ptr64.dim[IDX].stride_mult = (RHS);  \
00242                        else (DOPE).ptr32.dim[IDX].stride_mult = (RHS); }
00243 
00244 # else   /* _DOPE_VECTOR_32 and DOPE_VECTOR_64 */
00245 
00246 # define DV_DIM_WORD_SIZE               3       /* Size of dope vector dimen  */
00247 # define DV_HD_WORD_SIZE                6       /* Size of dope vector header */
00248 
00249 # define DV_BASE_ADDR(DOPE)             (DOPE).base_addr
00250 # define DV_EL_LEN(DOPE)                (DOPE).el_len
00251 # define DV_ASSOC(DOPE)                 (DOPE).assoc
00252 # define DV_PTR_ALLOC(DOPE)             (DOPE).ptr_alloc
00253 # define DV_P_OR_A(DOPE)                (DOPE).p_or_a
00254 # define DV_A_CONTIG(DOPE)              (DOPE).a_contig
00255 # define DV_NUM_DIMS(DOPE)              (DOPE).num_dims
00256 # define DV_TYPE_CODE(DOPE)             (DOPE).type_code
00257 # define DV_UNUSED_1(DOPE)              (DOPE).unused_1
00258 # define DV_UNUSED_2(DOPE)              (DOPE).unused_2
00259 # define DV_UNUSED_3(DOPE)              (DOPE).unused_3
00260 # define DV_ORIG_BASE(DOPE)             (DOPE).orig_base
00261 # define DV_ORIG_SIZE(DOPE)             (DOPE).orig_size
00262 # define DV_LOW_BOUND(DOPE,IDX)         (DOPE).dim[IDX].low_bound
00263 # define DV_EXTENT(DOPE,IDX)            (DOPE).dim[IDX].extent
00264 # define DV_STRIDE_MULT(DOPE,IDX)       (DOPE).dim[IDX].stride_mult
00265 
00266 
00267 # define DV_SET_BASE_ADDR(DOPE,RHS)     (DOPE).base_addr = (RHS)
00268 # define DV_SET_EL_LEN(DOPE,RHS)        (DOPE).el_len = (RHS)
00269 # define DV_SET_ASSOC(DOPE,RHS)         (DOPE).assoc = (RHS)
00270 # define DV_SET_PTR_ALLOC(DOPE,RHS)     (DOPE).ptr_alloc = (RHS)
00271 # define DV_SET_P_OR_A(DOPE,RHS)        (DOPE).p_or_a = (RHS)
00272 # define DV_SET_A_CONTIG(DOPE,RHS)      (DOPE).a_contig = (RHS)
00273 # define DV_SET_NUM_DIMS(DOPE,RHS)      (DOPE).num_dims = (RHS)
00274 # define DV_SET_TYPE_CODE(DOPE,RHS)     (DOPE).type_code = (RHS)
00275 # define DV_SET_UNUSED_1(DOPE,RHS)      (DOPE).unused_1 = (RHS)
00276 # define DV_SET_UNUSED_2(DOPE,RHS)      (DOPE).unused_2 = (RHS)
00277 # define DV_SET_UNUSED_3(DOPE,RHS)      (DOPE).unused_3 = (RHS)
00278 # define DV_SET_ORIG_BASE(DOPE,RHS)     (DOPE).orig_base = (RHS)
00279 # define DV_SET_ORIG_SIZE(DOPE,RHS)     (DOPE).orig_size = (RHS)
00280 # define DV_SET_LOW_BOUND(DOPE,IDX,RHS) (DOPE).dim[IDX].low_bound = (RHS)
00281 # define DV_SET_EXTENT(DOPE,IDX,RHS)    (DOPE).dim[IDX].extent = (RHS)
00282 # define DV_SET_STRIDE_MULT(DOPE,IDX,RHS) (DOPE).dim[IDX].stride_mult = (RHS)
00283 # endif
00284 
00285 # define MAX_GENERATED_LABELS           99999   /* Max num compiler gen'd lbls*/
00286 # define MAX_IMPL_CHS                   26      /* number of ASCII characters */
00287 # define MAX_ALTERNATE_ENTRIES          65535   /* Max num alt entries.       */
00288 
00289 
00290 /********************************************************\
00291 |* NOTE:  FIELD_BITS ARE BIT SIZES FOR THE VARIOUS IDX  *|
00292 |* FIELDS FOR ALL TABLES.  THESE MUST BE KEPT UP TO     *|
00293 |* DATE TO CHECK FOR OVERFLOW OF THESE IDX FIELDS. THEY *|
00294 |* REPRESENT THE SMALLEST BIT LENGTH OF ALL THE IDX     *|
00295 |* FIELDS FOR EACH TABLE TYPE.                          *|
00296 \********************************************************/
00297 
00298 # define BD_LAST_USED_IDX       7       /* last reserved index                */
00299 # define CN_LAST_USED_IDX       8      
00300 # define CP_LAST_USED_IDX       7       /* last reserved index                */
00301 
00302 # define CS_LAST_USED_IDX    1000       /* Must be the same as the initial    */
00303                                         /* size of the const_search_tbl.      */
00304 
00305 # define NP_LAST_USED_IDX       2       /* last reserved index                */
00306 # define TYP_LAST_USED_IDX      Num_Linear_Types + 1 /* 2 extra entries */
00307 
00308 # define MAX_INTRIN_TBL_SIZE   13400    /* max entries in intrinsic table     */
00309 
00310 # define MAX_INTRIN_MAP_SIZE   59       /* max entries in intrinsic map       */
00311 
00312 # define MAX_INLINE_ARGS       256      /* max actual args allowed on a       */
00313                                         /* call to be inlined                 */
00314 
00315 # define MAX_INLINE_LABELS     1000     /* max number of labels allowed in    */
00316                                         /* a routine being inlined            */
00317 
00318 # define MAX_INLINE_IR         100000   /* max number of IR entries allowed   */
00319                                         /* in a given routine                 */
00320 
00321 # define MAX_INLINED_ROUTINES  1000     /* max number of distinct routines    */
00322                                         /* inlined with a given routine       */
00323 
00324 
00325 /******************************\
00326 |* OBJECT REPLACEMENT STRINGS *|
00327 \******************************/
00328 
00329 # define STORAGE_WORD_SIZE(BIT_SIZE)    (TARGET_BITS_TO_WORDS((BIT_SIZE)))
00330 
00331 
00332 
00333 /*  ATTRIBUTE TABLE */
00334 
00335 /* Common attribute definitions for all object classes */
00336 
00337 
00338 # define AT_ACCESS_SET(IDX)             attr_aux_tbl[IDX].fld.access_set
00339 # define AT_ACTUAL_ARG(IDX)             attr_tbl[IDX].fld.passed_as_arg
00340 # define AT_ALT_DARG(IDX)               attr_tbl[IDX].fld.alt_darg
00341 # define AT_ARG_TO_KIND(IDX)            attr_aux_tbl[IDX].fld.arg_to_kind
00342 # define AT_ATTR_LINK(IDX)              attr_tbl[IDX].fld.attr_link
00343 # define AT_CIF_DONE(IDX)               attr_aux_tbl[IDX].fld.cif_done
00344 # define AT_CIF_IN_USAGE_REC(IDX)       attr_aux_tbl[IDX].fld.cif_usage_rec
00345 # define AT_CIF_SYMBOL_ID(IDX)          attr_aux_tbl[IDX].fld.cif_sym_id
00346 # define AT_CIF_USE_IN_BND(IDX)         attr_aux_tbl[IDX].fld.cif_use_in_bnd
00347 # define AT_COMPILER_GEND(IDX)          attr_tbl[IDX].fld.compiler_gend
00348 # define AT_DCL_ERR(IDX)                attr_tbl[IDX].fld.dcl_err
00349 # define AT_DEF_LINE(IDX)               attr_aux_tbl[IDX].fld.def_line
00350 # define AT_DEF_COLUMN(IDX)             attr_aux_tbl[IDX].fld.def_column
00351 # define AT_DEF_IN_CHILD(IDX)           attr_tbl[IDX].fld.def_in_child
00352 # define AT_DEFINED(IDX)                attr_tbl[IDX].fld.defined
00353 # define AT_ELEMENTAL_INTRIN(IDX)       attr_tbl[IDX].fld.elemental_intrin
00354 # define AT_HOST_ASSOCIATED(IDX)        attr_tbl[IDX].fld.host_associated
00355 # define AT_IGNORE_ATTR_LINK(IDX)       attr_tbl[IDX].fld.ignore_attr_link
00356 # define AT_IS_DARG(IDX)                attr_tbl[IDX].fld.is_darg
00357 # define AT_IS_INTRIN(IDX)              attr_tbl[IDX].fld.is_intrin
00358 # define AT_LOCKED_IN(IDX)              attr_aux_tbl[IDX].fld.locked_in
00359 # define AT_MODULE_IDX(IDX)             attr_tbl[IDX].fld.module_idx
00360 # define AT_MODULE_OBJECT(IDX)          attr_tbl[IDX].fld.module_object
00361 # define AT_NAME_IDX(IDX)               attr_tbl[IDX].fld.name_idx
00362 # define AT_NAME_LEN(IDX)               attr_tbl[IDX].fld.length
00363 # define AT_NAMELIST_OBJ(IDX)           attr_tbl[IDX].fld.namelist_obj
00364 # define AT_NOT_VISIBLE(IDX)            attr_tbl[IDX].fld.not_visible
00365 # define AT_OBJ_CLASS(IDX)              attr_tbl[IDX].fld.object_class
00366 # define AT_OBJ_NAME(IDX)               name_pool[AT_NAME_IDX(IDX)].name_char
00367 # define AT_OBJ_NAME_LONG(IDX)          &(name_pool[AT_NAME_IDX(IDX)].name_long)
00368 # define AT_OBJ_NAME_PTR(IDX)           &name_pool[AT_NAME_IDX(IDX)].name_char
00369 # define AT_OPTIONAL(IDX)               attr_tbl[IDX].fld.optional
00370 # define AT_ORIG_MODULE_IDX(IDX)        attr_tbl[IDX].fld.orig_module_idx
00371 # define AT_ORIG_NAME_IDX(IDX)          attr_tbl[IDX].fld.orig_name_idx
00372 # define AT_ORIG_NAME_LEN(IDX)          attr_tbl[IDX].fld.orig_name_len
00373 # define AT_ORIG_NAME_PTR(IDX)     &name_pool[AT_ORIG_NAME_IDX(IDX)].name_char
00374 # define AT_ORIG_NAME(IDX)          name_pool[AT_ORIG_NAME_IDX(IDX)].name_char
00375 # define AT_ORIG_NAME_LONG(IDX)    &(name_pool[AT_ORIG_NAME_IDX(IDX)].name_long)
00376 # define AT_PRIVATE(IDX)                attr_tbl[IDX].fld.private_access
00377 # define AT_REF_IN_CHILD(IDX)           attr_tbl[IDX].fld.ref_in_child
00378 # define AT_REFERENCED(IDX)             attr_tbl[IDX].fld.referenced
00379 # define AT_SEMANTICS_DONE(IDX)         attr_aux_tbl[IDX].fld.semantics_done
00380 # define AT_TYPED(IDX)                  attr_tbl[IDX].fld.typed
00381 # define AT_USE_ASSOCIATED(IDX)         attr_tbl[IDX].fld.use_associated
00382 
00383 /* Remove in 5.0 */
00384 
00385 # define OLD_AT_HOST_ASSOCIATED(IDX)    attr_tbl[IDX].old.host_associated
00386 # define OLD_AT_MODULE_IDX(IDX)         attr_tbl[IDX].old.module_idx
00387 # define OLD_AT_MODULE_OBJECT(IDX)      attr_tbl[IDX].old.module_object
00388 # define OLD_AT_NOT_VISIBLE(IDX)        attr_tbl[IDX].old.not_visible
00389 # define OLD_AT_OBJ_CLASS(IDX)          attr_tbl[IDX].old.object_class
00390 # define OLD_AT_USE_ASSOCIATED(IDX)     attr_tbl[IDX].old.use_associated
00391 
00392 
00393 
00394 /* Remove in 5.0 */
00395 /* Cannot variant check these, because AT_OBJ_CLASS has moved */
00396 
00397 # define OLD_ATD_ALIGN_SYMBOL(IDX)      attr_tbl[IDX].old.flag13
00398 # define OLD_ATD_ARRAY_IDX(IDX)         attr_tbl[IDX].old.field5
00399 # define OLD_ATD_DISTRIBUTION_IDX(IDX)  attr_tbl[IDX].old.field14
00400 # define OLD_ATD_FILL_SYMBOL(IDX)       attr_tbl[IDX].old.flag14
00401 # define OLD_ATD_OFFSET_ASSIGNED(IDX)   attr_tbl[IDX].old.flag16
00402 # define OLD_ATD_PE_ARRAY_IDX(IDX)      attr_tbl[IDX].old.field15
00403 # define OLD_ATD_TYPE_IDX(IDX)          attr_tbl[IDX].old.field1
00404 # define OLD_ATI_NUM_SPECIFICS(IDX)     attr_tbl[IDX].old.field5
00405 # define OLD_ATL_CYCLE_LBL(IDX)         attr_tbl[IDX].old.flag15
00406 # define OLD_ATL_DIRECTIVE_LIST(IDX)    attr_tbl[IDX].fld2.field23
00407 # define OLD_ATL_NOTASK(IDX)            attr_tbl[IDX].old.flag14
00408 # define OLD_ATL_PREFERVECTOR(IDX)      attr_tbl[IDX].old.flag16
00409 # define OLD_ATL_TOP_OF_LOOP(IDX)       attr_tbl[IDX].old.flag13
00410 # define OLD_ATP_EXPL_ITRFC(IDX)        attr_tbl[IDX].old.flag14
00411 # define OLD_ATP_EXTERNAL_INTRIN(IDX)   attr_tbl[IDX].old.flag16
00412 # define OLD_ATP_EXTRA_DARG(IDX)        attr_tbl[IDX].old.flag15
00413 # define OLD_ATP_NUM_DARGS(IDX)         attr_tbl[IDX].old.field5
00414 # define OLD_ATP_MOD_PATH_LEN(IDX)      attr_tbl[IDX].old.field6
00415 # define OLD_ATP_SAVE_ALL(IDX)          attr_tbl[IDX].old.flag13
00416 
00417 /* Definitions for data object class */
00418 
00419 # ifdef _DEBUG
00420 # define ATD_ALIGN_SYMBOL(IDX)                                                 \
00421         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00422                 attr_tbl : sytb_var_error("ATD_ALIGN_SYMBOL", IDX))            \
00423                 [IDX].fld.flag21
00424 # else
00425 # define ATD_ALIGN_SYMBOL(IDX)          attr_tbl[IDX].fld.flag21
00426 # endif
00427 
00428 # ifdef _DEBUG
00429 # define ATD_ALIGNMENT(IDX)                                                    \
00430         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00431                 attr_tbl : sytb_var_error("ATD_ALIGNMENT", IDX))               \
00432                 [IDX].fld2.alignment
00433 # else
00434 # define ATD_ALIGNMENT(IDX)             attr_tbl[IDX].fld2.alignment
00435 # endif
00436 
00437 # ifdef _DEBUG
00438 # define ATD_ALLOCATABLE(IDX)                                                  \
00439         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00440                 attr_tbl : sytb_var_error("ATD_ALLOCATABLE", IDX))             \
00441                 [IDX].fld.flag6
00442 # else
00443 # define ATD_ALLOCATABLE(IDX)           attr_tbl[IDX].fld.flag6
00444 # endif
00445 
00446 /*
00447 # ifdef _DEBUG
00448 # define ATD_ARRAY_IDX(IDX)                                                    \
00449         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00450                 attr_tbl : sytb_var_error("ATD_ARRAY_IDX", IDX))               \
00451                 [IDX].fld.field1
00452 # else
00453 */
00454 # define ATD_ARRAY_IDX(IDX)             attr_tbl[IDX].fld.field1
00455 /* # endif */
00456 
00457 # ifdef _DEBUG
00458 # define ATD_ASG_TMP(IDX)                                                      \
00459         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00460          attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                   \
00461                 attr_tbl : sytb_var_error("ATD_ASG_TMP", IDX))                 \
00462                 [IDX].fld.flag49
00463 # else
00464 # define ATD_ASG_TMP(IDX)                  attr_tbl[IDX].fld.flag49
00465 # endif
00466 
00467 # ifdef _DEBUG
00468 # define ATD_ASSIGN_TMP_IDX(IDX)                                               \
00469         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00470           attr_tbl[IDX].fld.secondary_info == Variable) ?                      \
00471                 attr_tbl : sytb_var_error("ATD_ASSIGN_TMP_IDX", IDX))          \
00472                 [IDX].fld.field8
00473 # else
00474 # define ATD_ASSIGN_TMP_IDX(IDX)        attr_tbl[IDX].fld.field8
00475 # endif
00476 
00477 # ifdef _DEBUG
00478 /* This checks ATD_AUTOMATIC */
00479 # define ATD_AUTO_BASE_IDX(IDX)                                                \
00480         ((AT_OBJ_CLASS(IDX) == Data_Obj && attr_tbl[IDX].fld.flag12) ?         \
00481                 attr_tbl : sytb_var_error("ATD_AUTO_BASE_IDX", IDX))           \
00482                 [IDX].fld.field13
00483 # else
00484 # define ATD_AUTO_BASE_IDX(IDX)         attr_tbl[IDX].fld.field13
00485 # endif
00486 
00487 # ifdef _DEBUG
00488 # define ATD_AUTOMATIC(IDX)                                                    \
00489         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00490                 attr_tbl : sytb_var_error("ATD_AUTOMATIC", IDX))               \
00491                 [IDX].fld.flag12
00492 # else
00493 # define ATD_AUTOMATIC(IDX)             attr_tbl[IDX].fld.flag12
00494 # endif
00495 
00496 # ifdef _DEBUG
00497 # define ATD_AUXILIARY(IDX)                                                    \
00498         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00499                 attr_tbl : sytb_var_error("ATD_AUXILIARY", IDX))               \
00500                 [IDX].fld.flag9
00501 # else
00502 # define ATD_AUXILIARY(IDX)             attr_tbl[IDX].fld.flag9
00503 # endif
00504 
00505 # ifdef _DEBUG
00506 # define ATD_BOUNDS_CHECK(IDX)                                                 \
00507         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00508                 attr_tbl : sytb_var_error("ATD_BOUNDS_CHECK", IDX))            \
00509                 [IDX].fld.flag31
00510 # else
00511 # define ATD_BOUNDS_CHECK(IDX)          attr_tbl[IDX].fld.flag31
00512 # endif
00513 
00514 # ifdef _DEBUG
00515 # define ATD_CACHE_ALIGN(IDX)                                                  \
00516         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00517                 attr_tbl : sytb_var_error("ATD_CACHE_ALIGN", IDX))             \
00518                 [IDX].fld.flag26
00519 # else
00520 # define ATD_CACHE_ALIGN(IDX)              attr_tbl[IDX].fld.flag26
00521 # endif
00522 
00523 # ifdef _DEBUG
00524 # define ATD_CACHE_BYPASS_ARRAY(IDX)                                           \
00525         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00526                 attr_tbl : sytb_var_error("ATD_CACHE_BYPASS_ARRAY", IDX))      \
00527                 [IDX].fld.flag39
00528 # else
00529 # define ATD_CACHE_BYPASS_ARRAY(IDX)    attr_tbl[IDX].fld.flag39
00530 # endif
00531 
00532 
00533 # ifdef _DEBUG
00534 # define ATD_CACHE_NOALLOC(IDX)                                                \
00535         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00536                 attr_tbl : sytb_var_error("ATD_CACHE_NOALLOC", IDX))           \
00537                 [IDX].fld.flag43
00538 # else
00539 # define ATD_CACHE_NOALLOC(IDX)         attr_tbl[IDX].fld.flag43
00540 # endif
00541 
00542 
00543 # ifdef _DEBUG
00544 # define ATD_CHAR_LEN_IN_DV(IDX)                                               \
00545         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00546                 attr_tbl : sytb_var_error("ATD_CHAR_LEN_IN_DV", IDX))          \
00547                 [IDX].fld.flag11
00548 # else
00549 # define ATD_CHAR_LEN_IN_DV(IDX)        attr_tbl[IDX].fld.flag11
00550 # endif
00551 
00552 
00553 # ifdef _DEBUG
00554 # define ATD_CLASS(IDX)                                                        \
00555         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00556                 attr_tbl : sytb_var_error("ATD_CLASS", IDX))                   \
00557                 [IDX].fld.secondary_info
00558 # else
00559 # define ATD_CLASS(IDX)                 attr_tbl[IDX].fld.secondary_info
00560 # endif
00561 
00562 # ifdef _DEBUG
00563 # define ATD_CONST_IDX(IDX)                                                    \
00564         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00565           attr_tbl[IDX].fld.secondary_info == Constant) ?                      \
00566                 attr_tbl : sytb_var_error("ATD_CONST_IDX", IDX))               \
00567                 [IDX].fld.field4
00568 # else
00569 # define ATD_CONST_IDX(IDX)             attr_tbl[IDX].fld.field4
00570 # endif
00571 
00572 # ifdef _DEBUG
00573 # define ATD_COPY_ASSUMED_SHAPE(IDX)                                           \
00574         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00575                 attr_tbl : sytb_var_error("ATD_COPY_ASSUMED_SHAPE", IDX))      \
00576                 [IDX].fld.flag36
00577 # else
00578 # define ATD_COPY_ASSUMED_SHAPE(IDX)     attr_tbl[IDX].fld.flag36
00579 # endif
00580 
00581 # ifdef _DEBUG
00582 # define ATD_CPNT_INIT_IDX(IDX)                                                \
00583         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00584           attr_tbl[IDX].fld.secondary_info == Struct_Component) ?              \
00585                 attr_tbl : sytb_var_error("ATD_CPNT_INIT_IDX", IDX))           \
00586                 [IDX].fld.field4
00587 # else
00588 # define ATD_CPNT_INIT_IDX(IDX)         attr_tbl[IDX].fld.field4
00589 # endif
00590 
00591 # ifdef _DEBUG
00592 # define ATD_CPNT_OFFSET_IDX(IDX)                                              \
00593         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00594           attr_tbl[IDX].fld.secondary_info == Struct_Component) ?              \
00595                 attr_tbl : sytb_var_error("ATD_CPNT_OFFSET_IDX", IDX))         \
00596                 [IDX].fld.field13
00597 # else
00598 # define ATD_CPNT_OFFSET_IDX(IDX)       attr_tbl[IDX].fld.field13
00599 # endif
00600 
00601 # ifdef _DEBUG
00602 # define ATD_DATA_INIT(IDX)                                                    \
00603         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00604                 attr_tbl : sytb_var_error("ATD_DATA_INIT", IDX))               \
00605                 [IDX].fld.flag2
00606 # else
00607 # define ATD_DATA_INIT(IDX)             attr_tbl[IDX].fld.flag2
00608 # endif
00609 
00610 # ifdef _DEBUG
00611 # define ATD_DCL_EQUIV(IDX)                                                    \
00612         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00613                 attr_tbl : sytb_var_error("ATD_DCL_EQUIV", IDX))               \
00614                 [IDX].fld.flag10
00615 # else
00616 # define ATD_DCL_EQUIV(IDX)             attr_tbl[IDX].fld.flag10
00617 # endif
00618 
00619 # ifdef _DEBUG
00620 # define ATD_DEFINING_ATTR_IDX(IDX)                                            \
00621         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00622           attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                  \
00623                 attr_tbl : sytb_var_error("ATD_DEFINING_ATTR_IDX", IDX))       \
00624                 [IDX].fld.field8
00625 # else
00626 # define ATD_DEFINING_ATTR_IDX(IDX)     attr_tbl[IDX].fld.field8
00627 # endif
00628 
00629 # ifdef _DEBUG
00630 # define ATD_DERIVED_TYPE_IDX(IDX)                                             \
00631         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00632           attr_tbl[IDX].fld.secondary_info == Struct_Component) ?              \
00633                 attr_tbl : sytb_var_error("ATD_DERIVED_TYPE_IDX", IDX))        \
00634                 [IDX].fld.field8
00635 # else
00636 # define ATD_DERIVED_TYPE_IDX(IDX)      attr_tbl[IDX].fld.field8
00637 # endif
00638 
00639 # ifdef _DEBUG
00640 # define ATD_DISTRIBUTION_IDX(IDX)                                             \
00641         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00642                 attr_tbl : sytb_var_error("ATD_DISTRIBUTION_IDX", IDX))        \
00643                 [IDX].fld2.distribution_idx
00644 # else
00645 # define ATD_DISTRIBUTION_IDX(IDX)      attr_tbl[IDX].fld2.distribution_idx
00646 # endif
00647 
00648 # ifdef _DEBUG
00649 # define ATD_WAS_SCOPED(IDX)                                                   \
00650                 ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                             \
00651                 attr_tbl : sytb_var_error("ATD_WAS_SCOPED", IDX))              \
00652                 [IDX].fld.flag45
00653 # else
00654 # define ATD_WAS_SCOPED(IDX)            attr_tbl[IDX].fld.flag45
00655 # endif
00656 
00657 # ifdef _DEBUG
00658 # define ATD_DV_ALIAS(IDX)                                                     \
00659         (((AT_OBJ_CLASS(IDX) == Data_Obj) &&                                   \
00660            ((comp_phase == Inlining) || (comp_phase == Pdg_Conversion))) ?     \
00661                 attr_aux_tbl : attr_aux_var_error("ATD_DV_ALIAS", IDX))        \
00662                 [IDX].fld.field3
00663 # else
00664 # define ATD_DV_ALIAS(IDX)              attr_aux_tbl[IDX].fld.field3
00665 # endif
00666 
00667 # ifdef _DEBUG
00668 # define ATD_DYNAMIC(IDX)                                                      \
00669         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00670                 attr_tbl : sytb_var_error("ATD_DYNAMIC", IDX))                 \
00671                 [IDX].fld.flag41
00672 # else
00673 # define ATD_DYNAMIC(IDX)               attr_tbl[IDX].fld.flag41
00674 # endif
00675 
00676 # ifdef _DEBUG
00677 # define ATD_ELEMENTAL_CALL_TMP(IDX)                                           \
00678         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00679          attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                   \
00680                 attr_tbl : sytb_var_error("ATD_ELEMENTAL_CALL_TMP", IDX))      \
00681                 [IDX].fld.flag50
00682 # else
00683 # define ATD_ELEMENTAL_CALL_TMP(IDX)       attr_tbl[IDX].fld.flag50
00684 # endif
00685 
00686 
00687 # ifdef _DEBUG
00688 # define ATD_EQUIV(IDX)                                                        \
00689         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00690                 attr_tbl : sytb_var_error("ATD_EQUIV", IDX))                   \
00691                 [IDX].fld.flag8
00692 # else
00693 # define ATD_EQUIV(IDX)                 attr_tbl[IDX].fld.flag8
00694 # endif
00695 
00696 # ifdef _DEBUG
00697 # define ATD_EQUIV_IN_BNDS_EXPR(IDX)                                           \
00698         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00699                 attr_aux_tbl:attr_aux_var_error("ATD_EQUIV_IN_BNDS_EXPR", IDX))\
00700                 [IDX].fld.flag5
00701 # else
00702 # define ATD_EQUIV_IN_BNDS_EXPR(IDX)    attr_aux_tbl[IDX].fld.flag5
00703 # endif
00704 
00705 # ifdef _DEBUG
00706 # define ATD_EQUIV_LIST(IDX)                                                   \
00707         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00708                 attr_aux_tbl : attr_aux_var_error("ATD_EQUIV_LIST", IDX))      \
00709                 [IDX].fld.field2
00710 # else
00711 # define ATD_EQUIV_LIST(IDX)            attr_aux_tbl[IDX].fld.field2
00712 # endif
00713 
00714 # ifdef _DEBUG
00715 # define ATD_EXPR_EVAL_TMP(IDX)                                                \
00716         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00717                 attr_aux_tbl:attr_aux_var_error("ATD_EXPR_EVAL_TMP", IDX))     \
00718                 [IDX].fld.flag2
00719 # else
00720 # define ATD_EXPR_EVAL_TMP(IDX)         attr_aux_tbl[IDX].fld.flag2
00721 # endif
00722 
00723 # ifdef _DEBUG
00724 # define ATD_FILL_SYMBOL(IDX)                                                  \
00725         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00726                 attr_tbl : sytb_var_error("ATD_FILL_SYMBOL", IDX))             \
00727                 [IDX].fld.flag22
00728 # else
00729 # define ATD_FILL_SYMBOL(IDX)           attr_tbl[IDX].fld.flag22
00730 # endif
00731 
00732 # ifdef _DEBUG
00733 # define ATD_FIRST_SEEN_IL_IDX(IDX)                                            \
00734         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00735                 attr_aux_tbl : attr_aux_var_error("ATD_FIRST_SEEN_IL_IDX",IDX))\
00736                 [IDX].fld.field3
00737 # else
00738 # define ATD_FIRST_SEEN_IL_IDX(IDX)        attr_aux_tbl[IDX].fld.field3
00739 # endif
00740 
00741 # ifdef _DEBUG
00742 # define ATD_FLD(IDX)                                                          \
00743         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00744                 attr_tbl : sytb_var_error("ATD_FLD", IDX))                     \
00745                 [IDX].fld.field2
00746 # else
00747 # define ATD_FLD(IDX)               attr_tbl[IDX].fld.field2
00748 # endif
00749 
00750 # ifdef _DEBUG
00751 # define ATD_FORALL_INDEX(IDX)                                                 \
00752         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00753                 attr_aux_tbl : attr_aux_var_error("ATD_FORALL_INDEX", IDX))    \
00754                 [IDX].fld.flag8
00755 # else
00756 # define ATD_FORALL_INDEX(IDX)          attr_aux_tbl[IDX].fld.flag8
00757 # endif
00758 
00759 # ifdef _DEBUG
00760 # define ATD_FUNC_IDX(IDX)                                                     \
00761         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00762           attr_tbl[IDX].fld.secondary_info == Function_Result) ?               \
00763                 attr_tbl : sytb_var_error("ATD_FUNC_IDX", IDX))                \
00764                 [IDX].fld.field4
00765 # else
00766 # define ATD_FUNC_IDX(IDX)              attr_tbl[IDX].fld.field4
00767 # endif
00768 
00769 # ifdef _DEBUG
00770 # define ATD_IGNORE_TKR(IDX)                                                   \
00771         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00772                 attr_tbl : sytb_var_error("ATD_IGNORE_TKR", IDX))              \
00773                 [IDX].fld.flag48
00774 # else
00775 # define ATD_IGNORE_TKR(IDX)            attr_tbl[IDX].fld.flag48
00776 # endif
00777 
00778 # ifdef _DEBUG
00779 # define ATD_IM_A_DOPE(IDX)                                                    \
00780         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00781                 attr_tbl : sytb_var_error("ATD_IM_A_DOPE", IDX))               \
00782                 [IDX].fld.flag3
00783 # else
00784 # define ATD_IM_A_DOPE(IDX)             attr_tbl[IDX].fld.flag3
00785 # endif
00786 
00787 # ifdef _DEBUG
00788 # define ATD_IMP_DO_LCV(IDX)                                                   \
00789         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00790                 attr_aux_tbl : attr_aux_var_error("ATD_IMP_DO_LCV", IDX))      \
00791                 [IDX].fld.flag10
00792 # else
00793 # define ATD_IMP_DO_LCV(IDX)           attr_aux_tbl[IDX].fld.flag10
00794 # endif
00795 
00796 # ifdef _DEBUG
00797 # define ATD_IN_ASSIGN(IDX)                                                    \
00798         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00799                 attr_aux_tbl : attr_aux_var_error("ATD_IN_ASSIGN", IDX))       \
00800                 [IDX].fld.flag9
00801 # else
00802 # define ATD_IN_ASSIGN(IDX)             attr_aux_tbl[IDX].fld.flag9
00803 # endif
00804 
00805 # ifdef _DEBUG
00806 # define ATD_IN_COMMON(IDX)                                                    \
00807         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00808                 attr_tbl : sytb_var_error("ATD_IN_COMMON", IDX))               \
00809                 [IDX].fld.flag7
00810 # else
00811 # define ATD_IN_COMMON(IDX)             attr_tbl[IDX].fld.flag7
00812 # endif
00813 
00814 # ifdef _DEBUG
00815 # define ATD_INTENT(IDX)                                                       \
00816         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00817                 attr_tbl : sytb_var_error("ATD_INTENT", IDX))                  \
00818                 [IDX].fld.field3
00819 # else
00820 # define ATD_INTENT(IDX)                attr_tbl[IDX].fld.field3
00821 # endif
00822 
00823 # ifdef _DEBUG
00824 # define ATD_INTRIN_DARG(IDX)                                                  \
00825         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00826           attr_tbl[IDX].fld.secondary_info == Dummy_Argument) ?                \
00827                 attr_tbl : sytb_var_error("ATD_INTRIN_DARG", IDX))             \
00828                 [IDX].fld.flag27
00829 # else
00830 # define ATD_INTRIN_DARG(IDX)           attr_tbl[IDX].fld.flag27
00831 # endif
00832 
00833 # ifdef _DEBUG
00834 # define ATD_INTRIN_DARG_TYPE(IDX)                                             \
00835         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00836           attr_tbl[IDX].fld.secondary_info == Dummy_Argument) ?                \
00837                 attr_tbl : sytb_var_error("ATD_INTRIN_DARG_TYPE", IDX))        \
00838                 [IDX].fldd.field32_12
00839 # else
00840 # define ATD_INTRIN_DARG_TYPE(IDX)      attr_tbl[IDX].fldd.field32_12
00841 # endif
00842 
00843 # ifdef _DEBUG
00844 # define ATD_LCV_IS_CONST(IDX)                                                 \
00845         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00846                 attr_tbl : sytb_var_error("ATD_LCV_IS_CONST", IDX))            \
00847                 [IDX].fld.flag18
00848 # else
00849 # define ATD_LCV_IS_CONST(IDX)         attr_tbl[IDX].fld.flag18
00850 # endif
00851 
00852 # ifdef _DEBUG
00853 # define ATD_LIVE_DO_VAR(IDX)                                                  \
00854         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00855                 attr_aux_tbl : attr_aux_var_error("ATD_LIVE_DO_VAR", IDX))     \
00856                 [IDX].fld.flag1
00857 # else
00858 # define ATD_LIVE_DO_VAR(IDX)           attr_aux_tbl[IDX].fld.flag1
00859 # endif
00860 
00861 # ifdef _DEBUG
00862 # define ATD_NEXT_MEMBER_IDX(IDX)                                              \
00863         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00864           (attr_tbl[IDX].fld.secondary_info == Variable ||                     \
00865            attr_tbl[IDX].fld.secondary_info == Compiler_Tmp)) ?                \
00866                 attr_tbl : sytb_var_error("ATD_NEXT_MEMBER_IDX", IDX))         \
00867                 [IDX].fld.field16
00868 # else
00869 # define ATD_NEXT_MEMBER_IDX(IDX)       attr_tbl[IDX].fld.field16
00870 # endif
00871 
00872 # ifdef _DEBUG
00873 # define ATD_NO_ENTRY_LIST(IDX)                                                \
00874         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00875                 attr_aux_tbl : attr_aux_var_error("ATD_NO_ENTRY_LIST", IDX))   \
00876                 [IDX].fld.field1
00877 # else
00878 # define ATD_NO_ENTRY_LIST(IDX)         attr_aux_tbl[IDX].fld.field1
00879 # endif
00880 
00881 # ifdef _DEBUG
00882 # define ATD_NOBOUNDS_CHECK(IDX)                                               \
00883         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00884                 attr_tbl : sytb_var_error("ATD_NOBOUNDS_CHECK", IDX))          \
00885                 [IDX].fld.flag32
00886 # else
00887 # define ATD_NOBOUNDS_CHECK(IDX)        attr_tbl[IDX].fld.flag32
00888 # endif
00889 
00890 /*
00891 # ifdef _DEBUG
00892 # define ATD_NOT_PT_UNIQUE_MEM(IDX)                                            \
00893         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00894                 attr_tbl : sytb_var_error("ATD_NOT_PT_UNIQUE_MEM", IDX))       \
00895                 [IDX].fld.flag51
00896 # else
00897 */
00898 # define ATD_NOT_PT_UNIQUE_MEM(IDX)       attr_tbl[IDX].fld.flag51
00899 /* # endif */
00900 
00901 # ifdef _DEBUG
00902 # define ATD_OFFSET_ASSIGNED(IDX)                                              \
00903         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00904                 attr_tbl : sytb_var_error("ATD_OFFSET_ASSIGNED", IDX))         \
00905                 [IDX].fld.flag40
00906 # else
00907 # define ATD_OFFSET_ASSIGNED(IDX)       attr_tbl[IDX].fld.flag40
00908 # endif
00909 
00910 # ifdef _DEBUG
00911 # define ATD_OFFSET_FLD(IDX)                                                   \
00912         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00913           (attr_tbl[IDX].fld.secondary_info == Variable ||                     \
00914            attr_tbl[IDX].fld.secondary_info == Function_Result ||              \
00915            attr_tbl[IDX].fld.secondary_info == Struct_Component ||             \
00916            attr_tbl[IDX].fld.secondary_info == Compiler_Tmp)) ?                \
00917                 attr_tbl : sytb_var_error("ATD_OFFSET_FLD", IDX))              \
00918                 [IDX].fld2.field22
00919 # else
00920 # define ATD_OFFSET_FLD(IDX)            attr_tbl[IDX].fld2.field22
00921 # endif
00922 
00923 # ifdef _DEBUG
00924 # define ATD_OFFSET_IDX(IDX)                                                   \
00925         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00926           (attr_tbl[IDX].fld.secondary_info == Variable ||                     \
00927            attr_tbl[IDX].fld.secondary_info == Function_Result ||              \
00928            attr_tbl[IDX].fld.secondary_info == Compiler_Tmp)) ?                \
00929                 attr_tbl : sytb_var_error("ATD_OFFSET_IDX", IDX))              \
00930                 [IDX].fld.field13
00931 # else
00932 # define ATD_OFFSET_IDX(IDX)            attr_tbl[IDX].fld.field13
00933 # endif
00934 
00935 # ifdef _DEBUG
00936 # define ATD_PARENT_OBJECT(IDX)                                                \
00937         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00938                 attr_aux_tbl : attr_aux_var_error("ATD_PARENT_OBJECT", IDX))   \
00939                 [IDX].fld.flag7
00940 # else
00941 # define ATD_PARENT_OBJECT(IDX)         attr_aux_tbl[IDX].fld.flag7
00942 # endif
00943 
00944 # ifdef _DEBUG
00945 # define ATD_PE_ARRAY_IDX(IDX)                                                 \
00946         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00947                 attr_tbl : sytb_var_error("ATD_PE_ARRAY_IDX", IDX))            \
00948                 [IDX].fld.field10
00949 # else
00950 # define ATD_PE_ARRAY_IDX(IDX)        attr_tbl[IDX].fld.field10
00951 # endif
00952 
00953 # ifdef _DEBUG
00954 # define ATD_PERMUTATION(IDX)                                                  \
00955         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00956                 attr_tbl : sytb_var_error("ATD_PERMUTATION", IDX))             \
00957                 [IDX].fld.flag30
00958 # else
00959 # define ATD_PERMUTATION(IDX)           attr_tbl[IDX].fld.flag30
00960 # endif
00961 
00962 # ifdef _DEBUG
00963 # define ATD_POINTER(IDX)                                                      \
00964         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00965                 attr_tbl : sytb_var_error("ATD_POINTER", IDX))                 \
00966                 [IDX].fld.flag5
00967 # else
00968 # define ATD_POINTER(IDX)               attr_tbl[IDX].fld.flag5
00969 # endif
00970 
00971 # ifdef _DEBUG
00972 # define ATD_PTR_ASSIGNED(IDX)                                                 \
00973         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00974                 attr_tbl : sytb_var_error("ATD_PTR_ASSIGNED", IDX))            \
00975                 [IDX].fld.flag20
00976 # else
00977 # define ATD_PTR_ASSIGNED(IDX)          attr_tbl[IDX].fld.flag20
00978 # endif
00979 
00980 # ifdef _DEBUG
00981 # define ATD_PTR_HALF_WORD(IDX)                                                \
00982         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
00983                 attr_aux_tbl : attr_aux_var_error("ATD_PTR_HALF_WORD", IDX))   \
00984                 [IDX].fld.flag3
00985 # else
00986 # define ATD_PTR_HALF_WORD(IDX)         attr_aux_tbl[IDX].fld.flag3
00987 # endif
00988 
00989 # ifdef _DEBUG
00990 # define ATD_PTR_IDX(IDX)                                                      \
00991         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
00992           attr_tbl[IDX].fld.secondary_info == CRI__Pointee) ?                  \
00993                 attr_tbl : sytb_var_error("ATD_PTR_IDX", IDX))                 \
00994                 [IDX].fld.field8
00995 # else
00996 # define ATD_PTR_IDX(IDX)               attr_tbl[IDX].fld.field8
00997 # endif
00998 
00999 # ifdef _DEBUG
01000 # define ATD_PTR_TYPE_SET(IDX)                                                 \
01001         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01002                 attr_aux_tbl : attr_aux_var_error("ATD_PTR_TYPE_SET", IDX))    \
01003                 [IDX].fld.flag4
01004 # else
01005 # define ATD_PTR_TYPE_SET(IDX)          attr_aux_tbl[IDX].fld.flag4
01006 # endif
01007 
01008 # ifdef _DEBUG
01009 # define ATD_PURE(IDX)                                                         \
01010         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01011                 attr_tbl : sytb_var_error("ATD_PURE", IDX))                    \
01012                 [IDX].fld.flag38
01013 # else
01014 # define ATD_PURE(IDX)          attr_tbl[IDX].fld.flag38
01015 # endif
01016 
01017 # ifdef _DEBUG
01018 # define ATD_READ_ONLY_VAR(IDX)                                                \
01019         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01020                 attr_tbl : sytb_var_error("ATD_READ_ONLY_VAR", IDX))           \
01021                 [IDX].fld.flag52
01022 # else
01023 # define ATD_READ_ONLY_VAR(IDX)           attr_tbl[IDX].fld.flag52
01024 # endif
01025 
01026 # ifdef _DEBUG
01027 # define ATD_SAVED(IDX)                                                        \
01028         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01029                 attr_tbl : sytb_var_error("ATD_SAVED", IDX))                   \
01030                 [IDX].fld.flag4
01031 # else
01032 # define ATD_SAVED(IDX)                 attr_tbl[IDX].fld.flag4
01033 # endif
01034 
01035 # ifdef _DEBUG
01036 # define ATD_SECTION_GP(IDX)                                                   \
01037         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01038                 attr_tbl : sytb_var_error("ATD_SECTION_GP", IDX))              \
01039                 [IDX].fld.flag19
01040 # else
01041 # define ATD_SECTION_GP(IDX)            attr_tbl[IDX].fld.flag19
01042 # endif
01043 
01044 # ifdef _DEBUG
01045 # define ATD_SECTION_NON_GP(IDX)                                               \
01046         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01047                 attr_tbl : sytb_var_error("ATD_SECTION_NON_GP", IDX))          \
01048                 [IDX].fld.flag29
01049 # else
01050 # define ATD_SECTION_NON_GP(IDX)        attr_tbl[IDX].fld.flag29
01051 # endif
01052 
01053 
01054 # ifdef _DEBUG
01055 # define ATD_SF_ARG_IDX(IDX)                                                   \
01056         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01057           attr_tbl[IDX].fld.secondary_info == Dummy_Argument) ?                \
01058                 attr_tbl : sytb_var_error("ATD_SF_ARG_IDX", IDX))              \
01059                 [IDX].fld.field4
01060 # else
01061 # define ATD_SF_ARG_IDX(IDX)            attr_tbl[IDX].fld.field4
01062 # endif
01063 
01064 # ifdef _DEBUG
01065 # define ATD_SF_DARG(IDX)                                                      \
01066         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01067           attr_tbl[IDX].fld.secondary_info == Dummy_Argument) ?                \
01068                 attr_tbl : sytb_var_error("ATD_SF_DARG", IDX))                 \
01069                 [IDX].fld.flag28
01070 # else
01071 # define ATD_SF_DARG(IDX)               attr_tbl[IDX].fld.flag28
01072 # endif
01073 
01074 # ifdef _DEBUG
01075 # define ATD_SF_LINK(IDX)                                                      \
01076         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01077           attr_tbl[IDX].fld.secondary_info == Dummy_Argument) ?                \
01078                 attr_tbl : sytb_var_error("ATD_SF_LINK", IDX))                 \
01079                 [IDX].fld.field13
01080 # else
01081 # define ATD_SF_LINK(IDX)               attr_tbl[IDX].fld.field13
01082 # endif
01083 
01084 # ifdef _DEBUG
01085 # define ATD_STACK(IDX)                                                        \
01086         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01087                 attr_tbl : sytb_var_error("ATD_STACK", IDX))                   \
01088                 [IDX].fld.flag37
01089 # else
01090 # define ATD_STACK(IDX)                 attr_tbl[IDX].fld.flag37
01091 # endif
01092 
01093 # ifdef _DEBUG
01094 # define ATD_STOR_BLK_IDX(IDX)                                                 \
01095         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01096                 attr_tbl : sytb_var_error("ATD_STOR_BLK_IDX", IDX))            \
01097                 [IDX].fld.field6
01098 # else
01099 # define ATD_STOR_BLK_IDX(IDX)          attr_tbl[IDX].fld.field6
01100 # endif
01101 
01102 # ifdef _DEBUG
01103 # define ATD_RESHAPE_ARRAY_IDX(IDX)                                            \
01104         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01105                 attr_tbl : sytb_var_error("ATD_RESHAPE_ARRAY_IDX", IDX))       \
01106                 [IDX].fld.field7
01107 # else
01108 # define ATD_RESHAPE_ARRAY_IDX(IDX)     attr_tbl[IDX].fld.field7
01109 # endif
01110 
01111 # ifdef _DEBUG
01112 # define ATD_SYMMETRIC(IDX)                                                    \
01113         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01114                 attr_tbl : sytb_var_error("ATD_SYMMETRIC", IDX))               \
01115                 [IDX].fld.flag33
01116 # else
01117 # define ATD_SYMMETRIC(IDX)             attr_tbl[IDX].fld.flag33
01118 # endif
01119 
01120 # ifdef _DEBUG
01121 # define ATD_RESHAPE_ARRAY_OPT(IDX)                                            \
01122         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01123                 attr_tbl : sytb_var_error("ATD_RESHAPE_ARRAY_OPT", IDX))      \
01124                 [IDX].fld.flag17
01125 # else
01126 # define ATD_RESHAPE_ARRAY_OPT(IDX)     attr_tbl[IDX].fld.flag17
01127 # endif
01128 
01129 /* This flag is overlayed with ATD_TMP_NEEDS_CIF.  This flag is only          */
01130 /* pertinent to variables but we don't need to check for that because it can  */
01131 /* never be set for a temp because temps are created by the compiler.         */
01132 
01133 # ifdef _DEBUG
01134 # define ATD_SEEN_AS_IO_LCV(IDX)                                               \
01135         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01136                 attr_tbl : sytb_var_error("ATD_SEEN_AS_IO_LCV", IDX))          \
01137                 [IDX].fld.flag34
01138 # else
01139 # define ATD_SEEN_AS_IO_LCV(IDX)         attr_tbl[IDX].fld.flag34
01140 # endif
01141 
01142 # ifdef _DEBUG
01143 # define ATD_SEEN_AS_LCV(IDX)                                                  \
01144         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01145                 attr_tbl : sytb_var_error("ATD_SEEN_AS_LCV", IDX))             \
01146                 [IDX].fld.flag25
01147 # else
01148 # define ATD_SEEN_AS_LCV(IDX)             attr_tbl[IDX].fld.flag25
01149 # endif
01150 
01151 # ifdef _DEBUG
01152 # define ATD_SEEN_IN_IMP_DO(IDX)                                               \
01153         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01154                 attr_tbl : sytb_var_error("ATD_SEEN_IN_IMP_DO", IDX))          \
01155                 [IDX].fld.flag23
01156 # else
01157 # define ATD_SEEN_IN_IMP_DO(IDX)              attr_tbl[IDX].fld.flag23
01158 # endif
01159 
01160 # ifdef _DEBUG
01161 # define ATD_SEEN_OUTSIDE_IMP_DO(IDX)                                          \
01162         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01163                 attr_tbl : sytb_var_error("ATD_SEEN_OUTSIDE_IMP_DO",IDX))      \
01164                 [IDX].fld.flag24
01165 # else
01166 # define ATD_SEEN_OUTSIDE_IMP_DO(IDX)         attr_tbl[IDX].fld.flag24
01167 # endif
01168 
01169 # ifdef _DEBUG
01170 # define ATD_SYMBOLIC_CONSTANT(IDX)                                            \
01171         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01172                 attr_tbl : sytb_var_error("ATD_SYMBOLIC_CONSTANT", IDX))       \
01173                 [IDX].fld.flag35
01174 # else
01175 # define ATD_SYMBOLIC_CONSTANT(IDX)     attr_tbl[IDX].fld.flag35
01176 # endif
01177 
01178 # ifdef _DEBUG
01179 # define ATD_TARGET(IDX)                                                       \
01180         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01181                 attr_tbl : sytb_var_error("ATD_TARGET", IDX))                  \
01182                 [IDX].fld.flag1
01183 # else
01184 # define ATD_TARGET(IDX)                attr_tbl[IDX].fld.flag1
01185 # endif
01186 
01187 # ifdef _DEBUG
01188 # define ATD_TASK_COPYIN(IDX)                                                  \
01189         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01190                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_COPYIN", IDX))       \
01191                 [IDX].fld.flag18
01192 # else
01193 # define ATD_TASK_COPYIN(IDX)             attr_aux_tbl[IDX].fld.flag18
01194 # endif
01195 
01196 # ifdef _DEBUG
01197 # define ATD_TASK_GETFIRST(IDX)                                                \
01198         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01199                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_GETFIRST", IDX))     \
01200                 [IDX].fld.flag13
01201 # else
01202 # define ATD_TASK_GETFIRST(IDX)         attr_aux_tbl[IDX].fld.flag13
01203 # endif
01204 
01205 # ifdef _DEBUG
01206 # define ATD_TASK_COPYPRIVATE(IDX)                                             \
01207         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01208                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_COPYPRIVATE", IDX))  \
01209                 [IDX].fld.flag15
01210 # else
01211 # define ATD_TASK_COPYPRIVATE(IDX)        attr_aux_tbl[IDX].fld.flag15
01212 # endif
01213 
01214 # ifdef _DEBUG
01215 # define ATD_TASK_FIRSTPRIVATE(IDX)                                            \
01216         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01217                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_FIRSTPRIVATE", IDX)) \
01218                 [IDX].fld.flag17
01219 # else
01220 # define ATD_TASK_FIRSTPRIVATE(IDX)       attr_aux_tbl[IDX].fld.flag17
01221 # endif
01222 
01223 /* there is no FLUSH clause in OpenMP ([email protected]) */
01224 /* we fake this clause in order to treat FLUSH directive the same as the others */
01225 # ifdef _DEBUG
01226 # define ATD_TASK_FLUSH(IDX)                                             \
01227         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01228                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_COPYPRIVATE", IDX))  \
01229                 [IDX].fld.flag16
01230 # else
01231 # define ATD_TASK_FLUSH(IDX)             attr_aux_tbl[IDX].fld.flag16
01232 # endif
01233 
01234 # ifdef _DEBUG
01235 # define ATD_TASK_LASTLOCAL(IDX)                                               \
01236         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01237                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_LASTLOCAL", IDX))    \
01238                 [IDX].fld.flag14
01239 # else
01240 # define ATD_TASK_LASTLOCAL(IDX)         attr_aux_tbl[IDX].fld.flag14
01241 # endif
01242 
01243 # ifdef _DEBUG
01244 # define ATD_TASK_LASTPRIVATE(IDX)                                             \
01245         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01246                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_LASTPRIVATE", IDX))  \
01247                 [IDX].fld.flag19
01248 # else
01249 # define ATD_TASK_LASTPRIVATE(IDX)        attr_aux_tbl[IDX].fld.flag19
01250 # endif
01251 
01252 # ifdef _DEBUG
01253 # define ATD_TASK_LASTTHREAD(IDX)                                              \
01254         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01255                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_LASTTHREAD", IDX))   \
01256                 [IDX].fld.flag16
01257 # else
01258 # define ATD_TASK_LASTTHREAD(IDX)         attr_aux_tbl[IDX].fld.flag16
01259 # endif
01260 
01261 # ifdef _DEBUG
01262 # define ATD_TASK_PRIVATE(IDX)                                                 \
01263         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01264                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_PRIVATE", IDX))      \
01265                 [IDX].fld.flag12
01266 # else
01267 # define ATD_TASK_PRIVATE(IDX)           attr_aux_tbl[IDX].fld.flag12
01268 # endif
01269 
01270 # ifdef _DEBUG
01271 # define ATD_TASK_REDUCTION(IDX)                                               \
01272         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01273                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_REDUCTION", IDX))    \
01274                 [IDX].fld.flag15
01275 # else
01276 # define ATD_TASK_REDUCTION(IDX)         attr_aux_tbl[IDX].fld.flag15
01277 # endif
01278 
01279 # ifdef _DEBUG
01280 # define ATD_TASK_SHARED(IDX)                                                  \
01281         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01282                 attr_aux_tbl:attr_aux_var_error("ATD_TASK_SHARED", IDX))       \
01283                 [IDX].fld.flag11
01284 # else
01285 # define ATD_TASK_SHARED(IDX)                attr_aux_tbl[IDX].fld.flag11
01286 # endif
01287 
01288 # ifdef _DEBUG
01289 # define ATD_TMP_GEN_ZERO(IDX)                                                 \
01290         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01291          attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                   \
01292                 attr_tbl : sytb_var_error("ATD_TMP_GEN_ZERO", IDX))            \
01293                 [IDX].fld.flag28
01294 # else
01295 # define ATD_TMP_GEN_ZERO(IDX)             attr_tbl[IDX].fld.flag28
01296 # endif
01297 
01298 # ifdef _DEBUG
01299 # define ATD_TMP_HAS_CVRT_OPR(IDX)                                             \
01300         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01301                 attr_aux_tbl:attr_aux_var_error("ATD_TMP_HAS_CVRT_OPR", IDX))  \
01302                 [IDX].fld.flag6
01303 # else
01304 # define ATD_TMP_HAS_CVRT_OPR(IDX)      attr_aux_tbl[IDX].fld.flag6
01305 # endif
01306 
01307 /* # ifdef _DEBUG
01308 # define ATD_TMP_IDX(IDX)                                                      \
01309         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01310           attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                  \
01311                 attr_tbl : sytb_var_error("ATD_TMP_IDX", IDX))                 \
01312                 [IDX].fld.field4
01313 # else
01314 */
01315 # define ATD_TMP_IDX(IDX)               attr_tbl[IDX].fld.field4
01316 
01317 /* # endif */
01318 
01319 # ifdef _DEBUG
01320 # define ATD_TMP_INIT_NOT_DONE(IDX)                                            \
01321         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01322           attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                  \
01323                 attr_tbl : sytb_var_error("ATD_TMP_INIT_NOT_DONE", IDX))       \
01324                 [IDX].fld.flag26
01325 # else
01326 # define ATD_TMP_INIT_NOT_DONE(IDX)     attr_tbl[IDX].fld.flag26
01327 # endif
01328 
01329 # ifdef _DEBUG
01330 # define ATD_TMP_NEEDS_CIF(IDX)                                                \
01331         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01332           attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                  \
01333                 attr_tbl : sytb_var_error("ATD_TMP_NEEDS_CIF", IDX))           \
01334                 [IDX].fld.flag34
01335 # else
01336 # define ATD_TMP_NEEDS_CIF(IDX)         attr_tbl[IDX].fld.flag34
01337 # endif
01338 
01339 # ifdef _DEBUG
01340 # define ATD_TMP_SEMANTICS_DONE(IDX)                                           \
01341         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01342           attr_tbl[IDX].fld.secondary_info == Compiler_Tmp) ?                  \
01343                 attr_tbl : sytb_var_error("ATD_TMP_SEMANTICS_DONE", IDX))      \
01344                 [IDX].fld.flag27
01345 # else
01346 # define ATD_TMP_SEMANTICS_DONE(IDX)    attr_tbl[IDX].fld.flag27
01347 # endif
01348 
01349 # ifdef _DEBUG
01350 # define ATD_TOO_BIG_FOR_DV(IDX)                                               \
01351                 ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                             \
01352                 attr_tbl : sytb_var_error("ATD_TOO_BIG_FOR_DV", IDX))          \
01353                 [IDX].fld.flag44
01354 # else
01355 # define ATD_TOO_BIG_FOR_DV(IDX)        attr_tbl[IDX].fld.flag44
01356 # endif
01357 
01358 # if 0 
01359 # ifdef _DEBUG
01360 # define ATD_TYPE_IDX(IDX)                                                     \
01361         ((AT_OBJ_CLASS(IDX) == Data_Obj ||                                     \
01362           AT_OBJ_CLASS(IDX) == Interface ||                                    \
01363           AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
01364                 attr_tbl : sytb_var_error("ATD_TYPE_IDX", IDX))                \
01365                 [IDX].fld.field5
01366 # else
01367 # define ATD_TYPE_IDX(IDX)              attr_tbl[IDX].fld.field5
01368 # endif
01369 # endif 
01370 # define ATD_TYPE_IDX(IDX)              attr_tbl[IDX].fld.field5
01371 
01372 
01373 # ifdef _DEBUG
01374 # define ATD_VARIABLE_TMP_IDX(IDX)                                             \
01375         ((AT_OBJ_CLASS(IDX) == Data_Obj &&                                     \
01376           attr_tbl[IDX].fld.secondary_info == Variable) ?                      \
01377                 attr_tbl : sytb_var_error("ATD_VARIABLE_TMP_IDX", IDX))        \
01378                 [IDX].fld.field4
01379 # else
01380 # define ATD_VARIABLE_TMP_IDX(IDX)      attr_tbl[IDX].fld.field4
01381 # endif
01382 
01383 # ifdef _DEBUG
01384 # define ATD_VOLATILE(IDX)                                                     \
01385         ((AT_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
01386                 attr_tbl : sytb_var_error("ATD_VOLATILE", IDX))                \
01387                 [IDX].fld.flag42
01388 # else
01389 # define ATD_VOLATILE(IDX)              attr_tbl[IDX].fld.flag42
01390 # endif
01391 
01392 
01393 /* Definitions for interface class */
01394 
01395 # ifdef _DEBUG
01396 # define ATI_CIF_SCOPE_ID(IDX)                                                 \
01397         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01398                 attr_aux_tbl : attr_aux_var_error("ATI_CIF_SCOPE_ID", IDX))    \
01399                 [IDX].fld.field3
01400 # else
01401 # define ATI_CIF_SCOPE_ID(IDX)  attr_aux_tbl[IDX].fld.field3
01402 # endif
01403 
01404 # ifdef _DEBUG
01405 # define ATI_CIF_SEEN_IN_CALL(IDX)                                             \
01406         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01407                 attr_tbl : sytb_var_error("ATI_CIF_SEEN_IN_CALL", IDX))        \
01408                 [IDX].fld.flag5
01409 # else
01410 # define ATI_CIF_SEEN_IN_CALL(IDX)        attr_tbl[IDX].fld.flag5
01411 # endif
01412 
01413 # ifdef _DEBUG
01414 # define ATI_DCL_INTRINSIC(IDX)                                                \
01415         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01416                 attr_tbl : sytb_var_error("ATI_DCL_INTRINSIC", IDX))           \
01417                 [IDX].fld.flag3
01418 # else
01419 # define ATI_DCL_INTRINSIC(IDX)         attr_tbl[IDX].fld.flag3
01420 # endif
01421 
01422 # ifdef _DEBUG
01423 # define ATI_DEFINED_OPR(IDX)                                                  \
01424         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01425                 attr_tbl : sytb_var_error("ATI_DEFINED_OPR", IDX))             \
01426                 [IDX].fld.field6
01427 # else
01428 # define ATI_DEFINED_OPR(IDX)           attr_tbl[IDX].fld.field6
01429 # endif
01430 
01431 # ifdef _DEBUG
01432 # define ATI_FIRST_SPECIFIC_IDX(IDX)                                           \
01433         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01434                 attr_tbl : sytb_var_error("ATI_FIRST_SPECIFIC_IDX", IDX))      \
01435                 [IDX].fld.field10
01436 # else
01437 # define ATI_FIRST_SPECIFIC_IDX(IDX)    attr_tbl[IDX].fld.field10
01438 # endif
01439 
01440 # ifdef _DEBUG
01441 # define ATI_GENERIC_INTRINSIC(IDX)                                            \
01442         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01443                 attr_tbl : sytb_var_error("ATI_GENERIC_INTRINSIC", IDX))      \
01444                 [IDX].fld.flag7
01445 # else
01446 # define ATI_GENERIC_INTRINSIC(IDX)     attr_tbl[IDX].fld.flag7
01447 # endif
01448 
01449 # ifdef _DEBUG
01450 # define ATI_HAS_NON_MOD_PROC(IDX)                                             \
01451         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01452                 attr_tbl : sytb_var_error("ATI_HAS_NON_MOD_PROC", IDX))        \
01453                 [IDX].fld.flag6
01454 # else
01455 # define ATI_HAS_NON_MOD_PROC(IDX)      attr_tbl[IDX].fld.flag6
01456 # endif
01457 
01458 # ifdef _DEBUG
01459 # define ATI_INLINE_ALWAYS(IDX)                                                \
01460         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01461                 attr_tbl : sytb_var_error("ATI_INLINE_ALWAYS", IDX))           \
01462                 [IDX].fld.flag8
01463 # else
01464 # define ATI_INLINE_ALWAYS(IDX)         attr_tbl[IDX].fld.flag8
01465 # endif
01466 
01467 # ifdef _DEBUG
01468 # define ATI_INLINE_NEVER(IDX)                                                 \
01469         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01470                 attr_tbl : sytb_var_error("ATI_INLINE_NEVER", IDX))            \
01471                 [IDX].fld.flag9
01472 # else
01473 # define ATI_INLINE_NEVER(IDX)          attr_tbl[IDX].fld.flag9
01474 # endif
01475 
01476 # ifdef _DEBUG
01477 # define ATI_IPA_DIR_SPECIFIED(IDX)                                            \
01478         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01479                 attr_tbl : sytb_var_error("ATI_IPA_DIR_SPECIFIED", IDX))       \
01480                 [IDX].fld.flag12
01481 # else
01482 # define ATI_IPA_DIR_SPECIFIED(IDX)     attr_tbl[IDX].fld.flag12
01483 # endif
01484 
01485 # ifdef _DEBUG
01486 # define ATI_INTERFACE_CLASS(IDX)                                              \
01487         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01488                 attr_tbl : sytb_var_error("ATI_INTERFACE_CLASS", IDX))         \
01489                 [IDX].fld.secondary_info
01490 # else
01491 # define ATI_INTERFACE_CLASS(IDX)       attr_tbl[IDX].fld.secondary_info
01492 # endif
01493 
01494 # ifdef _DEBUG
01495 # define ATI_INTRIN_PASSABLE(IDX)                                              \
01496         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01497                 attr_tbl : sytb_var_error("ATI_INTRIN_PASSABLE", IDX))         \
01498                 [IDX].fld.flag1
01499 # else
01500 # define ATI_INTRIN_PASSABLE(IDX)       attr_tbl[IDX].fld.flag1
01501 # endif
01502 
01503 # ifdef _DEBUG
01504 # define ATI_INTRIN_TBL_IDX(IDX)                                               \
01505         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01506                 attr_tbl : sytb_var_error("ATI_INTRIN_TBL_IDX", IDX))          \
01507                 [IDX].fld.field13
01508 # else
01509 # define ATI_INTRIN_TBL_IDX(IDX)                attr_tbl[IDX].fld.field13
01510 # endif
01511 
01512 # ifdef _DEBUG
01513 # define ATI_NUM_SPECIFICS(IDX)                                                \
01514         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01515                 attr_tbl : sytb_var_error("ATI_NUM_SPECIFICS", IDX))           \
01516                 [IDX].fld.field14
01517 # else
01518 # define ATI_NUM_SPECIFICS(IDX)         attr_tbl[IDX].fld.field14
01519 # endif
01520 
01521 # ifdef _DEBUG
01522 # define ATI_PROC_IDX(IDX)                                                     \
01523         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01524                 attr_tbl : sytb_var_error("ATI_PROC_IDX", IDX))                \
01525                 [IDX].fld.field8
01526 # else
01527 # define ATI_PROC_IDX(IDX)           attr_tbl[IDX].fld.field8
01528 # endif
01529 
01530 # ifdef _DEBUG
01531 # define ATI_SGI_ROUTINE_INLINE(IDX)                                           \
01532         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01533                 attr_tbl : sytb_var_error("ATI_SGI_ROUTINE_INLINE", IDX))      \
01534                 [IDX].fld.flag10
01535 # else
01536 # define ATI_SGI_ROUTINE_INLINE(IDX)    attr_tbl[IDX].fld.flag10
01537 # endif
01538 
01539 # ifdef _DEBUG
01540 # define ATI_SGI_ROUTINE_NOINLINE(IDX)                                         \
01541         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01542                 attr_tbl : sytb_var_error("ATI_SGI_ROUTINE_NOINLINE", IDX))    \
01543                 [IDX].fld.flag11
01544 # else
01545 # define ATI_SGI_ROUTINE_NOINLINE(IDX)  attr_tbl[IDX].fld.flag11
01546 # endif
01547 
01548 # ifdef _DEBUG
01549 # define ATI_UNNAMED_INTERFACE(IDX)                                            \
01550         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01551                 attr_tbl : sytb_var_error("ATI_UNNAMED_INTERFACE", IDX))       \
01552                 [IDX].fld.flag2
01553 # else
01554 # define ATI_UNNAMED_INTERFACE(IDX)     attr_tbl[IDX].fld.flag2
01555 # endif
01556 
01557 
01558 # ifdef _DEBUG
01559 # define ATI_USER_SPECIFIED(IDX)                                               \
01560         ((AT_OBJ_CLASS(IDX) == Interface) ?                                    \
01561                 attr_tbl : sytb_var_error("ATI_USER_SPECIFIED", IDX))          \
01562                 [IDX].fld.flag4
01563 # else
01564 # define ATI_USER_SPECIFIED(IDX)        attr_tbl[IDX].fld.flag4
01565 # endif
01566 
01567 
01568 /* Definitions for label class */
01569 
01570 # ifdef _DEBUG
01571 # define ATL_AGGRESSIVEINNERLOOPFISSION(IDX)                                   \
01572         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01573                 attr_tbl:sytb_var_error("ATL_AGGRESSIVEINNERLOOPFISSION",IDX)) \
01574                 [IDX].fld.flag31
01575 # else
01576 # define ATL_AGGRESSIVEINNERLOOPFISSION(IDX)    attr_tbl[IDX].fld.flag31
01577 # endif
01578 
01579 # ifdef _DEBUG
01580 # define ATL_ALIGN(IDX)                                                        \
01581         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01582                 attr_tbl : sytb_var_error("ATL_ALIGN", IDX))                   \
01583                 [IDX].fld.flag12
01584 # else
01585 # define ATL_ALIGN(IDX)                 attr_tbl[IDX].fld.flag12
01586 # endif
01587 
01588 # ifdef _DEBUG
01589 # define ATL_ASG_LBL_CHAIN_START(IDX)                                          \
01590         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01591                 attr_tbl : sytb_var_error("ATL_ASG_LBL_CHAIN_START", IDX))     \
01592                 [IDX].fld.flag21
01593 # else
01594 # define ATL_ASG_LBL_CHAIN_START(IDX)   attr_tbl[IDX].fld.flag21
01595 # endif
01596 
01597 # ifdef _DEBUG
01598 # define ATL_BL(IDX)                                                           \
01599         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01600                 attr_tbl : sytb_var_error("ATL_BL", IDX))                      \
01601                 [IDX].fld.flag11
01602 # else
01603 # define ATL_BL(IDX)                    attr_tbl[IDX].fld.flag11
01604 # endif
01605 
01606 # ifdef _DEBUG
01607 # define ATL_BLK_STMT_IDX(IDX)                                                 \
01608         ((AT_OBJ_CLASS(IDX) == Label &&                                        \
01609           attr_tbl[IDX].fld.secondary_info <= Lbl_User) ?                      \
01610                 attr_tbl : sytb_var_error("ATL_BLK_STMT_IDX", IDX))            \
01611                 [IDX].fld.field10
01612 # else
01613 # define ATL_BLK_STMT_IDX(IDX)          attr_tbl[IDX].fld.field10
01614 # endif
01615 
01616 # ifdef _DEBUG
01617 # define ATL_CLASS(IDX)                                                        \
01618         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01619                 attr_tbl : sytb_var_error("ATL_CLASS", IDX))                   \
01620                 [IDX].fld.secondary_info
01621 # else
01622 # define ATL_CLASS(IDX)                 attr_tbl[IDX].fld.secondary_info
01623 # endif
01624 
01625 # ifdef _DEBUG
01626 # define ATL_CMIC_BLK_STMT_IDX(IDX)                                            \
01627         ((AT_OBJ_CLASS(IDX) == Label &&                                        \
01628           attr_tbl[IDX].fld.secondary_info != Lbl_Format) ?                    \
01629                 attr_tbl : sytb_var_error("ATL_CMIC_BLK_STMT_IDX", IDX))       \
01630                 [IDX].fld.field4
01631 # else
01632 # define ATL_CMIC_BLK_STMT_IDX(IDX)        attr_tbl[IDX].fld.field4
01633 # endif
01634 
01635 # ifdef _DEBUG
01636 # define ATL_CONCURRENT(IDX)                                                   \
01637         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01638                 attr_tbl : sytb_var_error("ATL_CONCURRENT", IDX))              \
01639                 [IDX].fld.flag33
01640 # else
01641 # define ATL_CONCURRENT(IDX)            attr_tbl[IDX].fld.flag33
01642 # endif
01643 
01644 # ifdef _DEBUG
01645 # define ATL_CONSTRUCTOR_LOOP(IDX)                                             \
01646         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01647                 attr_tbl : sytb_var_error("ATL_CONSTRUCTOR_LOOP", IDX))        \
01648                 [IDX].fld.flag34
01649 # else
01650 # define ATL_CONSTRUCTOR_LOOP(IDX)      attr_tbl[IDX].fld.flag34
01651 # endif
01652 
01653 # ifdef _DEBUG
01654 # define ATL_CNCALL(IDX)                                                       \
01655         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01656                 attr_tbl : sytb_var_error("ATL_CNCALL", IDX))                  \
01657                 [IDX].fld.flag18
01658 # else
01659 # define ATL_CNCALL(IDX)                attr_tbl[IDX].fld.flag18
01660 # endif
01661 
01662 # ifdef _DEBUG
01663 # define ATL_CYCLE_LBL(IDX)                                                    \
01664         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01665                 attr_tbl : sytb_var_error("ATL_CYCLE_LBL", IDX))               \
01666                 [IDX].fld.flag38
01667 # else
01668 # define ATL_CYCLE_LBL(IDX)             attr_tbl[IDX].fld.flag38
01669 # endif
01670 
01671 # ifdef _DEBUG
01672 # define ATL_DEBUG_CLASS(IDX)                                                  \
01673         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01674                 attr_tbl : sytb_var_error("ATL_DEBUG_CLASS", IDX))             \
01675                 [IDX].fld.field2
01676 # else
01677 # define ATL_DEBUG_CLASS(IDX)                   attr_tbl[IDX].fld.field2
01678 # endif
01679 
01680 # ifdef _DEBUG
01681 # define ATL_DEF_STMT_IDX(IDX)                                                 \
01682         ((AT_OBJ_CLASS(IDX) == Label && AT_DEFINED(IDX)) ?                     \
01683                 attr_tbl : sytb_var_error("ATL_DEF_STMT_IDX", IDX))            \
01684                 [IDX].fld.field13
01685 # else
01686 # define ATL_DEF_STMT_IDX(IDX)          attr_tbl[IDX].fld.field13
01687 # endif
01688 
01689 # ifdef _DEBUG
01690 # define ATL_CASE_LABEL(IDX)                                                   \
01691         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01692                 attr_tbl : sytb_var_error("ATL_CASE_LABEL", IDX))              \
01693                 [IDX].fld.flag25
01694 # else
01695 # define ATL_CASE_LABEL(IDX)            attr_tbl[IDX].fld.flag25
01696 # endif
01697 
01698 # ifdef _DEBUG
01699 # define ATL_DIRECTIVE_LIST(IDX)                                               \
01700         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01701                 attr_tbl : sytb_var_error("ATL_DIRECTIVE_LIST", IDX))          \
01702                 [IDX].fld.field14
01703 # else
01704 # define ATL_DIRECTIVE_LIST(IDX)        attr_tbl[IDX].fld.field14
01705 # endif
01706 
01707 # ifdef _DEBUG
01708 # define ATL_EXECUTABLE(IDX)                                                   \
01709         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01710                 attr_tbl : sytb_var_error("ATL_EXECUTABLE", IDX))              \
01711                 [IDX].fld.flag2
01712 # else
01713 # define ATL_EXECUTABLE(IDX)            attr_tbl[IDX].fld.flag2
01714 # endif
01715 
01716 # ifdef _DEBUG
01717 # define ATL_FISSIONABLE(IDX)                                                  \
01718         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01719                 attr_tbl : sytb_var_error("ATL_FISSIONABLE", IDX))             \
01720                 [IDX].fld.flag26
01721 # else
01722 # define ATL_FISSIONABLE(IDX)           attr_tbl[IDX].fld.flag26
01723 # endif
01724 
01725 /*  # ifdef _DEBUG
01726  # define ATL_FORMAT_TMP(IDX)                                                  \
01727         ((AT_OBJ_CLASS(IDX) == Label &&                                        \
01728           attr_tbl[IDX].fld.secondary_info == Lbl_Format) ?                    \
01729                 attr_tbl : sytb_var_error("ATL_FORMAT_TMP", IDX))              \
01730                 [IDX].fld.field10
01731  # else
01732 */
01733 # define ATL_FORMAT_TMP(IDX)            attr_tbl[IDX].fld.field10
01734 /*  # endif */
01735 
01736 # ifdef _DEBUG
01737 # define ATL_FUSABLE(IDX)                                                      \
01738         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01739                 attr_tbl : sytb_var_error("ATL_FUSABLE", IDX))                 \
01740                 [IDX].fld.flag28
01741 # else
01742 # define ATL_FUSABLE(IDX)               attr_tbl[IDX].fld.flag28
01743 # endif
01744 
01745 # ifdef _DEBUG
01746 # define ATL_FUSION(IDX)                                                       \
01747         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01748                 attr_tbl : sytb_var_error("ATL_FUSION", IDX))                  \
01749                 [IDX].fld.flag35
01750 # else
01751 # define ATL_FUSION(IDX)                attr_tbl[IDX].fld.flag35
01752 # endif
01753 
01754 # ifdef _DEBUG
01755 # define ATL_FWD_REF_IDX(IDX)                                                  \
01756         ((AT_OBJ_CLASS(IDX) == Label && !(AT_DEFINED(IDX))) ?                  \
01757                 attr_tbl : sytb_var_error("ATL_FWD_REF_IDX", IDX))             \
01758                 [IDX].fld.field13
01759 # else
01760 # define ATL_FWD_REF_IDX(IDX)           attr_tbl[IDX].fld.field13
01761 # endif
01762 
01763 # ifdef _DEBUG
01764 # define ATL_IN_ASSIGN(IDX)                                                    \
01765         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01766                 attr_tbl : sytb_var_error("ATL_IN_ASSIGN", IDX))               \
01767                 [IDX].fld.flag1
01768 # else
01769 # define ATL_IN_ASSIGN(IDX)             attr_tbl[IDX].fld.flag1
01770 # endif
01771 
01772 # ifdef _DEBUG
01773 # define ATL_IN_ASSIGN_LBL_CHAIN(IDX)                                          \
01774         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01775                 attr_tbl : sytb_var_error("ATL_IN_ASSIGN_LBL_CHAIN", IDX))     \
01776                 [IDX].fld.flag3
01777 # else
01778 # define ATL_IN_ASSIGN_LBL_CHAIN(IDX)            attr_tbl[IDX].fld.flag3
01779 # endif
01780 
01781 # ifdef _DEBUG
01782 # define ATL_IVDEP(IDX)                                                        \
01783         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01784                 attr_tbl : sytb_var_error("ATL_IVDEP", IDX))                   \
01785                 [IDX].fld.flag4
01786 # else
01787 # define ATL_IVDEP(IDX)         attr_tbl[IDX].fld.flag4
01788 # endif
01789 
01790 # ifdef _DEBUG
01791 # define ATL_MAXCPUS(IDX)                                                      \
01792         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01793                 attr_tbl : sytb_var_error("ATL_MAXCPUS", IDX))                 \
01794                 [IDX].fld.flag23
01795 # else
01796 # define ATL_MAXCPUS(IDX)       attr_tbl[IDX].fld.flag23
01797 # endif
01798 
01799 # ifdef _DEBUG
01800 # define ATL_NEW_LBL_IDX(IDX)                                                  \
01801         ((AT_OBJ_CLASS(IDX) == Label &&                                        \
01802           attr_tbl[IDX].fld.secondary_info == Lbl_Internal) ?                  \
01803                 attr_tbl : sytb_var_error("ATL_NEW_LBL_IDX", IDX))             \
01804                 [IDX].fld.field10
01805 # else
01806 # define ATL_NEW_LBL_IDX(IDX)          attr_tbl[IDX].fld.field10
01807 # endif
01808 
01809 # ifdef _DEBUG
01810 # define ATL_NEXT_ASG_LBL_IDX(IDX)                                             \
01811         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01812                 attr_tbl : sytb_var_error("ATL_NEXT_ASG_LBL_IDX", IDX))        \
01813                 [IDX].fld.field8
01814 # else
01815 # define ATL_NEXT_ASG_LBL_IDX(IDX)              attr_tbl[IDX].fld.field8
01816 # endif
01817 
01818 # ifdef _DEBUG
01819 # define ATL_NEXTSCALAR(IDX)                                                   \
01820         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01821                 attr_tbl : sytb_var_error("ATL_NEXTSCALAR", IDX))              \
01822                 [IDX].fld.flag10
01823 # else
01824 # define ATL_NEXTSCALAR(IDX)            attr_tbl[IDX].fld.flag10
01825 # endif
01826 
01827 # ifdef _DEBUG
01828 # define ATL_NOBLOCKING(IDX)                                                   \
01829         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01830                 attr_tbl : sytb_var_error("ATL_NOBLOCKING", IDX))              \
01831                 [IDX].fld.flag32
01832 # else
01833 # define ATL_NOBLOCKING(IDX)            attr_tbl[IDX].fld.flag32
01834 # endif
01835 
01836 # ifdef _DEBUG
01837 # define ATL_NOFISSION(IDX)                                                    \
01838         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01839                 attr_tbl : sytb_var_error("ATL_NOFISSION", IDX))               \
01840                 [IDX].fld.flag27
01841 # else
01842 # define ATL_NOFISSION(IDX)             attr_tbl[IDX].fld.flag27
01843 # endif
01844 
01845 # ifdef _DEBUG
01846 # define ATL_NOFUSION(IDX)                                                     \
01847         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01848                 attr_tbl : sytb_var_error("ATL_NOFUSION", IDX))                \
01849                 [IDX].fld.flag29
01850 # else
01851 # define ATL_NOFUSION(IDX)              attr_tbl[IDX].fld.flag29
01852 # endif
01853 
01854 # ifdef _DEBUG
01855 # define ATL_NOINTERCHANGE(IDX)                                                \
01856         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01857                 attr_tbl : sytb_var_error("ATL_NOINTERCHANGE", IDX))           \
01858                 [IDX].fld.flag30
01859 # else
01860 # define ATL_NOINTERCHANGE(IDX)         attr_tbl[IDX].fld.flag30
01861 # endif
01862 
01863 # ifdef _DEBUG
01864 # define ATL_NORECURRENCE(IDX)                                                 \
01865         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01866                 attr_tbl : sytb_var_error("ATL_NORECURRENCE", IDX))            \
01867                 [IDX].fld.flag5
01868 # else
01869 # define ATL_NORECURRENCE(IDX)          attr_tbl[IDX].fld.flag5
01870 # endif
01871 
01872 # ifdef _DEBUG
01873 # define ATL_NOTASK(IDX)                                                       \
01874         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01875                 attr_tbl : sytb_var_error("ATL_NOTASK", IDX))                  \
01876                 [IDX].fld.flag37
01877 # else
01878 # define ATL_NOTASK(IDX)                attr_tbl[IDX].fld.flag37
01879 # endif
01880 
01881 # ifdef _DEBUG
01882 # define ATL_NOVECTOR(IDX)                                                     \
01883         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01884                 attr_tbl : sytb_var_error("ATL_NOVECTOR", IDX))                \
01885                 [IDX].fld.flag6
01886 # else
01887 # define ATL_NOVECTOR(IDX)              attr_tbl[IDX].fld.flag6
01888 # endif
01889 
01890 # ifdef _DEBUG
01891 # define ATL_NOVSEARCH(IDX)                                                    \
01892         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01893                 attr_tbl : sytb_var_error("ATL_NOVSEARCH", IDX))               \
01894                 [IDX].fld.flag9
01895 # else
01896 # define ATL_NOVSEARCH(IDX)             attr_tbl[IDX].fld.flag9
01897 # endif
01898 
01899 # ifdef _DEBUG
01900 # define ATL_PATTERN(IDX)                                                      \
01901         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01902                 attr_tbl : sytb_var_error("ATL_PATTERN", IDX))                 \
01903                 [IDX].fld.flag24
01904 # else
01905 # define ATL_PATTERN(IDX)               attr_tbl[IDX].fld.flag24
01906 # endif
01907 
01908 # ifdef _DEBUG
01909 # define ATL_PERMUTATION(IDX)                                                  \
01910         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01911                 attr_tbl : sytb_var_error("ATL_PERMUTATION", IDX))             \
01912                 [IDX].fld.flag19
01913 # else
01914 # define ATL_PERMUTATION(IDX)           attr_tbl[IDX].fld.flag19
01915 # endif
01916 
01917 # ifdef _DEBUG
01918 # define ATL_PP_FORMAT_TMP(IDX)                                                \
01919         ((AT_OBJ_CLASS(IDX) == Label &&                                        \
01920           attr_tbl[IDX].fld.secondary_info == Lbl_Format) ?                    \
01921                 attr_tbl : sytb_var_error("ATL_PP_FORMAT_TMP", IDX))           \
01922                 [IDX].fld.field4
01923 # else
01924 # define ATL_PP_FORMAT_TMP(IDX)       attr_tbl[IDX].fld.field4
01925 # endif
01926 
01927 # ifdef _DEBUG
01928 # define ATL_PREFERSTREAM(IDX)                                                 \
01929         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01930                 attr_tbl : sytb_var_error("ATL_PREFERSTREAM", IDX))            \
01931                 [IDX].fld.flag41
01932 # else
01933 # define ATL_PREFERSTREAM(IDX)          attr_tbl[IDX].fld.flag41
01934 # endif
01935 
01936 # ifdef _DEBUG
01937 # define ATL_PREFERSTREAM_NOCINV(IDX)                                          \
01938         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01939                 attr_tbl : sytb_var_error("ATL_PREFERSTREAM_NOCINV", IDX))     \
01940                 [IDX].fld.flag43
01941 # else
01942 # define ATL_PREFERSTREAM_NOCINV(IDX)   attr_tbl[IDX].fld.flag43
01943 # endif
01944 
01945 # ifdef _DEBUG
01946 # define ATL_PREFERTASK(IDX)                                                   \
01947         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01948                 attr_tbl : sytb_var_error("ATL_PREFERTASK", IDX))              \
01949                 [IDX].fld.flag20
01950 # else
01951 # define ATL_PREFERTASK(IDX)            attr_tbl[IDX].fld.flag20
01952 # endif
01953 
01954 # ifdef _DEBUG
01955 # define ATL_PREFERVECTOR(IDX)                                                 \
01956         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01957                 attr_tbl : sytb_var_error("ATL_PREFERVECTOR", IDX))            \
01958                 [IDX].fld.flag39
01959 # else
01960 # define ATL_PREFERVECTOR(IDX)          attr_tbl[IDX].fld.flag39
01961 # endif
01962 
01963 # ifdef _DEBUG
01964 # define ATL_SHORTLOOP(IDX)                                                    \
01965         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01966                 attr_tbl : sytb_var_error("ATL_SHORTLOOP", IDX))               \
01967                 [IDX].fld.flag7
01968 # else
01969 # define ATL_SHORTLOOP(IDX)             attr_tbl[IDX].fld.flag7
01970 # endif
01971 
01972 # ifdef _DEBUG
01973 # define ATL_SHORTLOOP128(IDX)                                                 \
01974         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01975                 attr_tbl : sytb_var_error("ATL_SHORTLOOP128", IDX))            \
01976                 [IDX].fld.flag8
01977 # else
01978 # define ATL_SHORTLOOP128(IDX)          attr_tbl[IDX].fld.flag8
01979 # endif
01980 
01981 # ifdef _DEBUG
01982 # define ATL_SPLIT(IDX)                                                        \
01983         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01984                 attr_tbl : sytb_var_error("ATL_SPLIT", IDX))                   \
01985                 [IDX].fld.flag22
01986 # else
01987 # define ATL_SPLIT(IDX)         attr_tbl[IDX].fld.flag22
01988 # endif
01989 
01990 # ifdef _DEBUG
01991 # define ATL_STREAM(IDX)                                                       \
01992         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
01993                 attr_tbl : sytb_var_error("ATL_STREAM", IDX))                  \
01994                 [IDX].fld.flag40
01995 # else
01996 # define ATL_STREAM(IDX)        attr_tbl[IDX].fld.flag40
01997 # endif
01998 
01999 # ifdef _DEBUG
02000 # define ATL_INFORM_ONLY(IDX)                                                  \
02001         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
02002                 attr_tbl : sytb_var_error("ATL_INFORM_ONLY", IDX))             \
02003                 [IDX].fld.flag42
02004 # else
02005 # define ATL_INFORM_ONLY(IDX)   attr_tbl[IDX].fld.flag42
02006 # endif
02007 
02008 # ifdef _DEBUG
02009 # define ATL_TOP_OF_LOOP(IDX)                                                  \
02010         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
02011                 attr_tbl : sytb_var_error("ATL_TOP_OF_LOOP", IDX))             \
02012                 [IDX].fld.flag36
02013 # else
02014 # define ATL_TOP_OF_LOOP(IDX)           attr_tbl[IDX].fld.flag36
02015 # endif
02016 
02017 # ifdef _DEBUG
02018 # define ATL_UNROLL_DIR(IDX)                                                   \
02019         ((AT_OBJ_CLASS(IDX) == Label) ?                                        \
02020                 attr_tbl : sytb_var_error("ATL_UNROLL_DIR", IDX))              \
02021                 [IDX].fld.flag17
02022 # else
02023 # define ATL_UNROLL_DIR(IDX)            attr_tbl[IDX].fld.flag17
02024 # endif
02025 
02026 
02027 
02028 /* Definitions for namelist class */
02029 
02030 # ifdef _DEBUG
02031 # define ATN_FIRST_NAMELIST_IDX(IDX)                                           \
02032         ((AT_OBJ_CLASS(IDX) == Namelist_Grp) ?                                 \
02033                 attr_tbl : sytb_var_error("ATN_FIRST_NAMELIST_IDX", IDX))      \
02034                 [IDX].fld.field13
02035 # else
02036 # define ATN_FIRST_NAMELIST_IDX(IDX)    attr_tbl[IDX].fld.field13
02037 # endif
02038 
02039 # ifdef _DEBUG
02040 # define ATN_LAST_NAMELIST_IDX(IDX)                                            \
02041         ((AT_OBJ_CLASS(IDX) == Namelist_Grp) ?                                 \
02042                 attr_tbl : sytb_var_error("ATN_LAST_NAMELIST_IDX", IDX))       \
02043                 [IDX].fld.field10
02044 # else
02045 # define ATN_LAST_NAMELIST_IDX(IDX)     attr_tbl[IDX].fld.field10
02046 # endif
02047 
02048 # ifdef _DEBUG
02049 # define ATN_NAMELIST_DESC(IDX)                                                \
02050         ((AT_OBJ_CLASS(IDX) == Namelist_Grp) ?                                 \
02051                 attr_tbl : sytb_var_error("ATN_NAMELIST_DESC", IDX))           \
02052                 [IDX].fld.field4
02053 # else
02054 # define ATN_NAMELIST_DESC(IDX)         attr_tbl[IDX].fld.field4
02055 # endif
02056 
02057 # ifdef _DEBUG
02058 # define ATN_NUM_NAMELIST(IDX)                                                 \
02059         ((AT_OBJ_CLASS(IDX) == Namelist_Grp) ?                                 \
02060                 attr_tbl : sytb_var_error("ATN_NUM_NAMELIST", IDX))            \
02061                 [IDX].fld.field5
02062 # else
02063 # define ATN_NUM_NAMELIST(IDX)          attr_tbl[IDX].fld.field5
02064 # endif
02065 
02066 
02067 /* Definitions for program unit class */
02068 
02069 # ifdef _DEBUG
02070 # define ATP_ALIGN(IDX)                                                        \
02071         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02072                 attr_tbl : sytb_var_error("ATP_ALIGN", IDX))                   \
02073                 [IDX].fld.flag32
02074 # else
02075 # define ATP_ALIGN(IDX)                 attr_tbl[IDX].fld.flag32
02076 # endif
02077 
02078 # ifdef _DEBUG
02079 # define ATP_ALL_INTENT_IN(IDX)                                                \
02080         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02081                 attr_tbl : sytb_var_error("ATP_ALL_INTENT_IN", IDX))           \
02082                 [IDX].fld.flag3
02083 # else
02084 # define ATP_ALL_INTENT_IN(IDX)         attr_tbl[IDX].fld.flag3
02085 # endif
02086 
02087 # ifdef _DEBUG
02088 # define ATP_ALT_ENTRY(IDX)                                                    \
02089         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02090                 attr_tbl : sytb_var_error("ATP_ALT_ENTRY", IDX))               \
02091                 [IDX].fld.flag2
02092 # else
02093 # define ATP_ALT_ENTRY(IDX)             attr_tbl[IDX].fld.flag2
02094 # endif
02095 
02096 # ifdef _DEBUG
02097 # define ATP_ARGCHCK_CALL(IDX)                                                 \
02098         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02099                 attr_tbl : sytb_var_error("ATP_ARGCHCK_CALL", IDX))            \
02100                 [IDX].fld.flag24
02101 # else
02102 # define ATP_ARGCHCK_CALL(IDX)          attr_tbl[IDX].fld.flag24
02103 # endif
02104 
02105 # ifdef _DEBUG
02106 # define ATP_ARGCHCK_ENTRY(IDX)                                                \
02107         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02108                 attr_tbl : sytb_var_error("ATP_ARGCHCK_ENTRY", IDX))           \
02109                 [IDX].fld.flag25
02110 # else
02111 # define ATP_ARGCHCK_ENTRY(IDX)         attr_tbl[IDX].fld.flag25
02112 # endif
02113 
02114 # ifdef _DEBUG
02115 # define ATP_CIF_DARG_PROC(IDX)                                                \
02116         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02117                 attr_aux_tbl : attr_aux_var_error("ATP_CIF_DARG_PROC", IDX))   \
02118                 [IDX].fld.flag1
02119 # else
02120 # define ATP_CIF_DARG_PROC(IDX)         attr_aux_tbl[IDX].fld.flag1
02121 # endif
02122 
02123 # ifdef _DEBUG
02124 # define ATP_DCL_EXTERNAL(IDX)                                                 \
02125         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02126                 attr_tbl : sytb_var_error("ATP_DCL_EXTERNAL", IDX))            \
02127                 [IDX].fld.flag10
02128 # else
02129 # define ATP_DCL_EXTERNAL(IDX)          attr_tbl[IDX].fld.flag10
02130 # endif
02131 
02132 # ifdef _DEBUG
02133 # define ATP_DOES_NOT_RETURN(IDX)                                              \
02134         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02135                 attr_tbl : sytb_var_error("ATP_DOES_NOT_RETURN", IDX))         \
02136                 [IDX].fld.flag49
02137 # else
02138 # define ATP_DOES_NOT_RETURN(IDX)   attr_tbl[IDX].fld.flag49
02139 # endif
02140 
02141 # ifdef _DEBUG
02142 # define ATP_DUMMY_PROC_LINK(IDX)                                              \
02143         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02144           attr_tbl[IDX].fld.field2 == Dummy_Proc) ?                            \
02145                 attr_tbl : sytb_var_error("ATP_DUMMY_PROC_LINK", IDX))         \
02146                 [IDX].fld.field4
02147 # else
02148 # define ATP_DUMMY_PROC_LINK(IDX)      attr_tbl[IDX].fld.field4
02149 # endif
02150 
02151 # ifdef _DEBUG
02152 # define ATP_DUPLICATE_INTERFACE_IDX(IDX)                                      \
02153         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02154           attr_aux_tbl:attr_aux_var_error("ATP_DUPLICATE_INTERFACE_IDX",IDX))  \
02155                 [IDX].fld.field4
02156 # else
02157 # define ATP_DUPLICATE_INTERFACE_IDX(IDX)       attr_aux_tbl[IDX].fld.field4
02158 # endif
02159 
02160 /*
02161  March# ifdef _DEBUG
02162 # define ATP_ELEMENTAL(IDX)                                                    \
02163         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02164                 attr_tbl : sytb_var_error("ATP_ELEMENTAL", IDX))               \
02165                 [IDX].fld.flag31
02166 # else
02167 */
02168 # define ATP_ELEMENTAL(IDX)             attr_tbl[IDX].fld.flag31
02169 /* # endif */
02170 
02171 # ifdef _DEBUG
02172 # define ATP_ENTRY_LABEL_SH_IDX(IDX)                                           \
02173         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02174                 attr_aux_tbl:attr_aux_var_error("ATP_ENTRY_LABEL_SH_IDX",IDX)) \
02175                 [IDX].fld.field3
02176 # else
02177 # define ATP_ENTRY_LABEL_SH_IDX(IDX)    attr_aux_tbl[IDX].fld.field3
02178 # endif
02179 
02180 # ifdef _DEBUG
02181 # define ATP_EXT_NAME_IDX(IDX)                                                 \
02182         (AT_OBJ_CLASS(IDX) == Pgm_Unit ?                                       \
02183                 attr_tbl : sytb_var_error("ATP_EXT_NAME_IDX", IDX))            \
02184                 [IDX].fld.field13
02185 # else
02186 # define ATP_EXT_NAME_IDX(IDX)          attr_tbl[IDX].fld.field13
02187 # endif
02188 
02189 # define ATP_EXT_NAME(IDX)            name_pool[ATP_EXT_NAME_IDX(IDX)].name_char
02190 # define ATP_EXT_NAME_LONG(IDX)    &(name_pool[ATP_EXT_NAME_IDX(IDX)].name_long)
02191 # define ATP_EXT_NAME_PTR(IDX)       &name_pool[ATP_EXT_NAME_IDX(IDX)].name_char
02192 
02193 # ifdef _DEBUG
02194 # define ATP_EXT_NAME_LEN(IDX)                                                 \
02195         (AT_OBJ_CLASS(IDX) == Pgm_Unit ?                                       \
02196                 attr_tbl : sytb_var_error("ATP_EXT_NAME_LEN", IDX))            \
02197                 [IDX].fld.field12
02198 # else
02199 # define ATP_EXT_NAME_LEN(IDX)          attr_tbl[IDX].fld.field12
02200 # endif
02201 
02202  /* # ifdef _DEBUG
02203 # define ATP_EXPL_ITRFC(IDX)                                                   \
02204         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02205                 attr_tbl : sytb_var_error("ATP_EXPL_ITRFC", IDX))              \
02206                 [IDX].fld.flag41
02207 # else
02208 */
02209 # define ATP_EXPL_ITRFC(IDX)            attr_tbl[IDX].fld.flag41
02210 /* # endif */
02211 
02212 # ifdef _DEBUG
02213 # define ATP_EXTERNAL_INTRIN(IDX)                                              \
02214         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02215                 attr_tbl : sytb_var_error("ATP_EXTERNAL_INTRIN", IDX))         \
02216                 [IDX].fld.flag43
02217 # else
02218 # define ATP_EXTERNAL_INTRIN(IDX)       attr_tbl[IDX].fld.flag43
02219 # endif
02220 
02221 /* # ifdef _DEBUG
02222 # define ATP_EXTRA_DARG(IDX)                                                   \
02223         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02224                 attr_tbl : sytb_var_error("ATP_EXTRA_DARG", IDX))              \
02225                 [IDX].fld.flag42
02226 # else
02227 */
02228 # define ATP_EXTRA_DARG(IDX)            attr_tbl[IDX].fld.flag42
02229 /* # endif */
02230 
02231 # ifdef _DEBUG
02232 # define ATP_FIRST_IDX(IDX)                                                    \
02233         (((AT_OBJ_CLASS(IDX) == Pgm_Unit) &&                                   \
02234           (attr_tbl[IDX].fld.secondary_info != Module)) ||                     \
02235          (AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
02236                 attr_tbl : sytb_var_error("ATP_FIRST_IDX", IDX))               \
02237                 [IDX].fld.field14
02238 # else
02239 # define ATP_FIRST_IDX(IDX)             attr_tbl[IDX].fld.field14
02240 # endif
02241 
02242 # ifdef _DEBUG
02243 # define ATP_FIRST_SH_IDX(IDX)                                                 \
02244         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02245           attr_tbl[IDX].fld.secondary_info != Module &&                        \
02246           attr_tbl[IDX].fld.field2 != Intrin_Proc) ?                           \
02247                 attr_tbl : sytb_var_error("ATP_FIRST_SH_IDX", IDX))            \
02248                 [IDX].fld.field4
02249 # else
02250 # define ATP_FIRST_SH_IDX(IDX)         attr_tbl[IDX].fld.field4
02251 # endif
02252 
02253 # ifdef _DEBUG
02254 # define ATP_GLOBAL_ATTR_IDX(IDX)                                              \
02255         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02256                 attr_tbl : sytb_var_error("ATP_GLOBAL_ATTR_IDX", IDX))         \
02257                 [IDX].fld.field16
02258 # else
02259 # define ATP_GLOBAL_ATTR_IDX(IDX)       attr_tbl[IDX].fld.field16
02260 # endif
02261 
02262 # ifdef _DEBUG
02263 # define ATP_HAS_ALT_RETURN(IDX)                                               \
02264         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02265                 attr_tbl : sytb_var_error("ATP_HAS_ALT_RETURN", IDX))          \
02266                 [IDX].fld.flag9
02267 # else
02268 # define ATP_HAS_ALT_RETURN(IDX)        attr_tbl[IDX].fld.flag9
02269 # endif
02270 
02271 # ifdef _DEBUG
02272 # define ATP_HAS_OVER_INDEXING(IDX)                                            \
02273         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02274                 attr_tbl : sytb_var_error("ATP_HAS_OVER_INDEXING", IDX))       \
02275                 [IDX].fld.flag26
02276 # else
02277 # define ATP_HAS_OVER_INDEXING(IDX)     attr_tbl[IDX].fld.flag26
02278 # endif
02279 
02280 # ifdef _DEBUG
02281 # define ATP_HAS_TASK_DIRS(IDX)                                                \
02282         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02283                 attr_tbl : sytb_var_error("ATP_HAS_TASK_DIRS", IDX))           \
02284                 [IDX].fld.flag27
02285 # else
02286 # define ATP_HAS_TASK_DIRS(IDX)         attr_tbl[IDX].fld.flag27
02287 # endif
02288 
02289 # ifdef _DEBUG
02290 # define ATP_IMPLICIT_USE_MODULE(IDX)                                          \
02291         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02292              attr_aux_tbl: attr_aux_var_error("ATP_IMPLICIT_USE_MODULE",IDX))  \
02293                 [IDX].fld.flag5
02294 # else
02295 # define ATP_IMPLICIT_USE_MODULE(IDX)   attr_aux_tbl[IDX].fld.flag5
02296 # endif
02297 
02298 # ifdef _DEBUG
02299 # define ATP_IN_INTERFACE_BLK(IDX)                                             \
02300         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02301                 attr_tbl : sytb_var_error("ATP_IN_INTERFACE_BLK", IDX))        \
02302                 [IDX].fld.flag11
02303 # else
02304 # define ATP_IN_INTERFACE_BLK(IDX)      attr_tbl[IDX].fld.flag11
02305 # endif
02306 
02307 # ifdef _DEBUG
02308 # define ATP_IN_UNNAMED_INTERFACE(IDX)                                         \
02309         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02310                 attr_tbl : sytb_var_error("ATP_IN_UNNAMED_INTERFACE", IDX))    \
02311                 [IDX].fld.flag18
02312 # else
02313 # define ATP_IN_UNNAMED_INTERFACE(IDX)  attr_tbl[IDX].fld.flag18
02314 # endif
02315 
02316 # ifdef _DEBUG
02317 # define ATP_INDIRECT_MODULE(IDX)                                              \
02318         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02319                 attr_aux_tbl : attr_aux_var_error("ATP_INDIRECT_MODULE", IDX)) \
02320                 [IDX].fld.flag2
02321 # else
02322 # define ATP_INDIRECT_MODULE(IDX)       attr_aux_tbl[IDX].fld.flag2
02323 # endif
02324 
02325 # ifdef _DEBUG
02326 # define ATP_INLINE_ALWAYS(IDX)                                                \
02327         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02328                 attr_tbl : sytb_var_error("ATP_INLINE_ALWAYS", IDX))           \
02329                 [IDX].fld.flag22
02330 # else
02331 # define ATP_INLINE_ALWAYS(IDX)         attr_tbl[IDX].fld.flag22
02332 # endif
02333 
02334 # ifdef _DEBUG
02335 # define ATP_INLINE_NEVER(IDX)                                                 \
02336         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02337                 attr_tbl : sytb_var_error("ATP_INLINE_NEVER", IDX))            \
02338                 [IDX].fld.flag23
02339 # else
02340 # define ATP_INLINE_NEVER(IDX)          attr_tbl[IDX].fld.flag23
02341 # endif
02342 
02343 /*
02344 March # ifdef _DEBUG
02345 # define ATP_INTERFACE_IDX(IDX)                                                \
02346         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02347           attr_tbl[IDX].fld.field2 == Intrin_Proc) ?                           \
02348                 attr_tbl : sytb_var_error("ATP_INTERFACE_IDX", IDX))           \
02349                 [IDX].fld.field4
02350 # else
02351 */
02352 # define ATP_INTERFACE_IDX(IDX)         attr_tbl[IDX].fld.field4
02353 /* # endif */
02354 
02355 /*
02356  March# ifdef _DEBUG
02357 # define ATP_INTRIN_ENUM(IDX)                                                  \
02358         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02359           attr_tbl[IDX].fld.field2 == Intrin_Proc) ?                           \
02360                 attr_tbl : sytb_var_error("ATP_INTRIN_ENUM", IDX))             \
02361                 [IDX].fld.field10
02362 # else
02363 */
02364 # define ATP_INTRIN_ENUM(IDX)           attr_tbl[IDX].fld.field10
02365 /* # endif */
02366 
02367 # ifdef _DEBUG
02368 # define ATP_IN_CURRENT_COMPILE(IDX)                                           \
02369         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02370                 attr_aux_tbl: attr_aux_var_error("ATP_IN_CURRENT_COMPILE",IDX))\
02371                 [IDX].fld.flag4
02372 # else
02373 # define ATP_IN_CURRENT_COMPILE(IDX)    attr_aux_tbl[IDX].fld.flag4
02374 # endif
02375 
02376 # ifdef _DEBUG
02377 # define ATP_MAY_INLINE(IDX)                                                   \
02378         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02379                 attr_tbl : sytb_var_error("ATP_MAY_INLINE", IDX))              \
02380                 [IDX].fld.flag21
02381 # else
02382 # define ATP_MAY_INLINE(IDX)            attr_tbl[IDX].fld.flag21
02383 # endif
02384 
02385 # ifdef _DEBUG
02386 # define ATP_MOD_PATH_IDX(IDX)                                                 \
02387         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02388           attr_tbl[IDX].fld.secondary_info == Module) ?                        \
02389                 attr_tbl : sytb_var_error("ATP_MOD_PATH_IDX", IDX))            \
02390                 [IDX].fld.field4
02391 # else
02392 # define ATP_MOD_PATH_IDX(IDX)          attr_tbl[IDX].fld.field4
02393 # endif
02394 
02395 # define ATP_MOD_PATH_NAME_PTR(IDX)  &name_pool[ATP_MOD_PATH_IDX(IDX)].name_char
02396 
02397 # ifdef _DEBUG
02398 # define ATP_MOD_PATH_LEN(IDX)                                                 \
02399         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02400           attr_tbl[IDX].fld.secondary_info == Module) ?                        \
02401                 attr_tbl : sytb_var_error("ATP_MOD_PATH_LEN", IDX))            \
02402                 [IDX].fld.field6
02403 # else
02404 # define ATP_MOD_PATH_LEN(IDX)          attr_tbl[IDX].fld.field6
02405 # endif
02406 
02407 # ifdef _DEBUG
02408 # define ATP_MODULE_STR_IDX(IDX)                                               \
02409       ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                       \
02410         attr_tbl[IDX].fld.secondary_info == Module) ?                          \
02411               attr_tbl : sytb_var_error("ATP_MODULE_STR_IDX", IDX))            \
02412               [IDX].fld.field10
02413 # else
02414 # define ATP_MODULE_STR_IDX(IDX)        attr_tbl[IDX].fld.field10
02415 # endif
02416 
02417 /* # ifdef _DEBUG
02418 # define ATP_NAME_IN_STONE(IDX)                                                \
02419         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02420                 attr_tbl : sytb_var_error("ATP_NAME_IN_STONE", IDX))           \
02421                 [IDX].fld.flag20
02422 # else
02423 */
02424 # define ATP_NAME_IN_STONE(IDX)         attr_tbl[IDX].fld.flag20
02425 /* # endif */
02426 
02427 # ifdef _DEBUG
02428 # define ATP_NO_ENTRY_LIST(IDX)                                                \
02429         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02430                 attr_aux_tbl : attr_aux_var_error("ATP_NO_ENTRY_LIST", IDX))   \
02431                 [IDX].fld.field1
02432 # else
02433 # define ATP_NO_ENTRY_LIST(IDX)         attr_aux_tbl[IDX].fld.field1
02434 # endif
02435 
02436 # ifdef _DEBUG
02437 # define ATP_NON_ANSI_INTRIN(IDX)                                              \
02438         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02439                 attr_tbl : sytb_var_error("ATP_NON_ANSI_INTRIN", IDX))         \
02440                 [IDX].fld.flag6
02441 # else
02442 # define ATP_NON_ANSI_INTRIN(IDX)       attr_tbl[IDX].fld.flag6
02443 # endif
02444 
02445 # ifdef _DEBUG
02446 # define ATP_NOSIDE_EFFECTS(IDX)                                               \
02447         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02448                 attr_tbl : sytb_var_error("ATP_NOSIDE_EFFECTS", IDX))          \
02449                 [IDX].fld.flag5
02450 # else
02451 # define ATP_NOSIDE_EFFECTS(IDX)        attr_tbl[IDX].fld.flag5
02452 # endif
02453 
02454 # ifdef _DEBUG
02455 # define ATP_NUM_DARGS(IDX)                                                    \
02456         (((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                    \
02457            attr_tbl[IDX].fld.secondary_info != Module) ||                      \
02458           AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
02459                 attr_tbl : sytb_var_error("ATP_NUM_DARGS", IDX))               \
02460                 [IDX].fld.field6
02461 # else
02462 # define ATP_NUM_DARGS(IDX)             attr_tbl[IDX].fld.field6
02463 # endif
02464 
02465 # ifdef _DEBUG
02466 # define ATP_PARENT_IDX(IDX)                                                   \
02467         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02468           attr_tbl[IDX].fld.secondary_info != Module) ?                        \
02469                 attr_tbl : sytb_var_error("ATP_PARENT_IDX", IDX))              \
02470                 [IDX].fld.field10
02471 # else
02472 # define ATP_PARENT_IDX(IDX)            attr_tbl[IDX].fld.field10
02473 # endif
02474 
02475 # ifdef _DEBUG
02476 # define ATP_PGM_UNIT(IDX)                                                     \
02477         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02478                 attr_tbl : sytb_var_error("ATP_PGM_UNIT", IDX))                \
02479                 [IDX].fld.secondary_info
02480 # else
02481 # define ATP_PGM_UNIT(IDX)              attr_tbl[IDX].fld.secondary_info
02482 # endif
02483 
02484 # ifdef _DEBUG
02485 # define ATP_OPTIONAL_DIR(IDX)                                                 \
02486         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02487                 attr_tbl : sytb_var_error("ATP_OPTIONAL_DIR", IDX))            \
02488                 [IDX].fld.flag44
02489 # else
02490 # define ATP_OPTIONAL_DIR(IDX)         attr_tbl[IDX].fld.flag44
02491 # endif
02492 
02493 /* # ifdef _DEBUG
02494 # define ATP_PROC(IDX)                                                         \
02495         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02496                 attr_tbl : sytb_var_error("ATP_PROC", IDX))                    \
02497                 [IDX].fld.field2
02498 # else
02499 */
02500 # define ATP_PROC(IDX)                  attr_tbl[IDX].fld.field2
02501 /* # endif */
02502 
02503 # ifdef _DEBUG
02504 # define ATP_PURE(IDX)                                                         \
02505         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02506                 attr_tbl : sytb_var_error("ATP_PURE", IDX))                    \
02507                 [IDX].fld.flag30
02508 # else
02509 # define ATP_PURE(IDX)                  attr_tbl[IDX].fld.flag30
02510 # endif
02511 
02512 # ifdef _DEBUG
02513 # define ATP_RECURSIVE(IDX)                                                    \
02514         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02515                 attr_tbl : sytb_var_error("ATP_RECURSIVE", IDX))               \
02516                 [IDX].fld.flag1
02517 # else
02518 # define ATP_RECURSIVE(IDX)             attr_tbl[IDX].fld.flag1
02519 # endif
02520 
02521 /*
02522  March# ifdef _DEBUG
02523 # define ATP_RSLT_IDX(IDX)                                                     \
02524         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02525           ATP_PGM_UNIT(IDX) != Module) ?                                       \
02526                 attr_tbl : sytb_var_error("ATP_RSLT_IDX", IDX))                \
02527                 [IDX].fld.field8
02528 # else
02529 */
02530 # define ATP_RSLT_IDX(IDX)              attr_tbl[IDX].fld.field8
02531 /* # endif */
02532 
02533 # ifdef _DEBUG
02534 # define ATP_RSLT_NAME(IDX)                                                    \
02535         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02536                 attr_tbl : sytb_var_error("ATP_RSLT_NAME", IDX))               \
02537                 [IDX].fld.flag12
02538 # else
02539 # define ATP_RSLT_NAME(IDX)             attr_tbl[IDX].fld.flag12
02540 # endif
02541 
02542 # ifdef _DEBUG
02543 # define ATP_SAVE_ALL(IDX)                                                     \
02544         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02545                 attr_tbl : sytb_var_error("ATP_SAVE_ALL", IDX))                \
02546                 [IDX].fld.flag34
02547 # else
02548 # define ATP_SAVE_ALL(IDX)              attr_tbl[IDX].fld.flag34
02549 # endif
02550 
02551 # ifdef _DEBUG
02552 # define ATP_SCP_ALIVE(IDX)                                                    \
02553         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02554                 attr_tbl : sytb_var_error("ATP_SCP_ALIVE", IDX))               \
02555                 [IDX].fld.flag8
02556 # else
02557 # define ATP_SCP_ALIVE(IDX)             attr_tbl[IDX].fld.flag8
02558 # endif
02559 
02560 # ifdef _DEBUG
02561 # define ATP_SCP_IDX(IDX)                                                      \
02562         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02563                 attr_aux_tbl : attr_aux_var_error("ATP_SCP_IDX", IDX))         \
02564                 [IDX].fld.field5
02565 # else
02566 # define ATP_SCP_IDX(IDX)               attr_aux_tbl[IDX].fld.field5
02567 # endif
02568 
02569 # ifdef _DEBUG
02570 # define ATP_SGI_LOCAL_INLINE(IDX)                                             \
02571         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02572                 attr_aux_tbl : attr_aux_var_error("ATP_SGI_LOCAL_INLINE",IDX)) \
02573                 [IDX].fld.flag6
02574 # else
02575 # define ATP_SGI_LOCAL_INLINE(IDX)      attr_aux_tbl[IDX].fld.flag6
02576 # endif
02577 
02578 # ifdef _DEBUG
02579 # define ATP_SGI_LOCAL_NOINLINE(IDX)                                           \
02580         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02581              attr_aux_tbl : attr_aux_var_error("ATP_SGI_LOCAL_NOINLINE",IDX))  \
02582                 [IDX].fld.flag7
02583 # else
02584 # define ATP_SGI_LOCAL_NOINLINE(IDX)    attr_aux_tbl[IDX].fld.flag7
02585 # endif
02586 
02587 # ifdef _DEBUG
02588 # define ATP_SGI_GLOBAL_INLINE(IDX)                                            \
02589         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02590                 attr_tbl : sytb_var_error("ATP_SGI_GLOBAL_INLINE", IDX))       \
02591                 [IDX].fld.flag35
02592 # else
02593 # define ATP_SGI_GLOBAL_INLINE(IDX)     attr_tbl[IDX].fld.flag35
02594 # endif
02595 
02596 # ifdef _DEBUG
02597 # define ATP_SGI_GLOBAL_NOINLINE(IDX)                                          \
02598         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02599                 attr_tbl : sytb_var_error("ATP_SGI_GLOBAL_NOINLINE", IDX))     \
02600                 [IDX].fld.flag36
02601 # else
02602 # define ATP_SGI_GLOBAL_NOINLINE(IDX)   attr_tbl[IDX].fld.flag36
02603 # endif
02604 
02605 # ifdef _DEBUG
02606 # define ATP_SGI_ROUTINE_INLINE(IDX)                                           \
02607         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02608                 attr_tbl : sytb_var_error("ATP_SGI_ROUTINE_INLINE", IDX))      \
02609                 [IDX].fld.flag38
02610 # else
02611 # define ATP_SGI_ROUTINE_INLINE(IDX)    attr_tbl[IDX].fld.flag38
02612 # endif
02613 
02614 # ifdef _DEBUG
02615 # define ATP_SGI_ROUTINE_NOINLINE(IDX)                                         \
02616         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02617                 attr_tbl : sytb_var_error("ATP_SGI_ROUTINE_NOINLINE", IDX))    \
02618                 [IDX].fld.flag37
02619 # else
02620 # define ATP_SGI_ROUTINE_NOINLINE(IDX)  attr_tbl[IDX].fld.flag37
02621 # endif
02622 
02623 # ifdef _DEBUG
02624 # define ATP_STACK_DIR(IDX)                                                    \
02625         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02626                 attr_tbl : sytb_var_error("ATP_STACK_DIR", IDX))               \
02627                 [IDX].fld.flag7
02628 # else
02629 # define ATP_STACK_DIR(IDX)             attr_tbl[IDX].fld.flag7
02630 # endif
02631 
02632 # ifdef _DEBUG
02633 # define ATP_SYMMETRIC(IDX)                                                    \
02634         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02635                 attr_tbl : sytb_var_error("ATP_SYMMETRIC", IDX))               \
02636                 [IDX].fld.flag28
02637 # else
02638 # define ATP_SYMMETRIC(IDX)             attr_tbl[IDX].fld.flag28
02639 # endif
02640 
02641 # ifdef _DEBUG
02642 # define ATP_SYSTEM_MODULE(IDX)                                                \
02643       ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                       \
02644          attr_aux_tbl : attr_aux_var_error("ATP_SYSTEM_MODULE", IDX))          \
02645               [IDX].fld.flag3
02646 # else
02647 # define ATP_SYSTEM_MODULE(IDX)         attr_aux_tbl[IDX].fld.flag3
02648 # endif
02649 
02650 # ifdef _DEBUG
02651 # define ATP_TASK_SHARED(IDX)                                                  \
02652         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02653                 attr_tbl : sytb_var_error("ATP_TASK_SHARED", IDX))             \
02654                 [IDX].fld.flag19
02655 # else
02656 # define ATP_TASK_SHARED(IDX)   attr_tbl[IDX].fld.flag19
02657 # endif
02658 
02659 # ifdef _DEBUG
02660 # define ATP_USE_LIST(IDX)                                                     \
02661         ((AT_OBJ_CLASS(IDX) == Pgm_Unit &&                                     \
02662           attr_tbl[IDX].fld.secondary_info == Module) ?                        \
02663                 attr_aux_tbl : attr_aux_var_error("ATP_USE_LIST", IDX))        \
02664                 [IDX].fld.field2
02665 # else
02666 # define ATP_USE_LIST(IDX)              attr_aux_tbl[IDX].fld.field2
02667 # endif
02668 
02669 # ifdef _DEBUG
02670 # define ATP_USE_TYPE(IDX)                                                     \
02671         (AT_OBJ_CLASS(IDX) == Pgm_Unit ?                                       \
02672                 attr_tbl : sytb_var_error("ATP_USE_TYPE", IDX))                \
02673                 [IDX].fld.field3
02674 # else
02675 # define ATP_USE_TYPE(IDX)                      attr_tbl[IDX].fld.field3
02676 # endif
02677 
02678 # ifdef _DEBUG
02679 # define ATP_USES_EREGS(IDX)                                                   \
02680         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02681                 attr_tbl : sytb_var_error("ATP_USES_EREGS", IDX))              \
02682                 [IDX].fld.flag29
02683 # else
02684 # define ATP_USES_EREGS(IDX)            attr_tbl[IDX].fld.flag29
02685 # endif
02686 
02687 # ifdef _DEBUG
02688 # define ATP_VFUNCTION(IDX)                                                    \
02689         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02690                 attr_tbl : sytb_var_error("ATP_VFUNCTION", IDX))               \
02691                 [IDX].fld.flag4
02692 # else
02693 # define ATP_VFUNCTION(IDX)             attr_tbl[IDX].fld.flag4
02694 # endif 
02695 
02696 /* add a flag for coarray fortran "cosubroutine" and "cofunction" */
02697 # ifdef _DEBUG 
02698 # define ATP_COARRAY_CONCURRENT(IDX)                                           \
02699         ((AT_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
02700                 attr_tbl : sytb_var_error("ATP_COARRAY_CONCURRENT", IDX))      \
02701                 [IDX].fld.is_concurrent
02702 # else
02703 # define ATP_COARRAY_CONCURRENT(IDX)    attr_tbl[IDX].fld.is_concurrent
02704 # endif 
02705 
02706 
02707 
02708 
02709 
02710 /* Symbol table definitions for statement functions. */
02711 
02712 # ifdef _DEBUG
02713 # define ATS_SF_ACTIVE(IDX)                                                    \
02714         ((AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
02715                 attr_tbl : sytb_var_error("ATS_SF_ACTIVE", IDX))               \
02716                 [IDX].fld.flag1
02717 # else
02718 # define ATS_SF_ACTIVE(IDX)             attr_tbl[IDX].fld.flag1
02719 # endif
02720 
02721 # ifdef _DEBUG
02722 # define ATS_SF_FLD(IDX)                                                       \
02723         ((AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
02724                 attr_tbl : sytb_var_error("ATS_SF_FLD", IDX))                  \
02725                 [IDX].fld.secondary_info
02726 # else
02727 # define ATS_SF_FLD(IDX)                attr_tbl[IDX].fld.secondary_info
02728 # endif
02729 
02730 # ifdef _DEBUG
02731 # define ATS_SF_IDX(IDX)                                                       \
02732         ((AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
02733                 attr_tbl : sytb_var_error("ATS_SF_IDX", IDX))                  \
02734                 [IDX].fld.field4
02735 # else
02736 # define ATS_SF_IDX(IDX)                attr_tbl[IDX].fld.field4
02737 # endif
02738 
02739 # ifdef _DEBUG
02740 # define ATS_SF_SEMANTICS_DONE(IDX)                                            \
02741         ((AT_OBJ_CLASS(IDX) == Stmt_Func) ?                                    \
02742                 attr_tbl : sytb_var_error("ATS_SF_SEMANTICS_DONE", IDX))       \
02743                 [IDX].fld.flag2
02744 # else
02745 # define ATS_SF_SEMANTICS_DONE(IDX)     attr_tbl[IDX].fld.flag2
02746 # endif
02747 
02748 
02749 /* definitions for derived types - ATT */
02750 
02751 /* Remove in 5.0 */
02752 
02753 # ifdef _DEBUG
02754 # define OLD_ATT_16_BIT_ALIGN(IDX)                                             \
02755         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02756                 attr_tbl : sytb_var_error("OLD_ATT_16_BIT_ALIGN", IDX))        \
02757                 [IDX].fld.flag27
02758 # else
02759 # define OLD_ATT_16_BIT_ALIGN(IDX)      attr_tbl[IDX].fld.flag27
02760 # endif
02761 
02762 # ifdef _DEBUG
02763 # define OLD_ATT_8_BIT_ALIGN(IDX)                                              \
02764         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02765                 attr_tbl : sytb_var_error("OLD_ATT_8_BIT_ALIGN", IDX))         \
02766                 [IDX].fld.flag28
02767 # else
02768 # define OLD_ATT_8_BIT_ALIGN(IDX)       attr_tbl[IDX].fld.flag28
02769 # endif
02770 
02771 # ifdef _DEBUG
02772 # define OLD_ATT_HALF_WORD_ALIGN(IDX)                                          \
02773         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02774                 attr_tbl : sytb_var_error("OLD_ATT_HALF_WORD_ALIGN", IDX))     \
02775                 [IDX].fld.flag26
02776 # else
02777 # define OLD_ATT_HALF_WORD_ALIGN(IDX)   attr_tbl[IDX].fld.flag26
02778 # endif
02779 
02780 
02781 /* Since even without any variable associate with a derived type,we still
02782  * need a type table entry,we add  ATT_TY_IDX here to record the corresponding
02783  * type table entry in the attr_tbl entry. ---fzhao
02784  */
02785 
02786 # ifdef _DEBUG
02787 # define ATT_TY_IDX(IDX)                                                    \
02788         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02789                 attr_tbl : sytb_var_error("ATT_TY_IDX", IDX))               \
02790                 [IDX].fld.field5
02791 # else
02792 # define ATT_TY_IDX(IDX)             attr_tbl[IDX].fld.field5
02793 # endif
02794 
02795 
02796 # ifdef _DEBUG
02797 # define ATT_ALIGNMENT(IDX)                                                    \
02798         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02799                 attr_tbl : sytb_var_error("ATT_ALIGNMENT", IDX))               \
02800                 [IDX].fld.field8
02801 # else
02802 # define ATT_ALIGNMENT(IDX)             attr_tbl[IDX].fld.field8
02803 # endif
02804 
02805 # ifdef _DEBUG
02806 # define ATT_CHAR_CPNT(IDX)                                                    \
02807         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02808                 attr_tbl : sytb_var_error("ATT_CHAR_CPNT", IDX))               \
02809                 [IDX].fld.flag22
02810 # else
02811 # define ATT_CHAR_CPNT(IDX)             attr_tbl[IDX].fld.flag22
02812 # endif
02813 
02814 # ifdef _DEBUG
02815 # define ATT_CHAR_SEQ(IDX)                                                     \
02816         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02817                 attr_tbl : sytb_var_error("ATT_CHAR_SEQ", IDX))                \
02818                 [IDX].fld.flag20
02819 # else
02820 # define ATT_CHAR_SEQ(IDX)              attr_tbl[IDX].fld.flag20
02821 # endif
02822 
02823 # ifdef _DEBUG
02824 # define ATT_CIF_DT_ID(IDX)                                                    \
02825         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02826                 attr_aux_tbl : attr_aux_var_error("ATT_CIF_DT_ID", IDX))       \
02827                 [IDX].fld.field4
02828 # else
02829 # define ATT_CIF_DT_ID(IDX)             attr_aux_tbl[IDX].fld.field4
02830 # endif
02831 
02832 # ifdef _DEBUG
02833 # define ATT_DALIGN_ME(IDX)                                                    \
02834         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02835                 attr_tbl : sytb_var_error("ATT_DALIGN_ME", IDX))               \
02836                 [IDX].fld.flag24
02837 # else
02838 # define ATT_DALIGN_ME(IDX)             attr_tbl[IDX].fld.flag24
02839 # endif
02840 
02841 # ifdef _DEBUG
02842 # define ATT_DCL_NUMERIC_SEQ(IDX)                                              \
02843         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02844                 attr_tbl : sytb_var_error("ATT_DCL_NUMERIC_SEQ", IDX))         \
02845                 [IDX].fld.flag25
02846 # else
02847 # define ATT_DCL_NUMERIC_SEQ(IDX)       attr_tbl[IDX].fld.flag25
02848 # endif
02849 
02850 # ifdef _DEBUG
02851 # define ATT_DEFAULT_INITIALIZED(IDX)                                          \
02852         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02853                 attr_tbl : sytb_var_error("ATT_DEFAULT_INITIALIZED", IDX))     \
02854                 [IDX].fld.flag29
02855 # else
02856 # define ATT_DEFAULT_INITIALIZED(IDX)   attr_tbl[IDX].fld.flag29
02857 # endif
02858 
02859 # ifdef _DEBUG
02860 # define ATT_FIRST_CPNT_IDX(IDX)                                               \
02861         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02862                 attr_tbl : sytb_var_error("ATT_FIRST_CPNT_IDX", IDX))          \
02863                 [IDX].fld.field10
02864 # else
02865 # define ATT_FIRST_CPNT_IDX(IDX)        attr_tbl[IDX].fld.field10
02866 # endif
02867 
02868 # ifdef _DEBUG
02869 # define ATT_GLOBAL_TYPE_IDX(IDX)                                              \
02870         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02871                 attr_tbl : sytb_var_error("ATT_GLOBAL_TYPE_IDX", IDX))         \
02872                 [IDX].fld.field6
02873 # else
02874 # define ATT_GLOBAL_TYPE_IDX(IDX)       attr_tbl[IDX].fld.field6
02875 # endif
02876 
02877 # ifdef _DEBUG
02878 # define ATT_LABEL_LIST_IDX(IDX)                                               \
02879         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02880                 attr_aux_tbl : attr_aux_var_error("ATT_LABEL_LIST_IDX", IDX))  \
02881                 [IDX].fld.field2
02882 # else
02883 # define ATT_LABEL_LIST_IDX(IDX)        attr_aux_tbl[IDX].fld.field2
02884 # endif
02885 
02886 # ifdef _DEBUG
02887 # define ATT_NON_DEFAULT_CPNT(IDX)                                             \
02888         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02889                 attr_tbl : sytb_var_error("ATT_NON_DEFAULT_CPNT", IDX))        \
02890                 [IDX].fld.flag23
02891 # else
02892 # define ATT_NON_DEFAULT_CPNT(IDX)              attr_tbl[IDX].fld.flag23
02893 # endif
02894 
02895 
02896 /* fzhao from 5==>_m*/
02897 # ifdef _DEBUG
02898 # define ATT_NUM_CPNTS(IDX)                                                    \
02899         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02900                 attr_tbl : sytb_var_error("ATT_NUM_CPNTS", IDX))               \
02901                 [IDX].fld.field_m
02902 # else
02903 # define ATT_NUM_CPNTS(IDX)             attr_tbl[IDX].fld.field_m
02904 # endif
02905 
02906 # ifdef _DEBUG
02907 # define ATT_NUMERIC_CPNT(IDX)                                                 \
02908         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02909                 attr_tbl : sytb_var_error("ATT_NUMERIC_CPNT", IDX))            \
02910                 [IDX].fld.flag21
02911 # else
02912 # define ATT_NUMERIC_CPNT(IDX)          attr_tbl[IDX].fld.flag21
02913 # endif
02914 
02915 # ifdef _DEBUG
02916 # define ATT_POINTER_CPNT(IDX)                                                 \
02917         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02918                 attr_tbl : sytb_var_error("ATT_POINTER_CPNT", IDX))            \
02919                 [IDX].fld.flag19
02920 # else
02921 # define ATT_POINTER_CPNT(IDX)          attr_tbl[IDX].fld.flag19
02922 # endif
02923 
02924 # ifdef _DEBUG
02925 # define ATT_PRIVATE_CPNT(IDX)                                                 \
02926         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02927                 attr_tbl : sytb_var_error("ATT_PRIVATE_CPNT", IDX))            \
02928                 [IDX].fld.flag17
02929 # else
02930 # define ATT_PRIVATE_CPNT(IDX)          attr_tbl[IDX].fld.flag17
02931 # endif
02932 
02933 # ifdef _DEBUG
02934 # define ATT_SCP_IDX(IDX)                                                      \
02935         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02936                 attr_aux_tbl : attr_aux_var_error("ATT_SCP_IDX", IDX))         \
02937                 [IDX].fld.field1
02938 # else
02939 # define ATT_SCP_IDX(IDX)               attr_aux_tbl[IDX].fld.field1
02940 # endif
02941 
02942 # ifdef _DEBUG
02943 # define ATT_SEQUENCE_SET(IDX)                                                 \
02944         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02945                 attr_tbl : sytb_var_error("ATT_SEQUENCE_SET", IDX))            \
02946                 [IDX].fld.flag18
02947 # else
02948 # define ATT_SEQUENCE_SET(IDX)          attr_tbl[IDX].fld.flag18
02949 # endif
02950 
02951 # ifdef _DEBUG
02952 # define ATT_STRUCT_BIT_LEN_FLD(IDX)                                           \
02953         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02954                 attr_tbl : sytb_var_error("ATT_STRUCT_BIT_LEN_FLD", IDX))      \
02955                 [IDX].fld2.field22
02956 # else
02957 # define ATT_STRUCT_BIT_LEN_FLD(IDX)            attr_tbl[IDX].fld2.field22
02958 # endif
02959 
02960 # ifdef _DEBUG
02961 # define ATT_STRUCT_BIT_LEN_IDX(IDX)                                           \
02962         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02963                 attr_tbl : sytb_var_error("ATT_STRUCT_BIT_LEN_IDX", IDX))      \
02964                 [IDX].fld.field13
02965 # else
02966 # define ATT_STRUCT_BIT_LEN_IDX(IDX)            attr_tbl[IDX].fld.field13
02967 # endif 
02968 
02969 # ifdef _DEBUG
02970 # define ATT_UNIQUE_ID(IDX)                                                    \
02971         ((AT_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
02972                 attr_aux_tbl : attr_aux_var_error("ATT_UNIQUE_ID", IDX))       \
02973                 [IDX].fld.field3
02974 # else
02975 # define ATT_UNIQUE_ID(IDX)             attr_aux_tbl[IDX].fld.field3
02976 # endif
02977 
02978 
02979 
02980 /*  ATTR LIST TABLE */
02981 
02982 # define AL_ATTR_IDX(IDX)               attr_list_tbl[IDX].attr_idx
02983 # define AL_EQ_IDX(IDX)                 attr_list_tbl[IDX].attr_idx
02984 # define AL_NEXT_IDX(IDX)               attr_list_tbl[IDX].next_idx
02985 # define AL_IDX_IS_EQ(IDX)              attr_list_tbl[IDX].flag1
02986 # define AL_FREE(IDX)                   attr_list_tbl[IDX].flag2
02987 
02988 /* prev_idx field is a special field available for specific */
02989 /* uses and it is overloaded.  If you use it, give it a     */
02990 /* specific name for its use and be careful.                */
02991 
02992 # define AL_ENTRY_COUNT(IDX)            attr_list_tbl[IDX].prev_idx
02993 # define AL_PREV_MODULE_IDX(IDX)        attr_list_tbl[IDX].prev_idx
02994 
02995 
02996 /*  BOUNDS TABLE - Common */
02997 
02998 # define BD_ARRAY_CLASS(IDX)            bounds_tbl[IDX].hdr.array_class
02999 # define BD_ARRAY_SIZE(IDX)             bounds_tbl[IDX].hdr.array_size
03000 # define BD_COLUMN_NUM(IDX)             bounds_tbl[IDX].hdr.column_num
03001 # define BD_DCL_ERR(IDX)                bounds_tbl[IDX].hdr.error
03002 # define BD_DIST_NTRY(IDX)              bounds_tbl[IDX].hdr.dist_ntry
03003 # define BD_DISTRIBUTE_RESHAPE(IDX)     bounds_tbl[IDX].hdr.dist_reshape
03004 # define BD_GLOBAL_IDX(IDX)             bounds_tbl[IDX].hdr.global_idx
03005 # define BD_LEN_FLD(IDX)                bounds_tbl[IDX].hdr.len_fld
03006 # define BD_LEN_IDX(IDX)                bounds_tbl[IDX].hdr.len_idx
03007 # define BD_LINE_NUM(IDX)               bounds_tbl[IDX].hdr.line_num
03008 # define BD_NEXT_FREE_NTRY(IDX)         bounds_tbl[IDX].hdr.next_free_ntry
03009 # define BD_NTRY_SIZE(IDX)              bounds_tbl[IDX].hdr.ntry_size
03010 # define BD_RANK(IDX)                   bounds_tbl[IDX].hdr.rank
03011 # define BD_RESOLVED(IDX)               bounds_tbl[IDX].hdr.resolved
03012 # define BD_USED_NTRY(IDX)              bounds_tbl[IDX].hdr.used_ntry
03013 # define BD_FLOW_DEPENDENT(IDX)         bounds_tbl[IDX].hdr.flow_dep
03014 
03015 
03016 /*  BOUNDS TABLE - Dimensions */
03017 
03018 # ifdef _DEBUG
03019 # define BD_LB_FLD(IDX,DIM)                                                    \
03020         ((!BD_DIST_NTRY(IDX)) ?                                                \
03021                 bounds_tbl : bd_var_error("BD_LB_FLD", IDX))                   \
03022                 [(IDX)+(DIM)].dim.lb_fld
03023 # else
03024 # define BD_LB_FLD(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.lb_fld
03025 # endif
03026 
03027 # ifdef _DEBUG
03028 # define BD_LB_IDX(IDX,DIM)                                                    \
03029         ((!BD_DIST_NTRY(IDX)) ?                                                \
03030                 bounds_tbl : bd_var_error("BD_LB_IDX", IDX))                   \
03031                 [(IDX)+(DIM)].dim.lb_idx
03032 # else
03033 # define BD_LB_IDX(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.lb_idx
03034 # endif
03035 
03036 # ifdef _DEBUG
03037 # define BD_SM_IDX(IDX,DIM)                                                    \
03038         ((!BD_DIST_NTRY(IDX)) ?                                                \
03039                 bounds_tbl : bd_var_error("BD_SM_IDX", IDX))                   \
03040                 [(IDX)+(DIM)].dim.sm_idx
03041 # else
03042 # define BD_SM_IDX(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.sm_idx
03043 # endif
03044 
03045 # ifdef _DEBUG
03046 # define BD_SM_FLD(IDX,DIM)                                                    \
03047         ((!BD_DIST_NTRY(IDX)) ?                                                \
03048                 bounds_tbl : bd_var_error("BD_SM_FLD", IDX))                   \
03049                 [(IDX)+(DIM)].dim.sm_fld
03050 # else
03051 # define BD_SM_FLD(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.sm_fld
03052 # endif
03053 
03054 # ifdef _DEBUG
03055 # define BD_UB_FLD(IDX,DIM)                                                    \
03056         ((!BD_DIST_NTRY(IDX)) ?                                                \
03057                 bounds_tbl : bd_var_error("BD_UB_FLD", IDX))                   \
03058                 [(IDX)+(DIM)].dim.ub_fld
03059 # else
03060 # define BD_UB_FLD(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.ub_fld
03061 # endif
03062 
03063 # ifdef _DEBUG
03064 # define BD_UB_IDX(IDX,DIM)                                                    \
03065         ((!BD_DIST_NTRY(IDX)) ?                                                \
03066                 bounds_tbl : bd_var_error("BD_UB_IDX", IDX))                   \
03067                 [(IDX)+(DIM)].dim.ub_idx
03068 # else
03069 # define BD_UB_IDX(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.ub_idx
03070 # endif
03071 
03072 # ifdef _DEBUG
03073 # define BD_XT_FLD(IDX,DIM)                                                    \
03074         ((!BD_DIST_NTRY(IDX)) ?                                                \
03075                 bounds_tbl : bd_var_error("BD_XT_FLD", IDX))                   \
03076                 [(IDX)+(DIM)].dim.xt_fld
03077 # else
03078 # define BD_XT_FLD(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.xt_fld
03079 # endif
03080 
03081 # ifdef _DEBUG
03082 # define BD_XT_IDX(IDX,DIM)                                                    \
03083         ((!BD_DIST_NTRY(IDX)) ?                                                \
03084                 bounds_tbl : bd_var_error("BD_XT_IDX", IDX))                   \
03085                 [(IDX)+(DIM)].dim.xt_idx
03086 # else
03087 # define BD_XT_IDX(IDX,DIM)             bounds_tbl[(IDX)+(DIM)].dim.xt_idx
03088 # endif
03089 
03090 /*  BOUNDS TABLE - Distribution Info */
03091 
03092 # ifdef _DEBUG
03093 # define BD_CYCLIC_FLD(IDX,DIM)                                                \
03094         ((BD_DIST_NTRY(IDX)) ?                                                 \
03095                 bounds_tbl : bd_var_error("BD_CYCLIC_FLD", IDX))               \
03096                 [(IDX)+(DIM)].dist.cyclic_fld
03097 # else
03098 # define BD_CYCLIC_FLD(IDX,DIM)         bounds_tbl[(IDX)+(DIM)].dist.cyclic_fld
03099 # endif
03100 
03101 # ifdef _DEBUG
03102 # define BD_CYCLIC_IDX(IDX,DIM)                                                \
03103         ((BD_DIST_NTRY(IDX)) ?                                                 \
03104                 bounds_tbl : bd_var_error("BD_CYCLIC_IDX", IDX))               \
03105                 [(IDX)+(DIM)].dist.cyclic_idx
03106 # else
03107 # define BD_CYCLIC_IDX(IDX,DIM)         bounds_tbl[(IDX)+(DIM)].dist.cyclic_idx
03108 # endif
03109 
03110 # ifdef _DEBUG
03111 # define BD_ONTO_FLD(IDX,DIM)                                                  \
03112         ((BD_DIST_NTRY(IDX)) ?                                                 \
03113                 bounds_tbl : bd_var_error("BD_ONTO_FLD", IDX))                 \
03114                 [(IDX)+(DIM)].dist.onto_fld
03115 # else
03116 # define BD_ONTO_FLD(IDX,DIM)           bounds_tbl[(IDX)+(DIM)].dist.onto_fld
03117 # endif
03118 
03119 # ifdef _DEBUG
03120 # define BD_ONTO_IDX(IDX,DIM)                                                  \
03121         ((BD_DIST_NTRY(IDX)) ?                                                 \
03122                 bounds_tbl : bd_var_error("BD_ONTO_IDX", IDX))                 \
03123                 [(IDX)+(DIM)].dist.onto_idx
03124 # else
03125 # define BD_ONTO_IDX(IDX,DIM)           bounds_tbl[(IDX)+(DIM)].dist.onto_idx
03126 # endif
03127 
03128 # ifdef _DEBUG
03129 # define BD_DISTRIBUTION(IDX,DIM)                                              \
03130         ((BD_DIST_NTRY(IDX)) ?                                                 \
03131                 bounds_tbl : bd_var_error("BD_DISTRIBUTION", IDX))             \
03132                 [(IDX)+(DIM)].dist.distribution
03133 # else
03134 # define BD_DISTRIBUTION(IDX,DIM)    bounds_tbl[(IDX)+(DIM)].dist.distribution
03135 # endif
03136 
03137 
03138 /* CONSTANT TABLE, CONSTANT SEARCH TABLE and CONSTANT POOL definitions */
03139 
03140 # define CS_CN_IDX(IDX)                 const_search_tbl[IDX].const_tbl_idx
03141 
03142 # define CN_BOZ_CONSTANT(IDX)           const_tbl[IDX].boz_constant
03143 # define CN_BOOLEAN_CONSTANT(IDX)       const_tbl[IDX].boolean_constant
03144 # define CN_HOLLERITH_ENDIAN(IDX)       const_tbl[IDX].hollerith_endian
03145 # define CN_HOLLERITH_TYPE(IDX)         const_tbl[IDX].hollerith_fld
03146 # define CN_EXTRA_ZERO_WORD(IDX)        const_tbl[IDX].extra_zero_word
03147 # define CN_POOL_IDX(IDX)               const_tbl[IDX].const_pool_idx
03148 # define CN_CONST(IDX)                  const_pool[CN_POOL_IDX(IDX)]
03149 # define CN_TYPE_IDX(IDX)               const_tbl[IDX].type_idx
03150 # define CN_LEFT_CHILD(IDX)             const_tbl[IDX].left_child
03151 # define CN_RIGHT_CHILD(IDX)            const_tbl[IDX].right_child
03152 # define CN_BALANCE_FACTOR(IDX)         const_tbl[IDX].balance_factor
03153 
03154 # define CP_CONSTANT(IDX)               const_pool[IDX]
03155 
03156 
03157 /* EQUIV TABLE */
03158 
03159 # define EQ_ATTR_IDX(IDX)               equiv_tbl[IDX].attr_idx
03160 # define EQ_COLUMN_NUM(IDX)             equiv_tbl[IDX].column_num
03161 # define EQ_DALIGN_ME(IDX)              equiv_tbl[IDX].dalign_me
03162 # define EQ_DALIGN_SHIFT(IDX)           equiv_tbl[IDX].dalign_shift
03163 # define EQ_DO_NOT_DALIGN(IDX)          equiv_tbl[IDX].do_not_dalign
03164 # define EQ_ERROR(IDX)                  equiv_tbl[IDX].error
03165 # define EQ_GRP_END_IDX(IDX)            equiv_tbl[IDX].grp_end_idx
03166 # define EQ_GRP_IDX(IDX)                equiv_tbl[IDX].grp_idx
03167 # define EQ_LINE_NUM(IDX)               equiv_tbl[IDX].line_num
03168 # define EQ_LIST_IDX(IDX)               equiv_tbl[IDX].list_idx
03169 # define EQ_MERGED(IDX)                 equiv_tbl[IDX].merged
03170 # define EQ_NEXT_EQUIV_GRP(IDX)         equiv_tbl[IDX].next_equiv_grp
03171 # define EQ_NEXT_EQUIV_OBJ(IDX)         equiv_tbl[IDX].next_equiv_obj
03172 # define EQ_OFFSET_FLD(IDX)             equiv_tbl[IDX].fld
03173 # define EQ_OFFSET_IDX(IDX)             equiv_tbl[IDX].offset_idx
03174 # define EQ_OPND_FLD(IDX)               equiv_tbl[IDX].opnd_fld
03175 # define EQ_OPND_IDX(IDX)               equiv_tbl[IDX].opnd_idx
03176 # define EQ_SEARCH_DONE(IDX)            equiv_tbl[IDX].search_done
03177 # define EQ_SEMANTICS_DONE(IDX)         equiv_tbl[IDX].semantics_done
03178 # define EQ_SUBSTRINGED(IDX)            equiv_tbl[IDX].substring
03179 
03180 
03181 /* FILE PATH TABLE */
03182 
03183 # define FP_CIF_ID(IDX)                 file_path_tbl[IDX].cif_id
03184 # define FP_CLASS(IDX)                  file_path_tbl[IDX].file_class
03185 # define FP_TMP_FILE(IDX)               file_path_tbl[IDX].tmp_file
03186 # define FP_FILE_IDX(IDX)               file_path_tbl[IDX].file_idx
03187 # define FP_MODULE_IDX(IDX)             file_path_tbl[IDX].next_idx
03188 # define FP_MODULE_INLINE_IDX(IDX)      file_path_tbl[IDX].module_inline_idx
03189 # define FP_NAME_IDX(IDX)               file_path_tbl[IDX].name_idx
03190 # define FP_NAME_LEN(IDX)               file_path_tbl[IDX].name_len
03191 # define FP_NAME(IDX)                   (str_pool[FP_NAME_IDX(IDX)].name_char)
03192 # define FP_NAME_LONG(IDX)             &(str_pool[FP_NAME_IDX(IDX)].name_long)
03193 # define FP_NAME_PTR(IDX)              &str_pool[FP_NAME_IDX(IDX)].name_char
03194 # define FP_NEXT_FILE_IDX(IDX)          file_path_tbl[IDX].next_file_idx
03195 # define FP_OFFSET(IDX)                 file_path_tbl[IDX].offset
03196 # define FP_OUTPUT_TO_O(IDX)            file_path_tbl[IDX].output_to_o
03197 # define FP_SRCH_THE_FILE(IDX)          file_path_tbl[IDX].srch_the_file
03198 # define FP_SYSTEM_FILE(IDX)            file_path_tbl[IDX].system_file
03199 
03200 /*  GLOBAL ATTRIBUTE TABLE */
03201 
03202 /* Common attribute definitions for all object classes */
03203 
03204 # define GA_COMPILER_GEND(IDX)          global_attr_tbl[IDX].fld.compiler_gend
03205 # define GA_DEF_LINE(IDX)               global_attr_tbl[IDX].fld.def_line
03206 # define GA_DEF_COLUMN(IDX)             global_attr_tbl[IDX].fld.def_column
03207 # define GA_DEFINED(IDX)                global_attr_tbl[IDX].fld.defined
03208 # define GA_MODULE_IDX(IDX)             global_attr_tbl[IDX].fld.module_idx
03209 # define GA_NAME_IDX(IDX)               global_attr_tbl[IDX].fld.name_idx
03210 # define GA_NAME_LEN(IDX)               global_attr_tbl[IDX].fld.length
03211 # define GA_OBJ_CLASS(IDX)              global_attr_tbl[IDX].fld.object_class
03212 # define GA_OBJ_NAME_LONG(IDX)          &(str_pool[GA_NAME_IDX(IDX)].name_long)
03213 # define GA_OBJ_NAME_PTR(IDX)           &str_pool[GA_NAME_IDX(IDX)].name_char
03214 # define GA_OPTIONAL(IDX)               global_attr_tbl[IDX].fld.optional
03215 # define GA_ORIG_NAME_LEN(IDX)          global_attr_tbl[IDX].fld.orig_name_len
03216 # define GA_ORIG_NAME_IDX(IDX)          global_attr_tbl[IDX].fld.orig_name_idx
03217 # define GA_ORIG_NAME_PTR(IDX)        &str_pool[GA_ORIG_NAME_IDX(IDX)].name_char
03218 # define GA_ORIG_NAME_LONG(IDX)     &(str_pool[GA_ORIG_NAME_IDX(IDX)].name_long)
03219 # define GA_REFERENCED(IDX)             global_attr_tbl[IDX].fld.referenced
03220 # define GA_USE_ASSOCIATED(IDX)         global_attr_tbl[IDX].fld.use_associated
03221 
03222 /* Definitions for data object class */
03223 
03224 # ifdef _DEBUG
03225 # define GAD_ARRAY_ELEMENT_REF(IDX)                                            \
03226         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03227                 global_attr_tbl : ga_var_error("GAD_ARRAY_ELEMENT_REF", IDX))  \
03228                 [IDX].fld.flag5
03229 # else
03230 # define GAD_ARRAY_ELEMENT_REF(IDX)     global_attr_tbl[IDX].fld.flag5
03231 # endif
03232 
03233 # ifdef _DEBUG
03234 # define GAD_ARRAY_IDX(IDX)                                                    \
03235         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03236                 global_attr_tbl : ga_var_error("GAD_ARRAY_IDX", IDX))          \
03237                 [IDX].fld.field3
03238 # else
03239 # define GAD_ARRAY_IDX(IDX)             global_attr_tbl[IDX].fld.field3
03240 # endif
03241 
03242 # ifdef _DEBUG
03243 # define GAD_ASSUMED_SHAPE_ARRAY(IDX)                                          \
03244         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03245                 global_attr_tbl : ga_var_error("GAD_ASSUMED_SHAPE_ARRAY", IDX))\
03246                 [IDX].fld.flag2
03247 # else
03248 # define GAD_ASSUMED_SHAPE_ARRAY(IDX)   global_attr_tbl[IDX].fld.flag2
03249 # endif
03250 
03251 # ifdef _DEBUG
03252 # define GAD_CLASS(IDX)                                                        \
03253         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03254                 global_attr_tbl : ga_var_error("GAD_CLASS", IDX))              \
03255                 [IDX].fld.field5
03256 # else
03257 # define GAD_CLASS(IDX)                 global_attr_tbl[IDX].fld.field5
03258 # endif
03259 
03260 # ifdef _DEBUG
03261 # define GAD_HOLLERITH(IDX)                                                    \
03262         (((GA_OBJ_CLASS(IDX) == Data_Obj) &&                                   \
03263           (GAD_CLASS(IDX) == Constant)) ?                                      \
03264                 global_attr_tbl : ga_var_error("GAD_HOLLERITH", IDX))          \
03265                 [IDX].fld.field4
03266 # else
03267 # define GAD_HOLLERITH(IDX)             global_attr_tbl[IDX].fld.field4
03268 # endif
03269 
03270 # ifdef _DEBUG
03271 # define GAD_IGNORE_TKR(IDX)                                                   \
03272         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03273                 global_attr_tbl : ga_var_error("GAD_IGNORE_TKR", IDX))         \
03274                 [IDX].fld.flag1
03275 # else
03276 # define GAD_IGNORE_TKR(IDX)            global_attr_tbl[IDX].fld.flag1
03277 # endif
03278 
03279 # ifdef _DEBUG
03280 # define GAD_INTENT(IDX)                                                       \
03281         (((GA_OBJ_CLASS(IDX) == Data_Obj) &&                                   \
03282           (GAD_CLASS(IDX) == Dummy_Argument)) ?                                \
03283                 global_attr_tbl : ga_var_error("GAD_INTENT", IDX))             \
03284                 [IDX].fld.field4
03285 # else
03286 # define GAD_INTENT(IDX)                global_attr_tbl[IDX].fld.field4
03287 # endif
03288 
03289 # ifdef _DEBUG
03290 # define GAD_NEXT_IDX(IDX)                                                     \
03291         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03292                 global_attr_tbl : ga_var_error("GAD_NEXT_IDX", IDX))           \
03293                 [IDX].fld.field8
03294 # else
03295 # define GAD_NEXT_IDX(IDX)              global_attr_tbl[IDX].fld.field8
03296 # endif
03297 
03298 # ifdef _DEBUG
03299 # define GAD_POINTER(IDX)                                                      \
03300         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03301                 global_attr_tbl : ga_var_error("GAD_POINTER", IDX))            \
03302                 [IDX].fld.flag3
03303 # else
03304 # define GAD_POINTER(IDX)               global_attr_tbl[IDX].fld.flag3
03305 # endif
03306 
03307 # ifdef _DEBUG
03308 # define GAD_RANK(IDX)                                                         \
03309         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03310                 global_attr_tbl : ga_var_error("GAD_RANK", IDX))               \
03311                 [IDX].fld.field2
03312 # else
03313 # define GAD_RANK(IDX)  global_attr_tbl[IDX].fld.field2
03314 # endif
03315 
03316 # ifdef _DEBUG
03317 # define GAD_TARGET(IDX)                                                       \
03318         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03319                 global_attr_tbl : ga_var_error("GAD_TARGET", IDX))             \
03320                 [IDX].fld.flag4
03321 # else
03322 # define GAD_TARGET(IDX)                global_attr_tbl[IDX].fld.flag4
03323 # endif
03324 
03325 # ifdef _DEBUG
03326 # define GAD_TYPE_IDX(IDX)                                                     \
03327         ((GA_OBJ_CLASS(IDX) == Data_Obj) ?                                     \
03328                 global_attr_tbl : ga_var_error("GAD_TYPE_IDX", IDX))           \
03329                 [IDX].fld.field1
03330 # else
03331 # define GAD_TYPE_IDX(IDX)              global_attr_tbl[IDX].fld.field1
03332 # endif
03333 
03334 /* Definitions for common block class */
03335 
03336 # ifdef _DEBUG
03337 # define GAC_ALIGN_SYMBOL(IDX)                                                 \
03338         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03339                 global_attr_tbl : ga_var_error("GAC_ALIGN_SYMBOL", IDX))       \
03340                 [IDX].fld.flag5
03341 # else
03342 # define GAC_ALIGN_SYMBOL(IDX)          global_attr_tbl[IDX].fld.flag5
03343 # endif
03344 
03345 # ifdef _DEBUG
03346 # define GAC_AUXILIARY(IDX)                                                    \
03347         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03348                 global_attr_tbl : ga_var_error("GAC_AUXILIARY", IDX))          \
03349                 [IDX].fld.flag1
03350 # else
03351 # define GAC_AUXILIARY(IDX)             global_attr_tbl[IDX].fld.flag1
03352 # endif
03353 
03354 # ifdef _DEBUG
03355 # define GAC_CACHE_ALIGN(IDX)                                                  \
03356         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03357                 global_attr_tbl : ga_var_error("GAC_CACHE_ALIGN", IDX))        \
03358                 [IDX].fld.flag2
03359 # else
03360 # define GAC_CACHE_ALIGN(IDX)           global_attr_tbl[IDX].fld.flag2
03361 # endif
03362 
03363 # ifdef _DEBUG
03364 # define GAC_EQUIVALENCED(IDX)                                                 \
03365         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03366                 global_attr_tbl : ga_var_error("GAC_EQUIVALENCED", IDX))       \
03367                 [IDX].fld.flag4
03368 # else
03369 # define GAC_EQUIVALENCED(IDX)          global_attr_tbl[IDX].fld.flag4
03370 # endif
03371 
03372 # ifdef _DEBUG
03373 # define GAC_FILL_SYMBOL(IDX)                                                  \
03374         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03375                 global_attr_tbl : ga_var_error("GAC_FILL_SYMBOL", IDX))        \
03376                 [IDX].fld.flag6
03377 # else
03378 # define GAC_FILL_SYMBOL(IDX)           global_attr_tbl[IDX].fld.flag6
03379 # endif
03380 
03381 # ifdef _DEBUG
03382 # define GAC_FIRST_MEMBER_IDX(IDX)                                             \
03383         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03384                 global_attr_tbl : ga_var_error("GAC_FIRST_MEMBER_IDX", IDX))   \
03385                 [IDX].fld.field3
03386 # else
03387 # define GAC_FIRST_MEMBER_IDX(IDX)      global_attr_tbl[IDX].fld.field3
03388 # endif
03389 
03390 # ifdef _DEBUG
03391 # define GAC_FOUND_DIFFS(IDX)                                                  \
03392         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03393                 global_attr_tbl : ga_var_error("GAC_FOUND_DIFFS", IDX))        \
03394                 [IDX].fld.flag7
03395 # else
03396 # define GAC_FOUND_DIFFS(IDX)           global_attr_tbl[IDX].fld.flag7
03397 # endif
03398 
03399 # ifdef _DEBUG
03400 # define GAC_PGM_UNIT_IDX(IDX)                                                 \
03401         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03402                 global_attr_tbl : ga_var_error("GAC_PGM_UNIT_IDX", IDX))       \
03403                 [IDX].fld.field1
03404 # else
03405 # define GAC_PGM_UNIT_IDX(IDX)          global_attr_tbl[IDX].fld.field1
03406 # endif
03407 
03408 # ifdef _DEBUG
03409 # define GAC_SECTION_GP(IDX)                                                   \
03410         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03411                 global_attr_tbl : ga_var_error("GAC_SECTION_GP", IDX))         \
03412                 [IDX].fld.flag8
03413 # else
03414 # define GAC_SECTION_GP(IDX)            global_attr_tbl[IDX].fld.flag8
03415 # endif
03416 
03417 # ifdef _DEBUG
03418 # define GAC_SECTION_NON_GP(IDX)                                               \
03419         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03420                 global_attr_tbl : ga_var_error("GAC_SECTION_NON_GP", IDX))     \
03421                 [IDX].fld.flag9
03422 # else
03423 # define GAC_SECTION_NON_GP(IDX)        global_attr_tbl[IDX].fld.flag9
03424 # endif
03425 
03426 # ifdef _DEBUG
03427 # define GAC_TASK_COMMON(IDX)                                                  \
03428         ((GA_OBJ_CLASS(IDX) == Common_Block) ?                                 \
03429                 global_attr_tbl : ga_var_error("GAC_TASK_COMMON", IDX))        \
03430                 [IDX].fld.flag3
03431 # else
03432 # define GAC_TASK_COMMON(IDX)           global_attr_tbl[IDX].fld.flag3
03433 # endif
03434 
03435 
03436 /* Definitions for program unit class */
03437 
03438 # ifdef _DEBUG
03439 # define GAP_ELEMENTAL(IDX)                                                    \
03440         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03441                 global_attr_tbl : ga_var_error("GAP_ELEMENTAL", IDX))          \
03442                 [IDX].fld.flag3
03443 # else
03444 # define GAP_ELEMENTAL(IDX)             global_attr_tbl[IDX].fld.flag3
03445 # endif
03446 
03447 # ifdef _DEBUG
03448 # define GAP_FIRST_IDX(IDX)                                                    \
03449         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03450                 global_attr_tbl : ga_var_error("GAP_FIRST_IDX", IDX))          \
03451                 [IDX].fld.field1
03452 # else
03453 # define GAP_FIRST_IDX(IDX)             global_attr_tbl[IDX].fld.field1
03454 # endif
03455 
03456 # ifdef _DEBUG
03457 # define GAP_FP_IDX(IDX)                                                       \
03458         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03459                 global_attr_tbl : ga_var_error("GAP_FP_IDX", IDX))             \
03460                 [IDX].fld.field6
03461 # else
03462 # define GAP_FP_IDX(IDX)                global_attr_tbl[IDX].fld.field6
03463 # endif
03464 
03465 # ifdef _DEBUG
03466 # define GAP_GLOBAL_DIR(IDX)                                                   \
03467         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03468                 global_attr_tbl : ga_var_error("GAP_GLOBAL_DIR", IDX))         \
03469                 [IDX].fld.flag9
03470 # else
03471 # define GAP_GLOBAL_DIR(IDX)            global_attr_tbl[IDX].fld.flag9
03472 # endif
03473 
03474 # ifdef _DEBUG
03475 # define GAP_IN_INTERFACE_BLK(IDX)                                             \
03476         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03477                 global_attr_tbl : ga_var_error("GAP_IN_INTERFACE_BLK", IDX))   \
03478                 [IDX].fld.flag2
03479 # else
03480 # define GAP_IN_INTERFACE_BLK(IDX)      global_attr_tbl[IDX].fld.flag2
03481 # endif
03482 
03483 /* # ifdef _DEBUG
03484 # define GAP_NEEDS_EXPL_ITRFC(IDX)                                             \
03485         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03486                 global_attr_tbl : ga_var_error("GAP_NEEDS_EXPL_ITRFC", IDX))   \
03487                 [IDX].fld.flag1
03488 # else
03489 */
03490 # define GAP_NEEDS_EXPL_ITRFC(IDX)      global_attr_tbl[IDX].fld.flag1
03491 /* # endif */
03492 
03493 # ifdef _DEBUG
03494 # define GAP_NEXT_PGM_UNIT_IDX(IDX)                                            \
03495         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03496                 global_attr_tbl : ga_var_error("GAP_NEXT_PGM_UNIT_IDX", IDX))  \
03497                 [IDX].fld.field8
03498 # else
03499 # define GAP_NEXT_PGM_UNIT_IDX(IDX)     global_attr_tbl[IDX].fld.field8
03500 # endif
03501 
03502 # ifdef _DEBUG
03503 # define GAP_NOSIDE_EFFECTS(IDX)                                               \
03504         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03505                 global_attr_tbl : ga_var_error("GAP_NOSIDE_EFFECTS", IDX))     \
03506                 [IDX].fld.flag5
03507 # else
03508 # define GAP_NOSIDE_EFFECTS(IDX)        global_attr_tbl[IDX].fld.flag5
03509 # endif
03510 
03511 # ifdef _DEBUG
03512 # define GAP_NUM_DARGS(IDX)                                                    \
03513         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03514                 global_attr_tbl : ga_var_error("GAP_NUM_DARGS", IDX))          \
03515                 [IDX].fld.field7
03516 # else
03517 # define GAP_NUM_DARGS(IDX)             global_attr_tbl[IDX].fld.field7
03518 # endif
03519 
03520 # ifdef _DEBUG
03521 # define GAP_PGM_UNIT(IDX)                                                     \
03522         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03523                 global_attr_tbl : ga_var_error("GAP_PGM_UNIT", IDX))           \
03524                 [IDX].fld.field5
03525 # else
03526 # define GAP_PGM_UNIT(IDX)              global_attr_tbl[IDX].fld.field5
03527 # endif
03528 
03529 # ifdef _DEBUG
03530 # define GAP_PGM_UNIT_DEFINED(IDX)                                             \
03531         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03532                 global_attr_tbl : ga_var_error("GAP_PGM_UNIT_DEFINED", IDX))   \
03533                 [IDX].fld.flag4
03534 # else
03535 # define GAP_PGM_UNIT_DEFINED(IDX)      global_attr_tbl[IDX].fld.flag4
03536 # endif
03537 
03538 # ifdef _DEBUG
03539 # define GAP_PURE(IDX)                                                         \
03540         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03541                 global_attr_tbl : ga_var_error("GAP_PURE", IDX))               \
03542                 [IDX].fld.flag6
03543 # else
03544 # define GAP_PURE(IDX)                  global_attr_tbl[IDX].fld.flag6
03545 # endif
03546 
03547 # ifdef _DEBUG
03548 # define GAP_RECURSIVE(IDX)                                                    \
03549         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03550                 global_attr_tbl : ga_var_error("GAP_RECURSIVE", IDX))          \
03551                 [IDX].fld.flag7
03552 # else
03553 # define GAP_RECURSIVE(IDX)             global_attr_tbl[IDX].fld.flag7
03554 # endif
03555 
03556 # ifdef _DEBUG
03557 # define GAP_RSLT_IDX(IDX)                                                     \
03558         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03559                 global_attr_tbl : ga_var_error("GAP_RSLT_IDX", IDX))           \
03560                 [IDX].fld.field3
03561 # else
03562 # define GAP_RSLT_IDX(IDX)              global_attr_tbl[IDX].fld.field3
03563 # endif
03564 
03565 # ifdef _DEBUG
03566 # define GAP_INLINE_STATE(IDX)                                                 \
03567         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03568                 global_attr_tbl : ga_var_error("GAP_INLINE_STATE", IDX))       \
03569                 [IDX].fld.field2
03570 # else
03571 # define GAP_INLINE_STATE(IDX)          global_attr_tbl[IDX].fld.field2
03572 # endif
03573 
03574 # ifdef _DEBUG
03575 # define GAP_VFUNCTION(IDX)                                                    \
03576         ((GA_OBJ_CLASS(IDX) == Pgm_Unit) ?                                     \
03577                 global_attr_tbl : ga_var_error("GAP_VFUNCTION", IDX))          \
03578                 [IDX].fld.flag8
03579 # else
03580 # define GAP_VFUNCTION(IDX)             global_attr_tbl[IDX].fld.flag8
03581 # endif
03582 
03583 
03584 /* definitions for derived types - GAT */
03585 
03586 # ifdef _DEBUG
03587 # define GAT_FIRST_CPNT_IDX(IDX)                                               \
03588         ((GA_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
03589                 global_attr_tbl : ga_var_error("GAT_FIRST_CPNT_IDX", IDX))     \
03590                 [IDX].fld.field1
03591 # else
03592 # define GAT_FIRST_CPNT_IDX(IDX)        global_attr_tbl[IDX].fld.field1
03593 # endif
03594 
03595 # ifdef _DEBUG
03596 # define GAT_NUM_CPNTS(IDX)                                                    \
03597         ((GA_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
03598                 global_attr_tbl : ga_var_error("GAT_NUM_CPNTS", IDX))          \
03599                 [IDX].fld.field3
03600 # else
03601 # define GAT_NUM_CPNTS(IDX)             global_attr_tbl[IDX].fld.field3
03602 # endif
03603 
03604 # ifdef _DEBUG
03605 # define GAT_PRIVATE_CPNT(IDX)                                                 \
03606         ((GA_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
03607                 global_attr_tbl : ga_var_error("GAT_PRIVATE_CPNT", IDX))       \
03608                 [IDX].fld.flag1
03609 # else
03610 # define GAT_PRIVATE_CPNT(IDX)          global_attr_tbl[IDX].fld.flag1
03611 # endif
03612 
03613 # ifdef _DEBUG
03614 # define GAT_SEQUENCE_SET(IDX)                                                 \
03615         ((GA_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
03616                 global_attr_tbl : ga_var_error("GAT_SEQUENCE_SET", IDX))       \
03617                 [IDX].fld.flag2
03618 # else
03619 # define GAT_SEQUENCE_SET(IDX)          global_attr_tbl[IDX].fld.flag2
03620 # endif
03621 
03622 # ifdef _DEBUG
03623 # define GAT_STRUCT_LIN_TYPE(IDX)                                              \
03624         ((GA_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
03625                 global_attr_tbl : ga_var_error("GAT_STRUCT_LIN_TYPE", IDX))    \
03626                 [IDX].wd.field32_6
03627 # else
03628 # define GAT_STRUCT_LIN_TYPE(IDX)       global_attr_tbl[IDX].wd.field32_6
03629 # endif
03630 
03631 # ifdef _DEBUG
03632 # define GAT_STRUCT_BIT_LEN(IDX)                                               \
03633         ((GA_OBJ_CLASS(IDX) == Derived_Type) ?                                 \
03634                 global_attr_tbl : ga_var_error("GAT_STRUCT_BIT_LEN", IDX))     \
03635                 [IDX].wd.length
03636 # else
03637 # define GAT_STRUCT_BIT_LEN(IDX)        global_attr_tbl[IDX].wd.length
03638 # endif
03639 
03640 /*  GLOBAL BOUNDS TABLE - Common */
03641 
03642 # define GB_ARRAY_CLASS(IDX)            global_bounds_tbl[IDX].hdr.array_class
03643 # define GB_ARRAY_SIZE(IDX)             global_bounds_tbl[IDX].hdr.array_size
03644 # define GB_RANK(IDX)                   global_bounds_tbl[IDX].hdr.rank
03645 
03646 /*  GLOBAL BOUNDS TABLE - Dimensions */
03647 
03648 # define GB_LOWER_BOUND(IDX,DIM)        global_bounds_tbl[(IDX)+(DIM*3)-2].len
03649 # define GB_UPPER_BOUND(IDX,DIM)        global_bounds_tbl[(IDX)+(DIM*3)-1].len
03650 # define GB_LB_TYPE(IDX,DIM)    global_bounds_tbl[(IDX)+(DIM*3)].type.lb_type
03651 # define GB_UB_TYPE(IDX,DIM)    global_bounds_tbl[(IDX)+(DIM*3)].type.ub_type
03652 
03653 /* GLOBAL LINE TABLE */
03654 
03655 # define GL_CIF_FILE_ID(IDX)            global_line_tbl[IDX].cif_file_id
03656 # define GL_FILE_LINE(IDX)              global_line_tbl[IDX].file_line
03657 # define GL_FILE_NAME_IDX(IDX)          global_line_tbl[IDX].file_name_idx
03658 # define GL_FILE_NAME_LEN(IDX)          global_line_tbl[IDX].file_name_len
03659 # define GL_GLOBAL_LINE(IDX)            global_line_tbl[IDX].global_line
03660 # define GL_INCLUDE_FILE_COL(IDX)       global_line_tbl[IDX].incld_file_col
03661 # define GL_INCLUDE_FILE_LINE(IDX)      global_line_tbl[IDX].incld_file_line
03662 # define GL_PATH_NAME_IDX(IDX)          global_line_tbl[IDX].path_name_idx
03663 # define GL_PATH_NAME_LEN(IDX)          global_line_tbl[IDX].path_name_len
03664 # define GL_SOURCE_LINES(IDX)           global_line_tbl[IDX].source_lines
03665 
03666 # define GL_FILE_NAME_LONG(IDX)   &(str_pool[GL_FILE_NAME_IDX(IDX)].name_long)
03667 # define GL_FILE_NAME_PTR(IDX)    &str_pool[GL_FILE_NAME_IDX(IDX)].name_char
03668 
03669 # define GL_PATH_NAME_LONG(IDX)   &(str_pool[GL_PATH_NAME_IDX(IDX)].name_long)
03670 # define GL_PATH_NAME_PTR(IDX)    &str_pool[GL_PATH_NAME_IDX(IDX)].name_char
03671 
03672 
03673 /* GLOBAL NAME TABLE */
03674 
03675 # define GN_ATTR_IDX(IDX)               global_name_tbl[IDX].attr_idx
03676 # define GN_NAME_IDX(IDX)               global_name_tbl[IDX].name_idx
03677 # define GN_NAME_LEN(IDX)               global_name_tbl[IDX].name_len
03678 # define GN_NAME_LONG(IDX)             &(str_pool[GN_NAME_IDX(IDX)].name_long)
03679 # define GN_NAME_PTR(IDX)              &str_pool[GN_NAME_IDX(IDX)].name_char
03680 
03681 /* GLOBAL TYPE TABLE */
03682 
03683 # define GT_BIT_LEN(IDX)                global_type_tbl[IDX].fld.bit_len
03684 # define GT_CHAR_CLASS(IDX)             global_type_tbl[IDX].fld.char_class
03685 # define GT_DCL_VALUE(IDX)              global_type_tbl[IDX].fld.dcl_value
03686 # define GT_DESC(IDX)                   global_type_tbl[IDX].fld.desc
03687 # define GT_STRUCT_IDX(IDX)             global_type_tbl[IDX].fld.type_idx
03688 # define GT_LENGTH(IDX)                 global_type_tbl[IDX].wd.length
03689 # define GT_LENGTH_LIN_TYPE(IDX)        global_type_tbl[IDX].fld.len_lin_type
03690 # define GT_LINEAR_TYPE(IDX)            global_type_tbl[IDX].fld.linear_type
03691 # define GT_PTR_INCREMENT(IDX) \
03692                           global_type_tbl[IDX].wd.length[MAX_WORDS_FOR_INTEGER]
03693 # define GT_TYPE(IDX)                   global_type_tbl[IDX].fld.type
03694 
03695 /* HIDDEN NAME TABLE */
03696 
03697 # define HN_ATTR_IDX(IDX)               hidden_name_tbl[IDX].attr_idx
03698 # define HN_NAME_IDX(IDX)               hidden_name_tbl[IDX].name_idx
03699 # define HN_NAME_LEN(IDX)               hidden_name_tbl[IDX].name_len
03700 
03701 
03702 /* SCOPE TABLE definitions */
03703 
03704 # define SCP_ATTR_IDX(IDX)              scp_tbl[IDX].wd[0].fld1.field2
03705 # define SCP_LN_FW_IDX(IDX)             scp_tbl[IDX].wd[1].fld1.field2
03706 # define SCP_LN_LW_IDX(IDX)             scp_tbl[IDX].wd[2].fld1.field2
03707 # define SCP_FIRST_SH_IDX(IDX)          scp_tbl[IDX].wd[3].fld1.field2
03708 # define SCP_LAST_SH_IDX(IDX)           scp_tbl[IDX].wd[4].fld1.field2
03709 # define SCP_EXIT_IR_SH_IDX(IDX)        scp_tbl[IDX].wd[5].fld1.field2
03710 # define SCP_ASSIGN_LBL_CHAIN(IDX)      scp_tbl[IDX].wd[6].fld1.field2
03711 # define SCP_CIF_ID(IDX)                scp_tbl[IDX].wd[7].fld1.field2
03712 # define SCP_HN_FW_IDX(IDX)             scp_tbl[IDX].wd[8].fld1.field2
03713 # define SCP_HN_LW_IDX(IDX)             scp_tbl[IDX].wd[9].fld1.field2
03714 # define SCP_OPTIONAL_CHAR_TMP(IDX)     scp_tbl[IDX].wd[10].fld1.field2
03715 # define SCP_RETURN_LABEL(IDX)          scp_tbl[IDX].wd[11].fld1.field2
03716 # define SCP_COPY_ASSUMED_LIST(IDX)     scp_tbl[IDX].wd[12].fld1.field2
03717 # define SCP_WHICH_ENTRY_TMP(IDX)       scp_tbl[IDX].wd[13].fld1.field2
03718 # define SCP_RESHAPE_ARRAY_LIST(IDX)    scp_tbl[IDX].wd[14].fld1.field2
03719 
03720 # define SCP_DEFAULT_STORAGE(IDX)       scp_tbl[IDX].wd[24].fld2.field4
03721 # define SCP_LEVEL(IDX)                 scp_tbl[IDX].wd[23].fld2.field4
03722 # define SCP_CIF_ERR_LIST(IDX)          scp_tbl[IDX].wd[23].fld2.field5
03723 
03724 # define SCP_IS_INTERFACE(IDX)          scp_tbl[IDX].wd[0].fld1.flag1
03725 # define SCP_IN_ERR(IDX)                scp_tbl[IDX].wd[0].fld1.flag2
03726 # define SCP_IS_USED_PROC(IDX)          scp_tbl[IDX].wd[0].fld1.flag3
03727 # define SCP_IMPL_NONE(IDX)             scp_tbl[IDX].wd[1].fld1.flag1
03728 # define SCP_PARENT_NONE(IDX)           scp_tbl[IDX].wd[1].fld1.flag2
03729 # define SCP_COPY_ASSUMED_SHAPE(IDX)    scp_tbl[IDX].wd[1].fld1.flag3
03730 # define SCP_IGNORE_TKR(IDX)            scp_tbl[IDX].wd[2].fld1.flag1
03731 # define SCP_HAS_CALLS(IDX)             scp_tbl[IDX].wd[2].fld1.flag2
03732 # define SCP_DOES_IO(IDX)               scp_tbl[IDX].wd[2].fld1.flag3
03733 # define SCP_INLINE_SGI(IDX)            scp_tbl[IDX].wd[3].fld1.flag2
03734 # define SCP_NOINLINE_SGI(IDX)          scp_tbl[IDX].wd[3].fld1.flag3
03735 # define SCP_DBG_PRINT_SYTB(IDX)        scp_tbl[IDX].wd[25].fld1.flag1
03736 # define SCP_DBG_PRINT_STMT(IDX)        scp_tbl[IDX].wd[25].fld1.flag2
03737 
03738 # define SCP_SIBLING_IDX(IDX)           scp_tbl[IDX].wd[0].fld1.field3
03739 # define SCP_LAST_CHILD_IDX(IDX)        scp_tbl[IDX].wd[1].fld1.field3
03740 # define SCP_TMP_FW_IDX2(IDX)           scp_tbl[IDX].wd[2].fld1.field3
03741 # define SCP_PARENT_IDX(IDX)            scp_tbl[IDX].wd[3].fld1.field3
03742 # define SCP_FIRST_CHILD_IDX(IDX)       scp_tbl[IDX].wd[4].fld1.field3
03743 # define SCP_NUM_CHILDREN(IDX)          scp_tbl[IDX].wd[5].fld1.field3
03744 # define SCP_DARG_LIST(IDX)             scp_tbl[IDX].wd[6].fld1.field3
03745 # define SCP_ENTRY_IDX(IDX)             scp_tbl[IDX].wd[7].fld1.field3
03746 # define SCP_USED_MODULE_LIST(IDX)      scp_tbl[IDX].wd[8].fld1.field3
03747 # define SCP_FIRST_EQUIV_GRP(IDX)       scp_tbl[IDX].wd[9].fld1.field3
03748 # define SCP_TMP_LIST(IDX)              scp_tbl[IDX].wd[10].fld1.field3
03749 # define SCP_TMP_FW_IDX(IDX)            scp_tbl[IDX].wd[11].fld1.field3
03750 # define SCP_SB_HOSTED_STACK_IDX(IDX)   scp_tbl[IDX].wd[12].fld1.field3
03751 # define SCP_SB_STACK_IDX(IDX)          scp_tbl[IDX].wd[13].fld1.field3
03752 # define SCP_SB_BASED_IDX(IDX)          scp_tbl[IDX].wd[14].fld1.field3
03753 # define SCP_SB_DARG_IDX(IDX)           scp_tbl[IDX].wd[15].fld1.field3
03754 # define SCP_SB_STATIC_IDX(IDX)         scp_tbl[IDX].wd[16].fld1.field3
03755 # define SCP_SB_SYMMETRIC_IDX(IDX)      scp_tbl[IDX].wd[17].fld1.field3
03756 # define SCP_ATTR_LIST_END(IDX)         scp_tbl[IDX].wd[18].fld1.field3
03757 # define SCP_SB_HOSTED_STATIC_IDX(IDX)  scp_tbl[IDX].wd[19].fld1.field3
03758 # define SCP_SB_STATIC_INIT_IDX(IDX)    scp_tbl[IDX].wd[20].fld1.field3
03759 # define SCP_ATTR_LIST(IDX)             scp_tbl[IDX].wd[21].fld1.field3
03760 # define SCP_ALT_ENTRY_CNT(IDX)         scp_tbl[IDX].wd[22].fld1.field3
03761 # define SCP_SB_STATIC_UNINIT_IDX(IDX)  scp_tbl[IDX].wd[23].fld1.field3
03762 # define SCP_SB_HOSTED_DATA_IDX(IDX)    scp_tbl[IDX].wd[24].fld1.field3
03763 # define SCP_FILE_PATH_IDX(IDX)         scp_tbl[IDX].wd[25].fld1.field3
03764 
03765 /* IMPLICIT TABLE definitions */
03766 
03767 # define IMPL_IDX(CH)                   CH - 'A'
03768 # define IM_SET(SIDX,IDX)               scp_tbl[SIDX].wd[IDX].fld1.typed
03769 # define IM_STORAGE(SIDX,IDX)           scp_tbl[SIDX].wd[IDX].fld1.storage
03770 # define IM_TYPE_IDX(SIDX,IDX)          scp_tbl[SIDX].wd[IDX].fld1.type_idx
03771 
03772 /* IR TABLE */
03773 # define OLD_IR_OPR(IDX)                old_ir_tbl[IDX].opr.the_operator
03774 # define OLD_IR_RANK(IDX)               old_ir_tbl[IDX].opr.rank
03775 # define OLD_IR_DV_DIM(IDX)             old_ir_tbl[IDX].opr.dim
03776 
03777 # define IR_COL_NUM(IDX)                ir_tbl[IDX].opr.col_num
03778 # define IR_LINE_NUM(IDX)               ir_tbl[IDX].opr.line_num
03779 # define IR_NEXT_IDX(IDX)               ir_tbl[IDX].opr.line_num
03780 # define IR_OPR(IDX)                    ir_tbl[IDX].opr.the_operator
03781 # define IR_TYPE_IDX(IDX)               ir_tbl[IDX].opr.type_idx
03782 
03783 # define IR_RANK(IDX)                   ir_tbl[IDX].opr.rank
03784 # define IR_DV_DIM(IDX)                 ir_tbl[IDX].opr.dim
03785 # define IR_CONTIG_ARRAY(IDX)           ir_tbl[IDX].opr.dim
03786 # define IR_WHOLE_ARRAY(IDX)            ir_tbl[IDX].opr.dim
03787 # define IR_INLINE_STATE(IDX)           ir_tbl[IDX].opr.dim
03788 
03789 # define IR_COL_NUM_L(IDX)              ir_tbl[IDX].op_l.col_num
03790 # define IR_FLD_L(IDX)                  ir_tbl[IDX].op_l.fld
03791 # define IR_IDX_L(IDX)                  ir_tbl[IDX].op_l.idx
03792 # define IR_LINE_NUM_L(IDX)             ir_tbl[IDX].op_l.line_num
03793 # define IR_LIST_CNT_L(IDX)             ir_tbl[IDX].op_l.line_num
03794 # define IR_SHORT_CIRCUIT_L(IDX)        ir_tbl[IDX].op_l.flag_1
03795 # define IR_ARRAY_SYNTAX(IDX)           ir_tbl[IDX].op_l.flag_2
03796 
03797 # define IR_COL_NUM_R(IDX)              ir_tbl[IDX].op_r.col_num
03798 # define IR_FLD_R(IDX)                  ir_tbl[IDX].op_r.fld
03799 # define IR_IDX_R(IDX)                  ir_tbl[IDX].op_r.idx
03800 # define IR_LINE_NUM_R(IDX)             ir_tbl[IDX].op_r.line_num
03801 # define IR_LIST_CNT_R(IDX)             ir_tbl[IDX].op_r.line_num
03802 # define IR_SHORT_CIRCUIT_R(IDX)        ir_tbl[IDX].op_r.flag_1
03803 # define IR_BOUNDS_DONE(IDX)            ir_tbl[IDX].op_r.flag_2
03804 
03805 # define IR_OPND_L(IDX)                 ir_tbl[IDX].op_l
03806 # define IR_OPND_R(IDX)                 ir_tbl[IDX].op_r
03807 
03808 
03809 /* IR LIST TABLE */
03810 
03811 # define IL_NEXT_LIST_IDX(IDX)          ir_list_tbl[IDX].il.link.nxt_idx
03812 # define IL_IDX(IDX)                    ir_list_tbl[IDX].il.op.idx
03813 # define IL_LINE_NUM(IDX)               ir_list_tbl[IDX].il.op.line_num
03814 # define IL_COL_NUM(IDX)                ir_list_tbl[IDX].il.op.col_num
03815 # define IL_LIST_CNT(IDX)               ir_list_tbl[IDX].il.op.line_num
03816 # define IL_FLD(IDX)                    ir_list_tbl[IDX].il.op.fld
03817 # define IL_ARG_DESC_VARIANT(IDX)       ir_list_tbl[IDX].il.link.arg_desc
03818 # define IL_ARG_MULTI_FLAGS(IDX)        ir_list_tbl[IDX].il.link.multi_flags
03819 
03820 # ifdef _DEBUG
03821 # define IL_PREV_LIST_IDX(IDX)                                                \
03822          (! IL_ARG_DESC_VARIANT(IDX) ?                                        \
03823                 ir_list_tbl : ir_list_var_error("IL_PREV_LIST_IDX", IDX))     \
03824                 [IDX].il.link.prev_idx
03825 # else 
03826 # define IL_PREV_LIST_IDX(IDX)          ir_list_tbl[IDX].il.link.prev_idx
03827 # endif
03828 
03829 # ifdef _DEBUG
03830 # define IL_ARG_DESC_IDX(IDX)                                                 \
03831          (IL_ARG_DESC_VARIANT(IDX) ?                                          \
03832                 ir_list_tbl : ir_list_var_error("IL_ARG_DESC_IDX", IDX))      \
03833                 [IDX].il.link.prev_idx
03834 # else 
03835 # define IL_ARG_DESC_IDX(IDX)           ir_list_tbl[IDX].il.link.prev_idx
03836 # endif
03837 
03838 /* flags for array subscript lists */
03839 # define IL_VECTOR_SUBSCRIPT(IDX)       ir_list_tbl[IDX].il.link.flag_1
03840 # define IL_CONSTANT_SUBSCRIPT(IDX)     ir_list_tbl[IDX].il.link.flag_2
03841 # define IL_PE_SUBSCRIPT(IDX)           ir_list_tbl[IDX].il.link.flag_3
03842 
03843 /* flags for io control lists */
03844 # define IL_NAMELIST_EXPECTED(IDX)      ir_list_tbl[IDX].il.link.flag_1
03845 # define IL_FORMAT_EXPECTED(IDX)        ir_list_tbl[IDX].il.link.flag_2
03846 
03847 /* flags for io list */
03848 # define IL_HAS_FUNCTIONS(IDX)          ir_list_tbl[IDX].il.link.flag_1
03849 # define IL_MUST_BE_LOOP(IDX)           ir_list_tbl[IDX].il.link.flag_2
03850 # define IL_MUST_FLATTEN(IDX)           ir_list_tbl[IDX].il.link.flag_3
03851 # define IL_HAS_CONSTRUCTOR(IDX)        ir_list_tbl[IDX].il.link.flag_4
03852 # define IL_STRUCT_REF(IDX)             ir_list_tbl[IDX].il.link.flag_5
03853 # define IL_INTRIN_PLACE_HOLDER(IDX)    ir_list_tbl[IDX].il.link.flag_6
03854 # define IL_NONDEFAULT_IMP_DO_LCV(IDX)  ir_list_tbl[IDX].il.link.flag_7
03855 # define IL_DISTRIBUTION_VARIANT(IDX)   ir_list_tbl[IDX].il.link.flag_8
03856 
03857 /* Flags for label forward ref lists.  See MISC above for values. */
03858 # define IL_FORWARD_REF(IDX)            ir_list_tbl[IDX].il.link.for_ref
03859 # define IL_DISTRIBUTION(IDX)           ir_list_tbl[IDX].il.link.for_ref
03860 
03861 # define IL_WORD(IDX,WD)                ir_list_tbl[IDX].words[WD]
03862 # define IL_ELEMENT(IDX)                ir_list_tbl[IDX].il_long64.lwd2
03863 
03864 # define IL_OPND(IDX)                   ir_list_tbl[IDX].il.op
03865 
03866 
03867 /* STMT HEADER TABLE */
03868 
03869 # define SH_CIF_SKIP_ME(IDX)            sh_tbl[IDX].cif_skip_me
03870 # define SH_COL_NUM(IDX)                sh_tbl[IDX].col_num
03871 # define SH_COMPILER_GEN(IDX)           sh_tbl[IDX].compiler_gen
03872 # define SH_DOALL_LOOP_END(IDX)         sh_tbl[IDX].doall_loop_end
03873 # define SH_ERR_FLG(IDX)                sh_tbl[IDX].stmt_parse_err
03874 # define SH_GLB_LINE(IDX)               sh_tbl[IDX].glb_line_num
03875 # define SH_ACTION_STMT(IDX)            sh_tbl[IDX].action_stmt
03876 # define SH_INLINING_ATTEMPTED(IDX)     sh_tbl[IDX].inlining_attempted
03877 # define SH_IR_IDX(IDX)                 sh_tbl[IDX].ir_idx
03878 # define SH_LABELED(IDX)                sh_tbl[IDX].labeled
03879 # define SH_LOOP_END(IDX)               sh_tbl[IDX].loop_end
03880 # define SH_NEXT_IDX(IDX)               sh_tbl[IDX].next_sh_idx
03881 # define SH_P2_SKIP_ME(IDX)             sh_tbl[IDX].skip_pass_2
03882 # define SH_PARENT_BLK_IDX(IDX)         sh_tbl[IDX].parent_blk_idx
03883 # define SH_PREV_IDX(IDX)               sh_tbl[IDX].prev_sh_idx
03884 # define OLD_SH_STMT_TYPE(IDX)          sh_tbl[IDX].old_stmt_type
03885 # define SH_STMT_TYPE(IDX)              sh_tbl[IDX].stmt_type
03886 
03887 
03888 /* Global ir,il, and sh tables */
03889 
03890 /* GLOBAL IR TABLE */
03891 
03892 # define GL_IR_COL_NUM(IDX)                global_ir_tbl[IDX].opr.col_num
03893 # define GL_IR_LINE_NUM(IDX)               global_ir_tbl[IDX].opr.line_num
03894 # define GL_IR_NEXT_IDX(IDX)               global_ir_tbl[IDX].opr.line_num
03895 # define GL_IR_OPR(IDX)                    global_ir_tbl[IDX].opr.the_operator
03896 # define GL_IR_TYPE_IDX(IDX)               global_ir_tbl[IDX].opr.type_idx
03897 
03898 # define GL_IR_RANK(IDX)                   global_ir_tbl[IDX].opr.rank
03899 # define GL_IR_DV_DIM(IDX)                 global_ir_tbl[IDX].opr.dim
03900 # define GL_IR_CONTIG_ARRAY(IDX)           global_ir_tbl[IDX].opr.dim
03901 # define GL_IR_WHOLE_ARRAY(IDX)            global_ir_tbl[IDX].opr.dim
03902 # define GL_IR_INLINE_STATE(IDX)           global_ir_tbl[IDX].opr.dim
03903 
03904 # define GL_IR_COL_NUM_L(IDX)              global_ir_tbl[IDX].op_l.col_num
03905 # define GL_IR_FLD_L(IDX)                  global_ir_tbl[IDX].op_l.fld
03906 # define GL_IR_IDX_L(IDX)                  global_ir_tbl[IDX].op_l.idx
03907 # define GL_IR_LINE_NUM_L(IDX)             global_ir_tbl[IDX].op_l.line_num
03908 # define GL_IR_LIST_CNT_L(IDX)             global_ir_tbl[IDX].op_l.line_num
03909 # define GL_IR_SHORT_CIRCUIT_L(IDX)        global_ir_tbl[IDX].op_l.flag_1
03910 # define GL_IR_ARRAY_SYNTAX(IDX)           global_ir_tbl[IDX].op_l.flag_2
03911 
03912 # define GL_IR_COL_NUM_R(IDX)              global_ir_tbl[IDX].op_r.col_num
03913 # define GL_IR_FLD_R(IDX)                  global_ir_tbl[IDX].op_r.fld
03914 # define GL_IR_IDX_R(IDX)                  global_ir_tbl[IDX].op_r.idx
03915 # define GL_IR_LINE_NUM_R(IDX)             global_ir_tbl[IDX].op_r.line_num
03916 # define GL_IR_LIST_CNT_R(IDX)             global_ir_tbl[IDX].op_r.line_num
03917 # define GL_IR_SHORT_CIRCUIT_R(IDX)        global_ir_tbl[IDX].op_r.flag_1
03918 
03919 # define GL_IR_OPND_L(IDX)                 global_ir_tbl[IDX].op_l
03920 # define GL_IR_OPND_R(IDX)                 global_ir_tbl[IDX].op_r
03921 
03922 
03923 /* GLOBAL IR LIST TABLE */
03924 
03925 # define GL_IL_NEXT_LIST_IDX(IDX)      global_ir_list_tbl[IDX].il.link.nxt_idx
03926 # define GL_IL_IDX(IDX)                global_ir_list_tbl[IDX].il.op.idx
03927 # define GL_IL_LINE_NUM(IDX)           global_ir_list_tbl[IDX].il.op.line_num
03928 # define GL_IL_COL_NUM(IDX)            global_ir_list_tbl[IDX].il.op.col_num
03929 # define GL_IL_LIST_CNT(IDX)           global_ir_list_tbl[IDX].il.op.line_num
03930 # define GL_IL_FLD(IDX)                global_ir_list_tbl[IDX].il.op.fld
03931 # define GL_IL_ARG_DESC_VARIANT(IDX)   global_ir_list_tbl[IDX].il.link.arg_desc
03932 
03933 # define GL_IL_PREV_LIST_IDX(IDX)      global_ir_list_tbl[IDX].il.link.prev_idx
03934 # define GL_IL_ARG_DESC_IDX(IDX)       global_ir_list_tbl[IDX].il.link.prev_idx
03935 
03936 /* flags for array subscript lists */
03937 # define GL_IL_VECTOR_SUBSCRIPT(IDX)   global_ir_list_tbl[IDX].il.link.flag_1
03938 # define GL_IL_CONSTANT_SUBSCRIPT(IDX) global_ir_list_tbl[IDX].il.link.flag_2
03939 # define GL_IL_PE_SUBSCRIPT(IDX)       global_ir_list_tbl[IDX].il.link.flag_3
03940 
03941 /* flags for io control lists */
03942 # define GL_IL_NAMELIST_EXPECTED(IDX)  global_ir_list_tbl[IDX].il.link.flag_1
03943 # define GL_IL_FORMAT_EXPECTED(IDX)    global_ir_list_tbl[IDX].il.link.flag_2
03944 
03945 /* flags for io list */
03946 # define GL_IL_HAS_FUNCTIONS(IDX)      global_ir_list_tbl[IDX].il.link.flag_1
03947 # define GL_IL_MUST_BE_LOOP(IDX)       global_ir_list_tbl[IDX].il.link.flag_2
03948 # define GL_IL_MUST_FLATTEN(IDX)       global_ir_list_tbl[IDX].il.link.flag_3
03949 # define GL_IL_HAS_CONSTRUCTOR(IDX)    global_ir_list_tbl[IDX].il.link.flag_4
03950 # define GL_IL_STRUCT_REF(IDX)         global_ir_list_tbl[IDX].il.link.flag_5
03951 # define GL_IL_INTRIN_PLACE_HOLDER(IDX) global_ir_list_tbl[IDX].il.link.flag_6
03952 # define GL_IL_NONDEFAULT_IMP_DO_LCV(IDX) global_ir_list_tbl[IDX].il.link.flag_7
03953 # define GL_IL_DISTRIBUTION_VARIANT(IDX)  global_ir_list_tbl[IDX].il.link.flag_8
03954 
03955 /* Flags for label forward ref lists.  See MISC above for values. */
03956 # define GL_IL_FORWARD_REF(IDX)        global_ir_list_tbl[IDX].il.link.for_ref
03957 # define GL_IL_DISTRIBUTION(IDX)       global_ir_list_tbl[IDX].il.link.for_ref
03958 
03959 # define GL_IL_WORD(IDX,WD)            global_ir_list_tbl[IDX].words[WD]
03960 
03961 # define GL_IL_OPND(IDX)               global_ir_list_tbl[IDX].il.op
03962 
03963 
03964 /* STMT HEADER TABLE */
03965 
03966 # define GL_SH_CIF_SKIP_ME(IDX)            global_sh_tbl[IDX].cif_skip_me
03967 # define GL_SH_COL_NUM(IDX)                global_sh_tbl[IDX].col_num
03968 # define GL_SH_COMPILER_GEN(IDX)           global_sh_tbl[IDX].compiler_gen
03969 # define GL_SH_DOALL_LOOP_END(IDX)         global_sh_tbl[IDX].doall_loop_end
03970 # define GL_SH_ERR_FLG(IDX)                global_sh_tbl[IDX].stmt_parse_err
03971 # define GL_SH_GLB_LINE(IDX)               global_sh_tbl[IDX].glb_line_num
03972 # define GL_SH_INLINING_ATTEMPTED(IDX)     global_sh_tbl[IDX].inlining_attempted
03973 # define GL_SH_IR_IDX(IDX)                 global_sh_tbl[IDX].ir_idx
03974 # define GL_SH_LABELED(IDX)                global_sh_tbl[IDX].labeled
03975 # define GL_SH_LOOP_END(IDX)               global_sh_tbl[IDX].loop_end
03976 # define GL_SH_NEXT_IDX(IDX)               global_sh_tbl[IDX].next_sh_idx
03977 # define GL_SH_P2_SKIP_ME(IDX)             global_sh_tbl[IDX].skip_pass_2
03978 # define GL_SH_PARENT_BLK_IDX(IDX)         global_sh_tbl[IDX].parent_blk_idx
03979 # define GL_SH_PREV_IDX(IDX)               global_sh_tbl[IDX].prev_sh_idx
03980 # define GL_SH_STMT_TYPE(IDX)              global_sh_tbl[IDX].stmt_type
03981 
03982 /* MOD LINK TABLE */
03983 
03984 # define ML_AT_IDX(IDX)                 mod_link_tbl[IDX].at_idx
03985 # define ML_AT_COMPRESSED_IDX(IDX)      mod_link_tbl[IDX].at_compressed
03986 # define ML_AT_KEEP_ME(IDX)             mod_link_tbl[IDX].at_keep_me
03987 # define ML_AT_LN_NAME(IDX)             mod_link_tbl[IDX].at_ln_name
03988 # define ML_AT_SEARCHED(IDX)            mod_link_tbl[IDX].at_searched
03989 # define ML_AT_SEARCH_ME(IDX)           mod_link_tbl[IDX].at_search_me
03990 # define ML_BD_IDX(IDX)                 mod_link_tbl[IDX].bd_idx
03991 # define ML_BD_KEEP_ME(IDX)             mod_link_tbl[IDX].bd_keep_me
03992 # define ML_CN_IDX(IDX)                 mod_link_tbl[IDX].cn_idx
03993 # define ML_CN_KEEP_ME(IDX)             mod_link_tbl[IDX].cn_keep_me
03994 # define ML_CP_DALIGN_ME(IDX)           mod_link_tbl[IDX].cp_dalign_me
03995 # define ML_CP_IDX(IDX)                 mod_link_tbl[IDX].cp_idx
03996 # define ML_CP_KEEP_ME(IDX)             mod_link_tbl[IDX].cp_keep_me
03997 # define ML_CP_LEN(IDX)                 mod_link_tbl[IDX].cp_len
03998 # define ML_IL_IDX(IDX)                 mod_link_tbl[IDX].il_idx
03999 # define ML_IL_KEEP_ME(IDX)             mod_link_tbl[IDX].il_keep_me
04000 # define ML_IR_IDX(IDX)                 mod_link_tbl[IDX].ir_idx
04001 # define ML_IR_KEEP_ME(IDX)             mod_link_tbl[IDX].ir_keep_me
04002 # define ML_LN_IDX(IDX)                 mod_link_tbl[IDX].ln_idx
04003 # define ML_LN_KEEP_ME(IDX)             mod_link_tbl[IDX].ln_keep_me
04004 # define ML_NP_IDX(IDX)                 mod_link_tbl[IDX].np_idx
04005 # define ML_NP_KEEP_ME(IDX)             mod_link_tbl[IDX].np_keep_me
04006 # define ML_NP_LEN(IDX)                 mod_link_tbl[IDX].np_len
04007 # define ML_SB_IDX(IDX)                 mod_link_tbl[IDX].sb_idx
04008 # define ML_SB_KEEP_ME(IDX)             mod_link_tbl[IDX].sb_keep_me
04009 # define ML_SH_IDX(IDX)                 mod_link_tbl[IDX].sh_idx
04010 # define ML_SH_KEEP_ME(IDX)             mod_link_tbl[IDX].sh_keep_me
04011 # define ML_SN_IDX(IDX)                 mod_link_tbl[IDX].sn_idx
04012 # define ML_SN_KEEP_ME(IDX)             mod_link_tbl[IDX].sn_keep_me
04013 # define ML_TYP_IDX(IDX)                mod_link_tbl[IDX].typ_idx
04014 # define ML_TYP_KEEP_ME(IDX)            mod_link_tbl[IDX].typ_keep_me
04015 
04016 
04017 /* LOCAL NAME TABLE */
04018 
04019 # define LN_ATTR_IDX(IDX)               loc_name_tbl[IDX].attr_idx
04020 # define LN_DEF_LOC(IDX)                loc_name_tbl[IDX].def_locally
04021 # define LN_IN_ONLY_LIST(IDX)           loc_name_tbl[IDX].in_only_list
04022 # define LN_NAME_IDX(IDX)               loc_name_tbl[IDX].name_idx
04023 # define LN_NAME_LEN(IDX)               loc_name_tbl[IDX].name_len
04024 # define LN_NAME_LONG(IDX)              &(name_pool[LN_NAME_IDX(IDX)].name_long)
04025 # define LN_NEW_NAME(IDX)               loc_name_tbl[IDX].new_name
04026 # define LN_RENAMED(IDX)                loc_name_tbl[IDX].renamed
04027 
04028 
04029 /* MOD LINK TABLE */
04030 
04031 # define PDG_AT_IDX(IDX)                pdg_link_tbl[IDX].at_idx
04032 # define PDG_AT_TYP_IDX(IDX)            pdg_link_tbl[IDX].at_typ_idx
04033 # define PDG_CN_IDX(IDX)                pdg_link_tbl[IDX].cn_idx
04034 # define PDG_SB_IDX(IDX)                pdg_link_tbl[IDX].sb_idx
04035 
04036 
04037 /* RENAME ONLY TABLE */
04038 
04039 # define RO_COLUMN_NUM(IDX)             rename_only_tbl[IDX].column_num
04040 # define RO_DUPLICATE_RENAME(IDX)       rename_only_tbl[IDX].duplicate_rename
04041 # define RO_LINE_NUM(IDX)               rename_only_tbl[IDX].line_num
04042 # define RO_NAME_IDX(IDX)               rename_only_tbl[IDX].name_idx
04043 # define RO_NAME_LEN(IDX)               rename_only_tbl[IDX].name_len
04044 # define RO_NAME_LONG(IDX)              &(name_pool[RO_NAME_IDX(IDX)].name_long)
04045 # define RO_NAME_PTR(IDX)               &name_pool[RO_NAME_IDX(IDX)].name_char
04046 # define RO_NEXT_IDX(IDX)               rename_only_tbl[IDX].next_idx
04047 # define RO_RENAME_IDX(IDX)             rename_only_tbl[IDX].rename_idx
04048 # define RO_RENAME_NAME(IDX)            rename_only_tbl[IDX].rename_name
04049 # define RO_NAME_ATTR(IDX)              rename_only_tbl[IDX].attr_idx
04050 
04051 
04052 /* SECONDARY NAME TABLE */
04053 
04054 # define SN_ATTR_IDX(IDX)               sec_name_tbl[IDX].attr_idx
04055 # define SN_COLUMN_NUM(IDX)             sec_name_tbl[IDX].column_num
04056 # define SN_LINE_NUM(IDX)               sec_name_tbl[IDX].line_num
04057 # define SN_MATCHED_DARG(IDX)           sec_name_tbl[IDX].matched
04058 # define SN_NAME_IDX(IDX)               sec_name_tbl[IDX].name_idx
04059 # define SN_NAME_LEN(IDX)               sec_name_tbl[IDX].length
04060 # define SN_SIBLING_LINK(IDX)           sec_name_tbl[IDX].sibling_link
04061 
04062 
04063 /* STORAGE BLOCK TABLE */
04064 
04065 # define SB_ALIGN_SYMBOL(IDX)           stor_blk_tbl[IDX].fld.align_symbol
04066 # define SB_AUXILIARY(IDX)              stor_blk_tbl[IDX].fld.auxiliary
04067 # define SB_BLANK_COMMON(IDX)           stor_blk_tbl[IDX].fld.blank_common
04068 # define SB_BLK_HAS_NPES(IDX)           stor_blk_tbl[IDX].fld.blk_has_npes
04069 # define SB_BLK_TYPE(IDX)               stor_blk_tbl[IDX].fld.sb_type
04070 # define OLD_SB_BLK_TYPE(IDX)           stor_blk_tbl[IDX].fld.old_sb_type
04071 # define SB_CACHE_ALIGN(IDX)            stor_blk_tbl[IDX].fld.cache_align
04072 # define SB_CIF_SYMBOL_ID(IDX)          stor_blk_tbl[IDX].fld.cif_idx
04073 # define SB_COMMON_NEEDS_OFFSET(IDX)    stor_blk_tbl[IDX].fld.needs_offset
04074 # define SB_DCL_ERR(IDX)                stor_blk_tbl[IDX].fld.dcl_err
04075 # define SB_DCL_COMMON_DIR(IDX)         stor_blk_tbl[IDX].fld.dcl_common_dir
04076 # define SB_DEF_COLUMN(IDX)             stor_blk_tbl[IDX].fld.def_column
04077 # define SB_DEF_MULT_SCPS(IDX)          stor_blk_tbl[IDX].fld.def_mult_scps
04078 # define SB_DEF_LINE(IDX)               stor_blk_tbl[IDX].fld.def_line
04079 # define SB_DUPLICATE_COMMON(IDX)       stor_blk_tbl[IDX].fld.duplicate_common
04080 # define SB_EQUIVALENCED(IDX)           stor_blk_tbl[IDX].fld.equivalenced
04081 # define SB_FILL_SYMBOL(IDX)            stor_blk_tbl[IDX].fld.fill_symbol
04082 # define SB_FIRST_ATTR_IDX(IDX)         stor_blk_tbl[IDX].fld.first_attr_idx
04083 # define SB_HAS_RENAMES(IDX)            stor_blk_tbl[IDX].fld.has_renames
04084 # define SB_HIDDEN(IDX)                 stor_blk_tbl[IDX].fld.hidden
04085 # define SB_HOST_ASSOCIATED(IDX)        stor_blk_tbl[IDX].fld.host_associated
04086 # define SB_HOSTED_STACK(IDX)           stor_blk_tbl[IDX].fld.hosted_stack
04087 # define SB_HOSTED_STATIC(IDX)          stor_blk_tbl[IDX].fld.hosted_static
04088 # define SB_IS_COMMON(IDX)              stor_blk_tbl[IDX].fld.is_common
04089 # define SB_LAST_ATTR_LIST(IDX)         stor_blk_tbl[IDX].fld.last_attr_list
04090 # define SB_LEN_FLD(IDX)                stor_blk_tbl[IDX].fld.len_fld
04091 # define SB_LEN_IDX(IDX)                stor_blk_tbl[IDX].fld.len_idx
04092 # define SB_MERGED_BLK_IDX(IDX)         stor_blk_tbl[IDX].fld.merged_blk_idx
04093 # define SB_MODULE_IDX(IDX)             stor_blk_tbl[IDX].fld.module_idx
04094 # define SB_MODULE(IDX)                 stor_blk_tbl[IDX].fld.module
04095 # define SB_NAME_IDX(IDX)               stor_blk_tbl[IDX].fld.name_idx
04096 # define SB_NAME_PTR(IDX)               &name_pool[SB_NAME_IDX(IDX)].name_char
04097 # define SB_NAME_LONG(IDX)              &(name_pool[SB_NAME_IDX(IDX)].name_long)
04098 # define SB_NAME(IDX)                   name_pool[SB_NAME_IDX(IDX)].name_char
04099 # define SB_NAME_IN_STONE(IDX)          stor_blk_tbl[IDX].fld.name_in_stone
04100 # define SB_NAME_LEN(IDX)               stor_blk_tbl[IDX].fld.name_len
04101 # define SB_ORIG_SCP_IDX(IDX)           stor_blk_tbl[IDX].fld.orig_scp_idx
04102 # define SB_PAD_AMOUNT(IDX)             stor_blk_tbl[IDX].fld.pad_amount
04103 # define SB_PAD_AMOUNT_SET(IDX)         stor_blk_tbl[IDX].fld.pad_amount_set
04104 # define SB_PAD_BLK(IDX)                stor_blk_tbl[IDX].fld.pad_blk
04105 # define SB_RUNTIME_INIT(IDX)           stor_blk_tbl[IDX].fld.runtime_init
04106 # define SB_SAVED(IDX)                  stor_blk_tbl[IDX].fld.saved
04107 # define SB_SCP_IDX(IDX)                stor_blk_tbl[IDX].fld.scp_idx
04108 # define SB_SECTION_GP(IDX)             stor_blk_tbl[IDX].fld.section_gp
04109 # define SB_SECTION_NON_GP(IDX)         stor_blk_tbl[IDX].fld.section_non_gp
04110 # define SB_SYMMETRIC(IDX)              stor_blk_tbl[IDX].fld.symmetric
04111 # define SB_USE_ASSOCIATED(IDX)         stor_blk_tbl[IDX].fld.use_associated
04112 # define SB_VOLATILE(IDX)               stor_blk_tbl[IDX].fld.x_volatile
04113 
04114 
04115 /* TYPE TABLE */
04116 
04117 # define TYP_BIT_LEN(IDX)               type_tbl[IDX].fld.bit_len
04118 # define TYP_BIT_LEN_F(IDX)             type_tbl[IDX].wd.length
04119 # define TYP_CHAR_CLASS(IDX)            type_tbl[IDX].fld.char_class
04120 # define TYP_DCL_VALUE(IDX)             type_tbl[IDX].fld.dcl_value
04121 # define TYP_DECLARED_DBL(IDX)          type_tbl[IDX].fld.declared_dbl
04122 # define TYP_DESC(IDX)                  type_tbl[IDX].fld.desc
04123 # define TYP_DP_HIT_ME(IDX)             type_tbl[IDX].fld.dp_hit_me
04124 # define TYP_FLD(IDX)                   type_tbl[IDX].fld.type_fld
04125 # define TYP_IDX(IDX)                   type_tbl[IDX].fld.type_idx
04126 # define TYP_IS_BYTE(IDX)               type_tbl[IDX].fld.type_is_byte
04127 # define TYP_LINEAR(IDX)                type_tbl[IDX].fld.linear_type
04128 # define TYP_ORIG_LEN_IDX(IDX)          type_tbl[IDX].fld.bit_len
04129 # define TYP_PTR_INCREMENT(IDX)         type_tbl[IDX].fld.bit_len
04130 # define TYP_RESOLVED(IDX)              type_tbl[IDX].fld.resolved
04131 # define TYP_TYPE(IDX)                  type_tbl[IDX].fld.type
04132 # define TYP_KIND_CONST(IDX)            type_tbl[IDX].fld.kind_const
04133 # define TYP_KIND_DOUBLE(IDX)           type_tbl[IDX].fld.kind_double
04134 
04135 # define OLD_TYP_DP_HIT_ME(IDX)         type_tbl[IDX].wd.old_dp_hit_me
04136 # define OLD_TYP_FLD(IDX)               type_tbl[IDX].fld.old_type_fld
04137 # define OLD_TYP_RESOLVED(IDX)          type_tbl[IDX].wd.old_resolved
04138 # define OLD_TYP_TYPE(IDX)              type_tbl[IDX].wd.old_type
04139 
04140 
04141  
04142 /* SYMBOL TABLE SEARCH AND ENTER MACROS */
04143 
04144 /*  Used for secondary name table pool index and length. */
04145 
04146 # define MSK_NAME_IDX                    0000000000000077777777
04147 # define MSK_NAME_LEN                    0000000000000000000377 
04148 
04149 # if defined(_HOST64) && !defined(_WHIRL_HOST64_TARGET64)
04150 # define SN_NP_IDX(IDX)                 (sn_tbl_base[(IDX)<<1] & MSK_NAME_IDX)
04151 # else
04152 # define SN_NP_IDX(IDX)                 SN_NAME_IDX(IDX)
04153 # endif
04154 
04155 # if defined(_HOST64) && !defined(_WHIRL_HOST64_TARGET64)
04156 # define SN_LEN(IDX)                  ((sn_tbl_base[(IDX)<<1]>>24)&MSK_NAME_LEN)
04157 # else
04158 # define SN_LEN(IDX)                    SN_NAME_LEN(IDX)
04159 # endif
04160 
04161 /*  Cray shift is logical, SUN's and Alpha is arithmetic and  */
04162 /*  preserves the sign bit                                    */
04163 
04164 # ifdef _HOST_OS_UNICOS
04165 # define RIGHT_JUSTIFY_SIGN_BIT(I)      (I) >> (8 * sizeof(long) - 1)
04166 # else
04167 # define RIGHT_JUSTIFY_SIGN_BIT(I) ((unsigned long) (I) >> (8 * sizeof(long)-1))
04168 # endif
04169 
04170 # define STRIDE_CALC(SEG_LEN)           (((SEG_LEN) + _MAXVL - 1) / _MAXVL)
04171 # define WORD_LEN(ID_LEN)               ((ID_LEN) + sizeof(long)) / sizeof(long)
04172 
04173 
04174 /***********************************************\
04175 |* STATEMENT/FUNCTION-LIKE REPLACEMENT STRINGS *|
04176 \***********************************************/
04177 
04178 # define CLEAR_ATTR_NTRY(IDX)                                                  \
04179         CLEAR_TBL_NTRY(attr_tbl, IDX);                                         \
04180         CLEAR_TBL_NTRY(attr_aux_tbl, IDX);
04181 
04182 # define CLEAR_TBL_NTRY(TBL,IDX)                                               \
04183         {                                                                      \
04184          long   *_tbl_idx;                                                     \
04185          int     _tbl_i;                                                       \
04186          int     _size;                                                        \
04187          _tbl_idx       = ((long *) (&TBL[IDX]));                              \
04188          _size          = TBL##_num_wds;                                       \
04189          Pragma("_CRI shortloop")                                              \
04190          for (_tbl_i = 0; _tbl_i < _size; _tbl_i++) {                          \
04191             *(_tbl_idx) = 0;                                                   \
04192             _tbl_idx++;                                                        \
04193          }                                                                     \
04194         }
04195 
04196 # define COPY_ATTR_NTRY(TO, FROM)                                              \
04197         attr_tbl[TO]            = attr_tbl[FROM];                              \
04198         attr_aux_tbl[TO]        = attr_aux_tbl[FROM];
04199 
04200 
04201 # define COPY_TBL_NTRY(TBL, TO, FROM)                                          \
04202         {                                                                      \
04203          long   *_to_idx, *_from_idx;                                          \
04204          int     _idx;                                                         \
04205          int     _size;                                                        \
04206          _from_idx      = ((long *) (&TBL[FROM]));                             \
04207          _to_idx        = ((long *) (&TBL[TO]));                               \
04208          _size          = TBL##_num_wds;                                       \
04209          Pragma("_CRI shortloop")                                              \
04210          for (_idx = 0; _idx < _size; _idx++) {                                \
04211             *(_to_idx)  = *(_from_idx);                                        \
04212             _to_idx++;                                                         \
04213             _from_idx++;                                                       \
04214          }                                                                     \
04215         }
04216 
04217 # define COPY_GL_TBL_NTRY(TBL1, TBL2, TO, FROM)                                \
04218         {                                                                      \
04219          long   *_to_idx, *_from_idx;                                          \
04220          int     _idx;                                                         \
04221          _from_idx      = ((long *) (&TBL2[FROM]));                            \
04222          _to_idx        = ((long *) (&TBL1[TO]));                              \
04223          Pragma("_CRI shortloop")                                              \
04224          for (_idx = 0; _idx < TBL2##_num_wds; _idx++) {                       \
04225             *(_to_idx)  = *(_from_idx);                                        \
04226             _to_idx++;                                                         \
04227             _from_idx++;                                                       \
04228          }                                                                     \
04229         }
04230 
04231         
04232 # define COPY_BD_NTRY(TO, FROM)                                                \
04233         {                                                                      \
04234         int     _idx, _bd_num;                                                 \
04235         int     _size;                                                         \
04236         long    *_to_idx, *_from_idx;                                          \
04237         _from_idx       = ((long *) (&bounds_tbl[FROM]));                      \
04238         _to_idx         = ((long *) (&bounds_tbl[TO]));                        \
04239         _bd_num         = BD_NTRY_SIZE(FROM);                                  \
04240         _size           = NUM_BD_WDS * _bd_num;                                \
04241         Pragma("_CRI shortloop")                                               \
04242         for (_idx = 0; _idx < _size; _idx++) {                                 \
04243             *(_to_idx)  = *(_from_idx);                                        \
04244             _to_idx++;                                                         \
04245             _from_idx++;                                                       \
04246          }                                                                     \
04247         }
04248 
04249 
04250 # define CREATE_ERR_ATTR(IDX, LINE, COL, CLASS)                                \
04251         {                                                                      \
04252          int    _al_idx;                                                       \
04253          int    _err_idx;                                                      \
04254          NTR_ATTR_TBL(_err_idx);                                               \
04255          AT_DCL_ERR(IDX)                = TRUE;                                \
04256          COPY_COMMON_ATTR_INFO(IDX, _err_idx, CLASS);                          \
04257          AT_ATTR_LINK(_err_idx)         = NULL_IDX;                            \
04258          AT_DEF_LINE(_err_idx)          = LINE;                                \
04259          AT_DEF_COLUMN(_err_idx)        = COL;                                 \
04260          IDX                            = _err_idx;                            \
04261          NTR_ATTR_LIST_TBL(_al_idx);                                           \
04262          AL_ATTR_IDX(_al_idx)           = _err_idx;                            \
04263          AL_NEXT_IDX(_al_idx)           = SCP_CIF_ERR_LIST(curr_scp_idx);      \
04264          SCP_CIF_ERR_LIST(curr_scp_idx) = _al_idx;                             \
04265         }
04266 
04267 /* This macro copies common fields from on attr entry to another.  Class is   */
04268 /* what AT_OBJ_CLASS should end up being after the copy, in the TO attr.      */
04269 /* CLASS is passed in to prevent variant problems, because AT_OBJ_CLASS is    */
04270 /* used to decide which variant is active.                                    */
04271 
04272 # ifdef _HOST64
04273 # define COPY_COMMON_ATTR_INFO(FROM, TO, CLASS)                                \
04274         {attr_tbl[(TO)].wd[0]           = attr_tbl[(FROM)].wd[0];              \
04275          attr_tbl[(TO)].wd[1]           = attr_tbl[(FROM)].wd[1];              \
04276          attr_tbl[(TO)].fldd.field32_5  = attr_tbl[(FROM)].fldd.field32_5;     \
04277          attr_aux_tbl[(TO)].wd[0]       = attr_aux_tbl[(FROM)].wd[0];          \
04278          AT_OBJ_CLASS(TO)               = CLASS;                               \
04279          AT_CIF_SYMBOL_ID(TO)           = 0;                                   \
04280          AT_CIF_DONE(TO)                = FALSE;                               \
04281         }
04282 # else
04283 # define COPY_COMMON_ATTR_INFO(FROM, TO, CLASS)                                \
04284         {attr_tbl[(TO)].wd[0]           = attr_tbl[(FROM)].wd[0];              \
04285          attr_tbl[(TO)].wd[1]           = attr_tbl[(FROM)].wd[1];              \
04286          attr_tbl[(TO)].wd[2]           = attr_tbl[(FROM)].wd[2];              \
04287          attr_tbl[(TO)].wd[3]           = attr_tbl[(FROM)].wd[3];              \
04288          attr_tbl[(TO)].wd[4]           = attr_tbl[(FROM)].wd[4];              \
04289          attr_aux_tbl[(TO)].wd[0]       = attr_aux_tbl[(FROM)].wd[0];          \
04290          attr_aux_tbl[(TO)].wd[1]       = attr_aux_tbl[(FROM)].wd[1];          \
04291          AT_OBJ_CLASS(TO)               = CLASS;                               \
04292          AT_CIF_SYMBOL_ID(TO)           = 0;                                   \
04293          AT_CIF_DONE(TO)                = FALSE;                               \
04294         }
04295 # endif
04296 
04297 # ifdef _HOST64
04298 # define COPY_VARIANT_ATTR_INFO(FROM, TO, CLASS)                               \
04299         {attr_tbl[(TO)].fldd.field32_6  = attr_tbl[(FROM)].fldd.field32_6;     \
04300          attr_tbl[(TO)].wd[3]           = attr_tbl[(FROM)].wd[3];              \
04301          attr_tbl[(TO)].wd[4]           = attr_tbl[(FROM)].wd[4];              \
04302          attr_tbl[(TO)].wd[5]           = attr_tbl[(FROM)].wd[5];              \
04303          attr_tbl[(TO)].wd[6]           = attr_tbl[(FROM)].wd[6];              \
04304          attr_aux_tbl[(TO)].wd[1]       = attr_aux_tbl[(FROM)].wd[1];          \
04305          attr_aux_tbl[(TO)].wd[2]       = attr_aux_tbl[(FROM)].wd[2];          \
04306          AT_OBJ_CLASS(TO)               = CLASS;                               \
04307         }
04308 # else
04309 # define COPY_VARIANT_ATTR_INFO(FROM, TO, CLASS)                               \
04310         {attr_tbl[(TO)].wd[5]           = attr_tbl[(FROM)].wd[5];              \
04311          attr_tbl[(TO)].wd[6]           = attr_tbl[(FROM)].wd[6];              \
04312          attr_tbl[(TO)].wd[7]           = attr_tbl[(FROM)].wd[7];              \
04313          attr_tbl[(TO)].wd[8]           = attr_tbl[(FROM)].wd[8];              \
04314          attr_tbl[(TO)].wd[9]           = attr_tbl[(FROM)].wd[9];              \
04315          attr_tbl[(TO)].wd[10]          = attr_tbl[(FROM)].wd[10];             \
04316          attr_tbl[(TO)].wd[11]          = attr_tbl[(FROM)].wd[11];             \
04317          attr_tbl[(TO)].wd[12]          = attr_tbl[(FROM)].wd[12];             \
04318          attr_tbl[(TO)].wd[13]          = attr_tbl[(FROM)].wd[13];             \
04319          attr_aux_tbl[(TO)].wd[2]       = attr_aux_tbl[(FROM)].wd[2];          \
04320          attr_aux_tbl[(TO)].wd[3]       = attr_aux_tbl[(FROM)].wd[3];          \
04321          attr_aux_tbl[(TO)].wd[4]       = attr_aux_tbl[(FROM)].wd[4];          \
04322          attr_aux_tbl[(TO)].wd[5]       = attr_aux_tbl[(FROM)].wd[5];          \
04323          AT_OBJ_CLASS(TO)               = CLASS;                               \
04324         }
04325 # endif
04326 
04327 
04328 /* This macro clears variant fields in the attr entry.  AT_OBJ_CLASS = CLASS  */
04329 /* CLASS is passed in to prevent variant problems, because AT_OBJ_CLASS is    */
04330 /* used to decide which variant is active.                                    */
04331 
04332 # ifdef _HOST64
04333 # define CLEAR_VARIANT_ATTR_INFO(IDX, CLASS)                                   \
04334         {attr_tbl[(IDX)].fldd.field32_6 = 0;                                   \
04335          attr_tbl[(IDX)].wd[3]          = 0;                                   \
04336          attr_tbl[(IDX)].wd[4]          = 0;                                   \
04337          attr_tbl[(IDX)].wd[5]          = 0;                                   \
04338          attr_tbl[(IDX)].wd[6]          = 0;                                   \
04339          AT_OBJ_CLASS(IDX)              = CLASS;                               \
04340          attr_aux_tbl[(IDX)].wd[1]      = 0;                                   \
04341          attr_aux_tbl[(IDX)].wd[2]      = 0;                                   \
04342         }
04343 # else
04344 # define CLEAR_VARIANT_ATTR_INFO(IDX, CLASS)                                   \
04345         {attr_tbl[(IDX)].wd[5]          = 0;                                   \
04346          attr_tbl[(IDX)].wd[6]          = 0;                                   \
04347          attr_tbl[(IDX)].wd[7]          = 0;                                   \
04348          attr_tbl[(IDX)].wd[8]          = 0;                                   \
04349          attr_tbl[(IDX)].wd[9]          = 0;                                   \
04350          attr_tbl[(IDX)].wd[10]         = 0;                                   \
04351          attr_tbl[(IDX)].wd[11]         = 0;                                   \
04352          attr_tbl[(IDX)].wd[12]         = 0;                                   \
04353          attr_tbl[(IDX)].wd[13]         = 0;                                   \
04354          AT_OBJ_CLASS(IDX)              = CLASS;                               \
04355          attr_aux_tbl[(IDX)].wd[2]      = 0;                                   \
04356          attr_aux_tbl[(IDX)].wd[3]      = 0;                                   \
04357          attr_aux_tbl[(IDX)].wd[4]      = 0;                                   \
04358          attr_aux_tbl[(IDX)].wd[5]      = 0;                                   \
04359         }
04360 # endif
04361 
04362 /* Use to make a Function result for an attribute.  The attribute must be a   */
04363 /*     Pgm_Unit.  Adding any of the following to a Pgm_Unit attr with         */
04364 /*     Pgm_Unknown will force it to a Function:  TYPE, DIMENSION, POINTER,    */
04365 /*     TARGET, VFUNCTION, or declaring it to be a NAMELIST object.  Also,     */
04366 /*     this is needed by call_list_semantics when something is being called   */
04367 /*     as a Function, but is still a Pgm_Unknown.  This only creates the      */
04368 /*     result attr and links it up.  Typing and anything else must be done    */
04369 /*     by the caller.                                                         */
04370 
04371 
04372 # define CREATE_FUNC_RSLT(AT_IDX, RSLT_IDX)                                    \
04373          NTR_ATTR_TBL(RSLT_IDX);                                               \
04374          COPY_COMMON_ATTR_INFO(AT_IDX, RSLT_IDX, Data_Obj);                    \
04375          ATD_CLASS(RSLT_IDX)    = Function_Result;                             \
04376          ATD_FUNC_IDX(RSLT_IDX) = AT_IDX;                                      \
04377          ATP_RSLT_IDX(AT_IDX)   = RSLT_IDX;
04378 
04379 
04380 # define FREE_IR_LIST_NODE(IDX)                                                \
04381         IL_NEXT_LIST_IDX(IDX)           = IL_NEXT_LIST_IDX(NULL_IDX);          \
04382         IL_NEXT_LIST_IDX(NULL_IDX)      = IDX;
04383 
04384 
04385 # define FREE_IR_NODE(IDX)                                                     \
04386         IR_NEXT_IDX(IDX)                = IR_NEXT_IDX(NULL_IDX);               \
04387         IR_NEXT_IDX(NULL_IDX)           = IDX;
04388 
04389 
04390 # define FREE_SH_NODE(IDX)                                                     \
04391         SH_NEXT_IDX(IDX)                = SH_NEXT_IDX(NULL_IDX);               \
04392         SH_NEXT_IDX(NULL_IDX)           = IDX;
04393 
04394 # define FREE_GL_IR_LIST_NODE(IDX)                                             \
04395         GL_IL_NEXT_LIST_IDX(IDX)           = GL_IL_NEXT_LIST_IDX(NULL_IDX);    \
04396         GL_IL_NEXT_LIST_IDX(NULL_IDX)      = IDX;
04397 
04398 
04399 # define FREE_GL_IR_NODE(IDX)                                                  \
04400         GL_IR_NEXT_IDX(IDX)                = GL_IR_NEXT_IDX(NULL_IDX);         \
04401         GL_IR_NEXT_IDX(NULL_IDX)           = IDX;
04402 
04403 
04404 # define FREE_GL_SH_NODE(IDX)                                                  \
04405         GL_SH_NEXT_IDX(IDX)                = GL_SH_NEXT_IDX(NULL_IDX);         \
04406         GL_SH_NEXT_IDX(NULL_IDX)           = IDX;
04407 
04408 
04409 
04410 # define GEN_COMPILER_TMP_ASG(IR_IDX, ATTR_IDX, SEM_DONE, LINE, COL, TYPE_IDX, \
04411                               SCOPE)                                           \
04412         {NTR_IR_TBL(IR_IDX);                                                   \
04413          ATTR_IDX                     = gen_compiler_tmp(LINE,COL,SCOPE,TRUE); \
04414          AT_SEMANTICS_DONE(ATTR_IDX)    = SEM_DONE;                            \
04415          ATD_TYPE_IDX(ATTR_IDX)         = TYPE_IDX;                            \
04416          ATD_TMP_IDX(ATTR_IDX)          = IR_IDX;                              \
04417          ATD_FLD(ATTR_IDX)              = IR_Tbl_Idx;                          \
04418          ATD_STOR_BLK_IDX(ATTR_IDX)     = SCP_SB_STACK_IDX(curr_scp_idx);      \
04419          AT_DEFINED(ATTR_IDX)           = TRUE;                                \
04420          IR_OPR(IR_IDX)                 = Asg_Opr;                             \
04421          IR_TYPE_IDX(IR_IDX)            = ATD_TYPE_IDX(ATTR_IDX);              \
04422          IR_FLD_L(IR_IDX)               = AT_Tbl_Idx;                          \
04423          IR_IDX_L(IR_IDX)               = ATTR_IDX;                            \
04424          IR_LINE_NUM_L(IR_IDX)          = LINE;                                \
04425          IR_LINE_NUM(IR_IDX)            = LINE;                                \
04426          IR_COL_NUM_L(IR_IDX)           = COL;                                 \
04427          IR_COL_NUM(IR_IDX)             = COL;                                 \
04428         }
04429 
04430 # define IS_STMT_ENTITY(ATTR_IDX)                                              \
04431         (AT_OBJ_CLASS(ATTR_IDX) == Data_Obj &&                                 \
04432          ATD_SEEN_AS_LCV(ATTR_IDX) &&                                          \
04433          ! ATD_SEEN_IN_IMP_DO(ATTR_IDX) &&                                     \
04434          ! ATD_SEEN_OUTSIDE_IMP_DO(ATTR_IDX))
04435 
04436 # define NTR_ATTR_TBL(ATTR_IDX)                                                \
04437          TBL_REALLOC_CK(attr_tbl, 1);                                          \
04438          CLEAR_TBL_NTRY(attr_tbl, attr_tbl_idx);                               \
04439          TBL_REALLOC_CK(attr_aux_tbl, 1);                                      \
04440          CLEAR_TBL_NTRY(attr_aux_tbl, attr_aux_tbl_idx);                       \
04441          ATTR_IDX = attr_tbl_idx;
04442 
04443 # define NTR_ATTR_LIST_TBL(ATTR_LIST_IDX)                                      \
04444          {int           _idx;                                                  \
04445           _idx          = ntr_attr_list_tbl();                                 \
04446          ATTR_LIST_IDX  = _idx;}
04447 
04448 # define ADD_ATTR_TO_LOCAL_LIST(AT_IDX)         add_attr_to_local_list(AT_IDX);
04449 
04450 
04451 # define NTR_EQ_TBL(EQ_IDX)                                                    \
04452          TBL_REALLOC_CK(equiv_tbl, 1);                                         \
04453          CLEAR_TBL_NTRY(equiv_tbl, equiv_tbl_idx);                             \
04454          EQ_OFFSET_FLD(equiv_tbl_idx)   = CN_Tbl_Idx;                          \
04455          EQ_OFFSET_IDX(equiv_tbl_idx)   = CN_INTEGER_ZERO_IDX;                 \
04456          EQ_IDX = equiv_tbl_idx;
04457 
04458 /* If a module is to be read on a 64 bit system, it requires a full 64 bit    */
04459 /* word following the name pool entry.  If the name pool entry was originally */
04460 /* created on a 32 bit system, it would only have a 32 bit word following it. */
04461 /* This macro is used to add an extra 32 bit word when this is a cross        */
04462 /* compiler from a 32 bit system to a 64 bit system.                          */
04463 
04464 # if defined(_TARGET64) && defined(_HOST32)
04465 # define EXTRA_WORD                     1
04466 # else
04467 # define EXTRA_WORD                     0
04468 # endif
04469 
04470 # define NTR_NAME_POOL(NAME, LEN, NP_IDX)                                      \
04471         {register long  *_name_id;                                             \
04472          register int    _np_idx;                                              \
04473          register int    _start_idx;                                           \
04474          register int    _wd_len;                                              \
04475          _name_id       = NAME;                                                \
04476          _wd_len        = WORD_LEN(LEN) + EXTRA_WORD;                          \
04477          _start_idx     = name_pool_idx + 1;                                   \
04478          NP_IDX         = _start_idx;                                          \
04479          TBL_REALLOC_CK(name_pool,_wd_len);                                    \
04480          for (_np_idx = 0; _np_idx < _wd_len; _np_idx++) {                     \
04481              name_pool[_start_idx+_np_idx].name_long = _name_id[_np_idx];      \
04482          }                                                                     \
04483         }
04484 
04485 
04486 # define NTR_IR_LIST_TBL(IR_LIST_IDX)                                          \
04487             {int        _idx;                                                  \
04488             _idx = ntr_ir_list_tbl();                                          \
04489             IR_LIST_IDX = _idx;}
04490             
04491 
04492 
04493 # define NTR_IR_TBL(IR_IDX)                                                    \
04494             {int        _idx;                                                  \
04495             _idx = ntr_ir_tbl();                                               \
04496             IR_IDX = _idx;}
04497 
04498 # define NTR_GL_IR_LIST_TBL(IR_LIST_IDX)                                       \
04499             {int        _idx;                                                  \
04500             _idx = ntr_gl_ir_list_tbl();                                       \
04501             IR_LIST_IDX = _idx;}
04502 
04503 
04504 
04505 # define NTR_GL_IR_TBL(IR_IDX)                                                 \
04506             {int        _idx;                                                  \
04507             _idx = ntr_gl_ir_tbl();                                            \
04508             IR_IDX = _idx;}
04509 
04510 
04511 
04512 # define NTR_SCP_TBL(SCP_IDX)                                                  \
04513         TBL_REALLOC_CK(scp_tbl,1);                                             \
04514         CLEAR_TBL_NTRY(scp_tbl, scp_tbl_idx);                                  \
04515         SCP_IDX = scp_tbl_idx;
04516 
04517 
04518 # define NTR_SN_TBL(SN_IDX)                                                    \
04519          TBL_REALLOC_CK(sec_name_tbl,1);                                       \
04520          CLEAR_TBL_NTRY(sec_name_tbl, sec_name_tbl_idx);                       \
04521          SN_IDX = sec_name_tbl_idx;
04522 
04523 
04524 # define NTR_INTERFACE_IN_SN_TBL(SN_IDX, AT_IDX, PARENT_IDX, LINE, COLUMN)     \
04525         NTR_SN_TBL(SN_IDX);                                                    \
04526         SN_ATTR_IDX(SN_IDX)               = AT_IDX;                            \
04527         SN_NAME_LEN(SN_IDX)               = AT_NAME_LEN(AT_IDX);               \
04528         SN_NAME_IDX(SN_IDX)               = AT_NAME_IDX(AT_IDX);               \
04529         SN_LINE_NUM(SN_IDX)               = LINE;                              \
04530         SN_COLUMN_NUM(SN_IDX)             = COLUMN;                            \
04531         SN_SIBLING_LINK(SN_IDX)           = ATI_FIRST_SPECIFIC_IDX(PARENT_IDX);\
04532         ATI_FIRST_SPECIFIC_IDX(PARENT_IDX)= SN_IDX;                            \
04533         ATI_NUM_SPECIFICS(PARENT_IDX)    += 1;
04534 
04535 
04536 #if defined(_HOST64) && !defined(_WHIRL_HOST64_TARGET64)
04537 # define NTR_NAME_IN_LN_TBL(ENTER_NAME_IDX, NEW_NAME_IDX)                      \
04538         {long   *_name_tbl_base;                                               \
04539          int     _idx;                                                         \
04540          _name_tbl_base = (long *) loc_name_tbl;                               \
04541          Pragma("_CRI ivdep")                                                  \
04542          for (_idx = SCP_LN_LW_IDX(curr_scp_idx);                              \
04543               _idx>= ENTER_NAME_IDX; _idx--) {                                 \
04544            _name_tbl_base[_idx] = _name_tbl_base[_idx-1];                      \
04545          }                                                                     \
04546          loc_name_tbl[ENTER_NAME_IDX]  = loc_name_tbl[NEW_NAME_IDX];           \
04547         }
04548 #else
04549 # define NTR_NAME_IN_LN_TBL(ENTER_NAME_IDX, NEW_NAME_IDX)                      \
04550         {int     _idx;                                                         \
04551          Pragma("_CRI ivdep")                                                  \
04552          for (_idx = SCP_LN_LW_IDX(curr_scp_idx);                              \
04553               _idx>= ENTER_NAME_IDX; _idx--) {                                 \
04554             loc_name_tbl[_idx]  = loc_name_tbl[_idx-1];                        \
04555          }                                                                     \
04556          loc_name_tbl[ENTER_NAME_IDX]  = loc_name_tbl[NEW_NAME_IDX];           \
04557         }
04558 # endif
04559 
04560 
04561 # define SET_IMPL_TYPE(AT_IDX)                                                 \
04562         {int    _i_idx;                                                        \
04563          _i_idx                 = IMPL_IDX(AT_OBJ_NAME(AT_IDX));               \
04564          ATD_TYPE_IDX(AT_IDX)   = IM_TYPE_IDX(curr_scp_idx, _i_idx);           \
04565         }
04566 
04567 
04568 # define SET_IMPL_TYPE_IN_SCP(AT_IDX, SCP_IDX)                                 \
04569         {int    _i_idx;                                                        \
04570          _i_idx                 = IMPL_IDX(AT_OBJ_NAME(AT_IDX));               \
04571          ATD_TYPE_IDX(AT_IDX)   = IM_TYPE_IDX(SCP_IDX, _i_idx);                \
04572         }
04573 
04574 # define BITS_TO_WORDS(BIT_SIZE, ALIGN_TO)                                     \
04575         bits_and_bytes_to_words(&(BIT_SIZE), (ALIGN_TO == 64) ? 63:31,         \
04576                                 (ALIGN_TO == 64) ? 6 : 5);
04577 
04578 # define BYTES_TO_WORDS(BIT_SIZE, ALIGN_TO)                                    \
04579         bits_and_bytes_to_words(&(BIT_SIZE), (ALIGN_TO == 64) ? 7:3,           \
04580                                 (ALIGN_TO == 64) ? 3 : 2);
04581 
04582 /*      This routine will test the value held in an integer array (c) against */
04583 /*      the value held in TRUE_VALUE to see if the they match. This is to     */
04584 /*      the cases when a logical result from a fold is two machine words.     */
04585 
04586 # if defined(_TARGET32) && !defined(_TARGET_LITTLE_ENDIAN)
04587 # define THIS_IS_TRUE(THE_CONSTANT, TYPE_IDX)                                  \
04588        ((THE_CONSTANT)[(TYP_LINEAR(TYPE_IDX) == Logical_8) ? 1:0] == TRUE_VALUE)
04589 # else  /* TARGET64 */
04590 # define THIS_IS_TRUE(THE_CONSTANT, TYPE_IDX)                                  \
04591         ((THE_CONSTANT)[0] == TRUE_VALUE)
04592 # endif
04593 
04594 
04595 # if defined(_HOST64) && defined(_TARGET64)
04596 # define CONVERT_CVAL_TO_STR(CONSTANT, TYPE_IDX, RESULT)                       \
04597         convert_to_string(CONSTANT, TYPE_IDX, RESULT)
04598 # else
04599 # define CONVERT_CVAL_TO_STR(CONSTANT, TYPE_IDX, RESULT)                       \
04600         convert_cval_to_string(CONSTANT, TYPE_IDX, RESULT)
04601 # endif
04602 
04603 
04604 /******************************************************************************\
04605 |*                                                                            *|
04606 |* The following macros are used to convert host and target integer constant. *|
04607 |* be used in 'C' arithmetic and comparison.                                  *|
04608 |*                                                                            *|
04609 |* C_TO_F_INT  : C host integer const to target const in an array of long_type*|
04610 |* C_INT_TO_CN : C host integer const to the constant table.                  *|
04611 |* CN_INT_TO_C : Constant table entry to C host integer const                 *|
04612 |* F_INT_TO_C  : Target integer constant (array of long_type) to C host int   *|
04613 |*                                                                            *|
04614 |* target integer constant is declared  long_type   con[MAX_WORDS_FOR_INTEGER]*|
04615 |* A host integer constant is declared  long64      con                       *|
04616 |*                                                                            *|
04617 |* Arithmetic on target integer constants must be done with calls to folder.  *|
04618 |* Arithmetic on host integer constants can be done with 'C' code.            *|
04619 |*                                                                            *|
04620 |* The underlying defs for long_type and long64 are in target.h               *|
04621 |*                                                                            *|
04622 \******************************************************************************/
04623 
04624 
04625 # if defined(_TARGET64) && defined(_HOST64)
04626 # define F_INT_TO_C(ARRAY,LIN_TYPE)     *(ARRAY)
04627 # elif (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
04628 # define F_INT_TO_C(ARRAY,LIN_TYPE)                                            \
04629                         ((LIN_TYPE == Integer_8 || LIN_TYPE == Typeless_8)     \
04630                                    ? *((long64 *) (ARRAY)):(long64) *(ARRAY))
04631 # else
04632 # define F_INT_TO_C(ARRAY,LIN_TYPE)     f_int_to_cval(ARRAY, LIN_TYPE)
04633 # endif
04634 
04635 # if defined(_TARGET_OS_MAX)
04636 # define CN_INT_TO_C(IDX)       mpp_cn_int_to_c(IDX)
04637 # else
04638 # define CN_INT_TO_C(IDX)                                                      \
04639          F_INT_TO_C(&CN_CONST(IDX), TYP_LINEAR(CN_TYPE_IDX(IDX)))
04640 # endif
04641 
04642 # define C_INT_TO_CN(TYPE_IDX, CONST)                                          \
04643         ntr_int_const_tbl(TYPE_IDX, (long64) (CONST))
04644 
04645 /* Extra care is taken here, because CONST might be a literal */
04646 /* constant, so an address cannot be taken of CONST.          */
04647 
04648 /* 09Feb01[sos] was: # if defined(_TARGET64) && defined(_HOST64) */
04649 # if defined(_TARGET64)
04650 # define C_TO_F_INT(ARRAY, CONST, LIN_TYPE)     ARRAY[0] = CONST
04651 # elif (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))
04652 # define C_TO_F_INT(ARRAY, CONST, LIN_TYPE)                                    \
04653         {                                                                      \
04654         long   *_cn_ptr;                                                       \
04655         long64  _big_cn;                                                       \
04656         if (LIN_TYPE == Integer_8 || LIN_TYPE == Typeless_8) {                 \
04657            _big_cn = (long64) CONST;                                           \
04658            _cn_ptr = (long *) &_big_cn;                                        \
04659            ARRAY[0] = *_cn_ptr;                                                \
04660            ARRAY[1] = *(++_cn_ptr);                                            \
04661         } else {                                                               \
04662            ARRAY[0] = (long) CONST;                                            \
04663            ARRAY[1] = 0;                                                       \
04664         } }
04665 # else
04666 # define C_TO_F_INT(ARRAY, CONST, LIN_TYPE)                                    \
04667         {                                                                      \
04668         long64   _con;                                                         \
04669         _con = (long64) CONST;                                                 \
04670         cval_to_f_int(ARRAY, &_con, LIN_TYPE);                                 \
04671         }
04672 # endif
04673 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines