Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
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 00037 /* USMID: "\n@(#)5.0_pl/headers/sytb.h 5.12 10/07/99 12:46:27\n" */ 00038 00039 /***************************************\ 00040 |* globally accessible type specifiers *| 00041 \***************************************/ 00042 00043 enum access_values {Public, Private }; 00044 00045 enum align_values {No_Align, 00046 Align_Bit, 00047 Align_8, 00048 Align_16, 00049 Align_32, 00050 Align_64, 00051 Align_Double, 00052 Align_128 }; 00053 00054 enum atd_class_values {Atd_Unknown, Variable, 00055 Dummy_Argument, Function_Result, 00056 Compiler_Tmp, CRI__Pointee, 00057 Struct_Component, Constant }; 00058 00059 enum atl_class_values {Lbl_Unknown, Lbl_User, 00060 Lbl_Format, Lbl_Internal, 00061 Lbl_Debug, Lbl_Construct, 00062 Lbl_LoopInternal }; 00063 00064 /* This is set up to match the Interface calls */ 00065 00066 enum atl_debug_class_values {Ldbg_None, Ldbg_Stmt_Lbl, 00067 Ldbg_Exit_Point, Ldbg_End_Prologue, 00068 Ldbg_Start_Epilogue, Ldbg_Construct_Name, 00069 Ldbg_Loop_Lbl, Ldbg_User_Lbl }; 00070 00071 /* This is set up to match the Interface calls */ 00072 00073 enum atp_proc_values {Unknown_Proc, Extern_Proc, 00074 Intrin_Proc, Dummy_Proc, 00075 Intern_Proc, Imported_Proc, 00076 Module_Proc, 00077 Intrin_src_Proc, 00078 Intern_Proc_Refd=2}; 00079 00080 enum bd_array_size_values {Unknown_Size, Constant_Size, 00081 Var_Len_Array, Symbolic_Constant_Size}; 00082 00083 enum bd_array_values {Unknown_Array, Explicit_Shape, 00084 Assumed_Size, Deferred_Shape, 00085 Assumed_Shape, Deferred_Shape1 }; 00086 00087 enum directive_label_values {Safevl_Dir_Idx, 00088 Unroll_Dir_Idx, 00089 Maxcpus_Dir_Idx, 00090 Mark_Dir_Idx, 00091 Cache_Bypass_Dir_Idx, 00092 Concurrent_Dir_Idx, 00093 Blockable_Dir_Idx, 00094 Interchange_Dir_Idx, 00095 Interchange_Level_Dir_Idx, 00096 Num_Dir_On_List }; 00097 00098 enum distribution_values {No_Distribution, 00099 Block_Distribution, 00100 Cyclic_Distribution, 00101 Star_Distribution }; 00102 00103 enum file_path_values {Unknown_Fp, 00104 Directory_Fp, 00105 File_Fp, 00106 Mod_File_Fp, 00107 Archive_File_Fp, 00108 Elf_File_Fp, 00109 Module_Fp, 00110 Current_Compile_Fp, 00111 Include_Fp, 00112 Inline_Fp, 00113 Reshape_Array_Fp, 00114 Xcoff_File_Fp }; 00115 00116 enum implicit_storage_values {Impl_Default_Storage, 00117 Impl_Automatic_Storage, 00118 Impl_Static_Storage }; 00119 00120 enum intent_values {Intent_Unseen, Intent_In, 00121 Intent_Out, Intent_Inout }; 00122 00123 enum interface_values {Generic_Unknown_Interface, 00124 Generic_Function_Interface, 00125 Generic_Subroutine_Interface, 00126 Defined_Interface, 00127 Defined_Assign_Interface, 00128 Defined_Unary_Interface, 00129 Defined_Binary_Interface, 00130 Defined_Unary_Or_Binary_Interface }; 00131 00132 00133 enum obj_class_values {Data_Obj, Pgm_Unit, 00134 Label, Derived_Type, 00135 Interface, Namelist_Grp, 00136 Stmt_Func, Common_Block=Stmt_Func}; 00137 00138 /* This is set up to match the Interface calls. */ 00139 /* This can't go beyond 7, because it will blow field size. */ 00140 00141 enum pgm_unit_values {Pgm_Unknown=0, Function=3, 00142 Subroutine=4, Program=5, 00143 Blockdata=6, Module=7 }; 00144 00145 enum reference_values {Not_Referenced, Char_Rslt_Bound_Ref, 00146 Dcl_Bound_Ref, Referenced }; 00147 00148 enum sb_name_values {What_Blk, 00149 Based_Blk, 00150 Data_Init_Blk, 00151 Pointee_Blk, 00152 Stack_Host_Blk, 00153 Data_Blk, 00154 Sym_Blk, 00155 Data_Uninit_Blk, 00156 Stack_Blk, 00157 Dargs_Blk, 00158 End_Name_Blk}; 00159 00160 00161 enum sb_type_values {Unknown_Seg, Static, 00162 Stack, Formal, 00163 Common, Extern, 00164 Exported, Task_Common, 00165 Soft_External, Global_Breg, 00166 Global_Treg, Static_Named, 00167 Based, Equivalenced, 00168 Restricted, Distributed, 00169 LM_Static, LM_Common, 00170 LM_Extern, Auxiliary, 00171 Static_Local, Non_Local_Stack, 00172 Non_Local_Formal, Hosted_Stack, 00173 Threadprivate, Coment, 00174 ZModule 00175 }; 00176 00177 enum type_char_values {Unknown_Char, Const_Len_Char, 00178 Var_Len_Char, Assumed_Size_Char }; 00179 00180 enum type_desc_values {Default_Typed, Star_Typed, 00181 Kind_Typed }; 00182 00183 enum use_type_values {Use_Not, Use_All, 00184 Use_Renamed, Use_Only }; 00185 00186 enum holler_type_values {Not_Hollerith, H_Hollerith, 00187 L_Hollerith, R_Hollerith }; 00188 00189 00190 typedef enum access_values access_type; 00191 typedef enum align_values align_type; 00192 typedef enum atd_class_values atd_class_type; 00193 typedef enum atl_class_values atl_class_type; 00194 typedef enum atl_debug_class_values atl_debug_class_type; 00195 typedef enum atp_proc_values atp_proc_type; 00196 typedef enum bd_array_values bd_array_type; 00197 typedef enum bd_array_size_values bd_array_size_type; 00198 typedef enum directive_label_values directive_label_type; 00199 typedef enum distribution_values distribution_type; 00200 typedef enum implicit_storage_values implicit_storage_type; 00201 typedef enum intent_values intent_type; 00202 typedef enum interface_values interface_type; 00203 typedef enum obj_class_values obj_class_type; 00204 typedef enum pgm_unit_values pgm_unit_type; 00205 typedef enum reference_values reference_type; 00206 typedef enum sb_type_values sb_type_type; 00207 typedef enum type_char_values type_char_type; 00208 typedef enum type_desc_values type_desc_type; 00209 typedef enum use_type_values use_type_type; 00210 typedef enum holler_type_values holler_type; 00211 00212 typedef long_type const_pool_type; 00213 00214 typedef union attr_tbl_entry attr_tbl_type; 00215 typedef union attr_aux_tbl_entry attr_aux_tbl_type; 00216 typedef union bounds_tbl_entry bounds_tbl_type; 00217 typedef union global_attr_tbl_entry global_attr_tbl_type; 00218 typedef union global_bounds_tbl_entry global_bounds_tbl_type; 00219 typedef union ir_list_tbl_entry ir_list_tbl_type; 00220 typedef union ir_list_tbl_entry global_ir_list_tbl_type; 00221 typedef union name_pool_entry name_pool_type; 00222 typedef union scp_wd_entry scp_wd_type; 00223 typedef union global_type_tbl_entry global_type_tbl_type; 00224 typedef union type_tbl_entry type_tbl_type; 00225 00226 typedef struct attr_list_tbl_entry attr_list_tbl_type; 00227 00228 typedef struct const_search_tbl_entry const_search_tbl_type; 00229 typedef struct cs_idx_tbl_entry cs_idx_tbl_type; 00230 00231 typedef struct const_tbl_entry const_tbl_type; 00232 typedef struct new_const_tbl_entry new_const_tbl_type; 00233 typedef struct old_const_tbl_entry old_const_tbl_type; 00234 typedef struct equiv_tbl_entry equiv_tbl_type; 00235 typedef struct file_path_tbl_entry file_path_tbl_type; 00236 typedef struct global_line_tbl_entry global_line_tbl_type; 00237 typedef struct intrin_tbl_entry intrin_tbl_type; 00238 typedef struct intrin_map_entry intrin_map_type; 00239 typedef struct ir_list_link_entry ir_list_link_type; 00240 typedef struct ir_opr_entry ir_opr_type; 00241 typedef struct ir_tbl_entry ir_tbl_type; 00242 typedef struct old_ir_tbl_entry old_ir_tbl_type; 00243 typedef struct old_ir_opr_entry old_ir_opr_type; 00244 typedef struct ir_tbl_entry global_ir_tbl_type; 00245 typedef struct name_tbl_entry name_tbl_type; 00246 typedef struct mod_link_tbl_entry mod_link_tbl_type; 00247 typedef struct pdg_link_tbl_entry pdg_link_tbl_type; 00248 typedef struct pdt_tbl_hdr_entry pdt_tbl_hdr_type; 00249 typedef struct rename_only_entry rename_only_tbl_type; 00250 typedef struct scp_tbl_entry scp_tbl_type; 00251 typedef struct sec_name_tbl_entry sec_name_tbl_type; 00252 typedef struct sh_tbl_entry sh_tbl_type; 00253 typedef struct size_offset_entry size_offset_type; 00254 typedef struct sh_tbl_entry global_sh_tbl_type; 00255 typedef union stor_blk_tbl_entry stor_blk_tbl_type; 00256 00257 /* Needed for table alloc macros */ 00258 00259 typedef struct name_tbl_entry loc_name_tbl_type; 00260 typedef struct name_tbl_entry global_name_tbl_type; 00261 typedef struct name_tbl_entry hidden_name_tbl_type; 00262 typedef union name_pool_entry str_pool_type; 00263 00264 /***************************\ 00265 |* Integer Constant entry *| 00266 \***************************/ 00267 00268 struct size_offset_entry {Uint type_idx : 16; 00269 Uint unused : 12; 00270 fld_type fld : 4; 00271 Uint idx : 32; 00272 long_type constant[MAX_WORDS_FOR_INTEGER]; 00273 }; 00274 00275 /**************************************************\ 00276 |* PDT definition - must match PDT used by segldr *| 00277 \**************************************************/ 00278 00279 struct pdt_tbl_hdr_entry {Uint hdr_type : 7; 00280 Uint UNUSED : 9; 00281 Uint hdr_bi : 16; 00282 Uint hdr_len : 32; 00283 }; 00284 00285 00286 /******************\ 00287 |* ATTR AUX TABLE *| 00288 \******************/ 00289 00290 union attr_aux_tbl_entry { 00291 struct { 00292 Uint def_line : 24; 00293 Uint def_column : 8; 00294 boolean cif_use_in_bnd : 1; 00295 boolean cif_done : 1; 00296 boolean semantics_done : 1; 00297 boolean arg_to_kind : 1; 00298 boolean access_set : 1; 00299 boolean locked_in : 1; 00300 boolean cif_usage_rec : 1; 00301 boolean unused : 1; 00302 Uint cif_sym_id : 24; 00303 00304 Uint field1 : 16; 00305 Uint field2 : 16; 00306 boolean flag1 : 1; 00307 boolean flag2 : 1; 00308 boolean flag3 : 1; 00309 boolean flag4 : 1; 00310 boolean flag5 : 1; 00311 boolean flag6 : 1; 00312 boolean flag7 : 1; 00313 boolean flag8 : 1; 00314 Uint field3 : 24; 00315 00316 Uint field4 : 24; 00317 boolean flag9 : 1; 00318 boolean flag10 : 1; 00319 boolean flag11 : 1; 00320 boolean flag12 : 1; 00321 boolean flag13 : 1; 00322 boolean flag14 : 1; 00323 boolean flag15 : 1; 00324 boolean flag16 : 1; 00325 boolean flag17 : 1; 00326 boolean flag18 : 1; 00327 boolean flag19 : 1; 00328 boolean flag20 : 1; 00329 boolean flag21 : 1; 00330 boolean flag22 : 1; 00331 boolean flag23 : 1; 00332 boolean flag24 : 1; 00333 Uint field5 : 24; 00334 00335 } fld; 00336 long wd[NUM_AA_WDS]; 00337 }; 00338 00339 00340 /*******************\ 00341 |* ATTR LIST TABLE *| 00342 \*******************/ 00343 00344 struct attr_list_tbl_entry {Uint next_idx : 16; 00345 Uint prev_idx : 16; 00346 boolean flag1 : 1; 00347 boolean flag2 : 1; 00348 Uint unused : 6; 00349 Uint attr_idx : 24; 00350 }; 00351 00352 00353 /*******************\ 00354 |* ATTRIBUTE TABLE *| 00355 \*******************/ 00356 00357 union attr_tbl_entry { 00358 struct { 00359 Uint object_class : 4; 00360 Uint module_idx : 20; 00361 Uint referenced : 2; 00362 boolean defined : 1; 00363 boolean passed_as_arg : 1; 00364 boolean optional : 1; 00365 boolean private_access : 1; 00366 boolean use_associated : 1; 00367 boolean host_associated : 1; 00368 00369 boolean namelist_obj : 1; 00370 boolean dcl_err : 1; 00371 boolean is_darg : 1; 00372 boolean alt_darg : 1; 00373 boolean elemental_intrin: 1; 00374 boolean is_intrin : 1; 00375 boolean typed : 1; 00376 boolean def_in_child : 1; 00377 boolean ref_in_child : 1; 00378 boolean compiler_gend : 1; 00379 boolean not_visible : 1; 00380 boolean ignore_attr_link: 1; 00381 Uint attr_link : 20; 00382 00383 Uint orig_name_idx : 24; 00384 Uint orig_name_len : 8; 00385 Uint length : 8; 00386 Uint name_idx : 24; 00387 00388 Uint orig_module_idx : 20; 00389 boolean module_object : 1; 00390 boolean is_concurrent : 1; 00391 Uint unused : 10; 00392 Uint unused1 : 8; 00393 Uint field7 : 24; 00394 00395 Uint secondary_info : 3; 00396 Uint field2 : 3; 00397 Uint field3 : 2; 00398 Uint field4 : 24; 00399 00400 boolean flag1 : 1; 00401 boolean flag2 : 1; 00402 boolean flag3 : 1; 00403 boolean flag4 : 1; 00404 boolean flag5 : 1; 00405 boolean flag6 : 1; 00406 boolean flag7 : 1; 00407 boolean flag8 : 1; 00408 boolean flag9 : 1; 00409 boolean flag10 : 1; 00410 boolean flag11 : 1; 00411 boolean flag12 : 1; 00412 Uint field1 : 20; 00413 00414 Uint field5 : 16; 00415 Uint field6 : 16; 00416 00417 boolean flag17 : 1; 00418 boolean flag18 : 1; 00419 boolean flag19 : 1; 00420 boolean flag20 : 1; 00421 boolean flag21 : 1; 00422 boolean flag22 : 1; 00423 boolean flag23 : 1; 00424 boolean flag24 : 1; 00425 boolean flag25 : 1; 00426 boolean flag26 : 1; 00427 boolean flag27 : 1; 00428 boolean flag28 : 1; 00429 Uint field8 : 20; 00430 00431 boolean flag29 : 1; 00432 boolean flag30 : 1; 00433 boolean flag31 : 1; 00434 boolean flag32 : 1; 00435 boolean flag33 : 1; 00436 boolean flag34 : 1; 00437 boolean flag35 : 1; 00438 boolean flag36 : 1; 00439 Uint field10 : 24; 00440 Uint field12 : 8; 00441 Uint field13 : 24; 00442 00443 Uint field14 : 24; 00444 boolean flag49 : 1; 00445 boolean flag50 : 1; 00446 boolean flag51 : 1; 00447 boolean flag52 : 1; 00448 boolean flag53 : 1; 00449 boolean flag54 : 1; 00450 boolean flag55 : 1; 00451 boolean flag56 : 1; 00452 00453 boolean flag37 : 1; 00454 boolean flag38 : 1; 00455 boolean flag39 : 1; 00456 boolean flag40 : 1; 00457 boolean flag41 : 1; 00458 boolean flag42 : 1; 00459 boolean flag43 : 1; 00460 boolean flag44 : 1; 00461 boolean flag45 : 1; 00462 boolean flag46 : 1; 00463 boolean flag47 : 1; 00464 boolean flag48 : 1; 00465 Uint field16 : 20; 00466 00467 Uint field_m :32 ; 00468 Uint unused_m :32 ; 00469 00470 } fld; 00471 00472 /* This is used to specify a 32 bit alternative for */ 00473 /* one of the 64 bit words. */ 00474 00475 struct {Uint field32_1 : 32; 00476 Uint field32_2 : 32; 00477 Uint field32_3 : 32; 00478 Uint field32_4 : 32; 00479 Uint field32_5 : 32; 00480 Uint field32_6 : 32; 00481 Uint field32_7 : 32; 00482 Uint field32_8 : 32; 00483 Uint field32_9 : 32; 00484 Uint field32_10 : 32; 00485 Uint field32_11 : 32; 00486 Uint field32_12 : 32; 00487 Uint field32_13 : 32; 00488 Uint field32_14 : 32; 00489 Uint field32_15 : 32; 00490 Uint field32_16 : 32; 00491 } fldd; 00492 00493 /* This is used to specify fld_type, so that we can */ 00494 /* get good error checking to prevent indexes being */ 00495 /* assigned to the enum field. */ 00496 00497 struct {Uint field32_1 : 32; 00498 Uint field32_2 : 32; 00499 Uint field32_3 : 32; 00500 Uint field32_4 : 32; 00501 Uint field32_5 : 32; 00502 Uint field32_6 : 32; 00503 Uint field32_7 : 32; 00504 Uint field32_8 : 32; 00505 Uint field23 : 24; 00506 Uint UNUSED : 8; 00507 Uint field32_10 : 32; 00508 Uint field32_11 : 32; 00509 fld_type field22 : 8; 00510 Uint field32_12 : 24; 00511 Uint distribution_idx: 20; 00512 Uint alignment : 4; 00513 Uint field32_13_2 : 8; 00514 Uint field32_14 : 32; 00515 /*add by fzhao*/ 00516 Uint field32_15 : 32; 00517 Uint field32_16 : 32; 00518 } fld2; 00519 00520 00521 /* This is what the attr table looked like in release */ 00522 /* 3.0. It can be removed in release 5.0. */ 00523 00524 struct { 00525 Uint : 32; 00526 boolean not_visible : 1; 00527 boolean use_associated : 1; 00528 boolean host_associated : 1; 00529 boolean cif_use_in_bnd : 1; 00530 boolean cif_done : 1; 00531 boolean module_object : 1; 00532 boolean arg_to_kind : 1; 00533 Uint unused : 2; 00534 Uint module_idx : 20; 00535 Uint object_class : 3; 00536 00537 Uint unused1 : 32; 00538 Uint unused2 : 32; 00539 00540 Uint orig_name_idx : 24; 00541 Uint orig_name_len : 8; 00542 Uint length : 8; 00543 Uint name_idx : 24; 00544 00545 Uint secondary_info : 3; 00546 Uint field2 : 3; 00547 Uint field3 : 2; 00548 Uint field4 : 24; 00549 00550 boolean flag1 : 1; 00551 boolean flag2 : 1; 00552 boolean flag3 : 1; 00553 boolean flag4 : 1; 00554 boolean flag5 : 1; 00555 boolean flag6 : 1; 00556 boolean flag7 : 1; 00557 boolean flag8 : 1; 00558 boolean flag9 : 1; 00559 boolean flag10 : 1; 00560 boolean flag11 : 1; 00561 boolean flag12 : 1; 00562 boolean flag13 : 1; 00563 boolean flag14 : 1; 00564 boolean flag15 : 1; 00565 boolean flag16 : 1; 00566 Uint field1 : 16; 00567 00568 Uint field5 : 16; 00569 Uint field6 : 16; 00570 00571 boolean flag17 : 1; 00572 boolean flag18 : 1; 00573 boolean flag19 : 1; 00574 boolean flag20 : 1; 00575 boolean flag21 : 1; 00576 boolean flag22 : 1; 00577 boolean flag23 : 1; 00578 boolean flag24 : 1; 00579 boolean flag25 : 1; 00580 boolean flag26 : 1; 00581 boolean flag27 : 1; 00582 boolean flag28 : 1; 00583 Uint field8 : 20; 00584 00585 boolean flag29 : 1; 00586 boolean flag30 : 1; 00587 boolean flag31 : 1; 00588 boolean flag32 : 1; 00589 boolean flag33 : 1; 00590 boolean flag34 : 1; 00591 boolean flag35 : 1; 00592 boolean flag36 : 1; 00593 Uint field10 : 24; 00594 Uint field12 : 8; 00595 Uint field13 : 24; 00596 00597 Uint field14 : 16; 00598 Uint field15 : 16; 00599 boolean flag37 : 1; 00600 boolean flag38 : 1; 00601 boolean flag39 : 1; 00602 boolean flag40 : 1; 00603 boolean flag41 : 1; 00604 boolean flag42 : 1; 00605 boolean flag43 : 1; 00606 boolean flag44 : 1; 00607 boolean flag45 : 1; 00608 boolean flag46 : 1; 00609 boolean flag47 : 1; 00610 boolean flag48 : 1; 00611 Uint field16 : 20; 00612 /*added by fzhao*/ 00613 Uint field17 : 32; 00614 Uint field18 : 32; 00615 } old; 00616 00617 long wd[NUM_AT_WDS]; 00618 }; 00619 00620 00621 /***************\ 00622 |* ARRAY TABLE *| 00623 \***************/ 00624 00625 00626 union bounds_tbl_entry { /* TOTAL 2 64 bit */ 00627 00628 struct {Uint rank : 8; 00629 Uint array_class : 3; 00630 boolean error : 1; 00631 Uint global_idx : 20; 00632 00633 Uint len_idx : 24; 00634 fld_type len_fld : 4; 00635 boolean resolved : 1; 00636 Uint array_size : 3; 00637 00638 Uint line_num : 24; 00639 Uint column_num : 8; 00640 00641 Uint next_free_ntry : 20; 00642 Uint UNUSED2 : 2; 00643 Uint flow_dep : 1; 00644 Uint used_ntry : 1; 00645 Uint ntry_size : 6; 00646 boolean dist_reshape : 1; 00647 boolean dist_ntry : 1; 00648 } hdr; 00649 00650 struct {Uint rank : 4; 00651 fld_type len_fld : 4; 00652 Uint len_idx : 24; 00653 00654 Uint next_free_ntry : 16; 00655 Uint ntry_size : 4; 00656 Uint used_ntry : 1; 00657 boolean error : 1; 00658 boolean resolved : 1; 00659 Uint array_size : 3; 00660 Uint array_class : 3; 00661 Uint UNUSED2 : 3; 00662 00663 Uint line_num : 24; 00664 Uint column_num : 8; 00665 Uint UNUSED3 : 30; 00666 boolean dist_reshape : 1; 00667 boolean dist_ntry : 1; 00668 } old_hdr; 00669 00670 struct {fld_type lb_fld : 4; 00671 Uint UNUSED1 : 4; 00672 Uint lb_idx : 24; 00673 Uint ub_idx : 24; 00674 Uint UNUSED2 : 4; 00675 fld_type ub_fld : 4; 00676 00677 fld_type sm_fld : 4; 00678 Uint UNUSED3 : 4; 00679 Uint sm_idx : 24; 00680 Uint xt_idx : 24; 00681 Uint UNUSED4 : 4; 00682 fld_type xt_fld : 4; 00683 00684 } dim; 00685 00686 struct {fld_type cyclic_fld : 4; 00687 distribution_type distribution : 4; 00688 Uint cyclic_idx : 24; 00689 Uint onto_idx : 24; 00690 Uint UNUSED2 : 4; 00691 fld_type onto_fld : 4; 00692 00693 Uint UNUSED3 : 32; 00694 Uint UNUSED4 : 32; 00695 00696 } dist; 00697 00698 struct { 00699 # if defined(_HOST32) 00700 long long lb; 00701 long long ub; 00702 # else 00703 long lb; 00704 long ub; 00705 # endif 00706 } wd; 00707 long len[NUM_BD_WDS]; 00708 }; 00709 00710 /*******************\ 00711 |* CONSTANT TABLES *| 00712 \*******************/ 00713 00714 /* The const_tbl_idx only needs to be 24 bits, so the other 8 bits could be */ 00715 /* used for flags. */ 00716 00717 struct const_search_tbl_entry { Uint const_tbl_idx : 32; 00718 Uint UNUSED : 32; 00719 }; 00720 00721 struct cs_idx_tbl_entry { 00722 Uint bottom_idx : 32; 00723 Uint top_idx : 32; 00724 Uint last_entry_idx : 32; 00725 Uint curr_inc_size : 32; 00726 }; 00727 00728 00729 struct const_tbl_entry {Uint const_pool_idx : 32; 00730 Uint UNUSED1 : 7; 00731 boolean extra_zero_word : 1; 00732 boolean hollerith_endian: 1; 00733 signed int balance_factor : 2; 00734 holler_type hollerith_fld : 3; 00735 boolean boolean_constant: 1; 00736 boolean boz_constant : 1; 00737 Uint type_idx : 16; 00738 Uint left_child : 32; 00739 Uint right_child : 32; 00740 }; 00741 00742 /* the following types are used for module translations. */ 00743 00744 struct old_const_tbl_entry {Uint const_pool_idx : 32; 00745 Uint UNUSED1 : 7; 00746 boolean extra_zero_word : 1; 00747 boolean hollerith_endian: 1; 00748 Uint UNUSED2 : 2; 00749 holler_type hollerith_fld : 3; 00750 boolean boolean_constant: 1; 00751 boolean boz_constant : 1; 00752 Uint type_idx : 16; 00753 }; 00754 00755 struct new_const_tbl_entry {Uint const_pool_idx : 32; 00756 Uint UNUSED1 : 7; 00757 boolean extra_zero_word : 1; 00758 boolean hollerith_endian: 1; 00759 int balance_factor : 2; 00760 holler_type hollerith_fld : 3; 00761 boolean boolean_constant: 1; 00762 boolean boz_constant : 1; 00763 Uint type_idx : 16; 00764 Uint left_child : 32; 00765 Uint right_child : 32; 00766 }; 00767 00768 00769 /************************\ 00770 |* EQUIV TABLE *| 00771 \************************/ 00772 00773 struct equiv_tbl_entry {Uint next_equiv_grp : 16; 00774 Uint next_equiv_obj : 16; 00775 00776 Uint substring : 1; 00777 Uint dalign_me : 1; 00778 Uint dalign_shift : 1; 00779 Uint do_not_dalign : 1; 00780 Uint search_done : 1; 00781 Uint merged : 1; 00782 Uint semantics_done : 1; 00783 Uint error : 1; 00784 Uint list_idx : 24; 00785 00786 Uint line_num : 24; 00787 Uint column_num : 8; 00788 00789 fld_type opnd_fld : 8; 00790 fld_type fld : 4; 00791 Uint attr_idx : 20; 00792 00793 Uint grp_end_idx : 16; 00794 Uint grp_idx : 16; 00795 Uint offset_idx : 32; 00796 00797 Uint opnd_idx : 24; 00798 Uint unused2 : 8; 00799 Uint unused3 : 32; 00800 }; 00801 00802 /*******************\ 00803 |* FILE PATH TABLE *| 00804 \*******************/ 00805 00806 struct file_path_tbl_entry {Uint name_idx : 24; 00807 Uint file_class : 4; 00808 boolean tmp_file : 1; 00809 boolean output_to_o : 1; 00810 boolean system_file : 1; 00811 boolean srch_the_file : 1; 00812 00813 Uint cif_id : 16; 00814 Uint name_len : 16; 00815 00816 Uint file_idx : 16; 00817 Uint module_inline_idx: 16; 00818 00819 Uint next_file_idx : 16; 00820 Uint next_idx : 16; 00821 00822 # if defined(_HOST32) && defined(_TARGET32) 00823 Uint unused3 : 32; 00824 # endif 00825 long_type offset; 00826 }; 00827 00828 00829 /*********************\ 00830 |* GLOBAL ATTR TABLE *| 00831 \*********************/ 00832 00833 union global_attr_tbl_entry { 00834 00835 struct {Uint def_column : 8; 00836 Uint def_line : 24; 00837 00838 boolean defined : 1; 00839 boolean use_associated : 1; 00840 boolean optional : 1; 00841 boolean compiler_gend : 1; 00842 boolean referenced : 1; 00843 boolean flag01 : 1; 00844 boolean flag02 : 1; 00845 boolean flag03 : 1; 00846 Uint module_idx : 20; 00847 Uint object_class : 4; 00848 00849 Uint orig_name_idx : 24; 00850 Uint orig_name_len : 8; 00851 Uint length : 8; 00852 Uint name_idx : 24; 00853 00854 Uint field1 : 20; 00855 Uint field2 : 4; 00856 boolean flag1 : 1; 00857 boolean flag2 : 1; 00858 boolean flag3 : 1; 00859 boolean flag4 : 1; 00860 boolean flag5 : 1; 00861 boolean flag6 : 1; 00862 boolean flag7 : 1; 00863 boolean flag8 : 1; 00864 boolean flag9 : 1; 00865 boolean flag10 : 1; 00866 boolean flag11 : 1; 00867 boolean flag12 : 1; 00868 Uint field3 : 20; 00869 Uint field4 : 4; 00870 Uint field5 : 4; 00871 00872 Uint field6 : 16; 00873 Uint field7 : 16; 00874 Uint field8 : 32; 00875 00876 } fld; 00877 00878 struct {Uint field32_1 : 32; 00879 Uint field32_2 : 32; 00880 Uint field32_3 : 32; 00881 Uint field32_4 : 32; 00882 Uint field32_5 : 32; 00883 Uint field32_5a : 24; 00884 Uint field32_6 : 8; 00885 00886 long_type length[MAX_WORDS_FOR_INTEGER]; 00887 } wd; 00888 }; 00889 00890 00891 /**********************\ 00892 |* GLOBAL ARRAY TABLE *| 00893 \**********************/ 00894 00895 union global_bounds_tbl_entry { 00896 00897 struct {Uint rank : 8; 00898 Uint array_size : 8; 00899 Uint array_class : 8; 00900 Uint unused1 : 8; 00901 Uint unused2 : 8; 00902 Uint unused3 : 24; 00903 } hdr; 00904 00905 struct {Uint lb_type : 32; 00906 Uint ub_type : 32; 00907 } type; 00908 00909 00910 long_type len[MAX_WORDS_FOR_INTEGER]; 00911 }; 00912 00913 /*********************\ 00914 |* GLOBAL LINE TABLE *| 00915 \*********************/ 00916 00917 struct global_line_tbl_entry {Uint global_line : 32; 00918 Uint file_line : 32; 00919 00920 Uint file_name_idx : 32; 00921 Uint unused : 16; 00922 Uint file_name_len : 16; 00923 Uint incld_file_line : 32; 00924 Uint incld_file_col : 32; 00925 00926 Uint path_name_idx : 32; 00927 Uint path_name_len : 32; 00928 00929 Uint source_lines : 32; 00930 Uint unused1 : 8; 00931 Uint cif_file_id : 24; 00932 }; 00933 00934 00935 /*********************\ 00936 |* GLOBAL NAME TABLE *| 00937 \*********************/ 00938 00939 struct global_name_tbl_entry {Uint name_len : 12; 00940 Uint attr_idx : 20; 00941 boolean UNUSED : 8; 00942 Uint name_idx : 24; 00943 }; 00944 00945 /*****************\ 00946 |* IR LIST TABLE *| 00947 \*****************/ 00948 00949 struct ir_list_link_entry {Uint prev_idx : 24; 00950 boolean flag_1 : 1; 00951 boolean flag_2 : 1; 00952 boolean flag_3 : 1; 00953 boolean flag_4 : 1; 00954 boolean flag_5 : 1; 00955 Uint for_ref : 3; 00956 00957 /* Uint unused : 4;*/ 00958 /* We need bring detail arguments' description to cvrt_to_PDG 00959 * and further to whirl representation,so we need these 4 bits 00960 * to record the information about dummy-actual arguments matching 00961 * the flag will be use in s_call.c "final_arg_work" function 00962 * and cvrt_to_PDG i_cvrt.c 00963 * -----fzhao 00964 */ 00965 Uint multi_flags : 4; 00966 00967 Uint flag_8 : 1; 00968 boolean flag_6 : 1; 00969 boolean flag_7 : 1; 00970 boolean arg_desc : 1; 00971 Uint nxt_idx : 24; 00972 }; 00973 00974 00975 union ir_list_tbl_entry{struct 00976 {ir_list_link_type link; /* word 1 */ 00977 opnd_type op; /* word 2 */ 00978 } il; 00979 long words[NUM_IL_WDS]; 00980 struct 00981 {long64 lwd1; 00982 long64 lwd2; 00983 } il_long64; 00984 }; 00985 00986 00987 /************\ 00988 |* IR TABLE *| 00989 \************/ 00990 00991 struct old_ir_opr_entry {operator_type the_operator : 10; 00992 Uint dim : 3; 00993 Uint rank : 3; 00994 Uint type_idx : 16; 00995 Uint line_num : 24; 00996 Uint col_num : 8; 00997 }; 00998 00999 01000 struct ir_opr_entry {operator_type the_operator : 16; 01001 Uint type_idx : 16; 01002 Uint line_num : 24; 01003 Uint col_num : 8; 01004 Uint rank : 8; 01005 Uint dim : 8; 01006 Uint UNUSED1 : 16; 01007 Uint UNUSED2 : 32; 01008 }; 01009 01010 01011 struct old_ir_tbl_entry {old_ir_opr_type opr; /* word 1 */ 01012 opnd_type op_l; /* word 2 */ 01013 opnd_type op_r; /* word 3 */ 01014 }; 01015 01016 struct ir_tbl_entry {ir_opr_type opr; /* word 1 */ 01017 opnd_type op_l; /* word 2 */ 01018 opnd_type op_r; /* word 3 */ 01019 }; 01020 01021 /********************\ 01022 |* LOCAL NAME TABLE *| 01023 \********************/ 01024 01025 struct name_tbl_entry {Uint attr_idx : 24; 01026 Uint name_len : 8; 01027 boolean in_only_list : 1; 01028 boolean renamed : 1; 01029 boolean def_locally : 1; 01030 boolean new_name : 1; 01031 Uint UNUSED1 : 4; 01032 Uint name_idx : 24; 01033 }; 01034 01035 01036 /******************\ 01037 |* MOD LINK TABLE *| 01038 \******************/ 01039 01040 struct mod_link_tbl_entry {Uint at_idx : 32; 01041 01042 boolean at_compressed : 1; 01043 boolean at_ln_name : 1; 01044 boolean at_searched : 1; 01045 boolean at_search_me : 1; 01046 boolean at_keep_me : 1; 01047 boolean cp_keep_me : 1; 01048 boolean cp_dalign_me : 1; 01049 boolean ln_keep_me : 1; 01050 Uint ln_idx : 24; 01051 01052 Uint cp_idx : 32; 01053 Uint cp_len : 32; 01054 01055 Uint cn_idx : 32; 01056 Uint np_len : 8; 01057 Uint np_idx : 24; 01058 01059 Uint il_idx : 32; 01060 boolean il_keep_me : 1; 01061 boolean cn_keep_me : 1; 01062 boolean np_keep_me : 1; 01063 Uint unused1 : 4; 01064 boolean ir_keep_me : 1; 01065 Uint ir_idx : 24; 01066 01067 Uint sh_idx : 32; 01068 boolean sh_keep_me : 1; 01069 Uint unused2 : 3; 01070 boolean bd_keep_me : 1; 01071 boolean sb_keep_me : 1; 01072 boolean typ_keep_me : 1; 01073 boolean sn_keep_me : 1; 01074 Uint sn_idx : 24; 01075 01076 Uint typ_idx : 16; 01077 Uint sb_idx : 16; 01078 Uint bd_idx : 32; 01079 }; 01080 01081 01082 /*******************\ 01083 |* NAME POOL TABLE *| 01084 \*******************/ 01085 01086 union name_pool_entry {long name_long; 01087 char name_char; 01088 }; 01089 01090 01091 /******************\ 01092 |* PDG LINK TABLE *| 01093 \******************/ 01094 01095 struct pdg_link_tbl_entry {Ulong at_idx; 01096 Ulong cn_idx; 01097 Ulong sb_idx; 01098 Uint at_typ_idx : 32; 01099 }; 01100 01101 01102 /*********************\ 01103 |* RENAME ONLY TABLE *| 01104 \*********************/ 01105 01106 struct rename_only_entry {Uint line_num : 24; 01107 Uint column_num : 8; 01108 Uint name_len : 8; 01109 Uint name_idx : 24; 01110 01111 Uint unused : 23; 01112 boolean duplicate_rename : 1; 01113 Uint unused1 : 7; 01114 boolean rename_name : 1; 01115 Uint rename_idx : 16; 01116 Uint next_idx : 16; 01117 Uint attr_idx : 24; 01118 Uint xx : 8; 01119 01120 Uint unused2 : 32; 01121 }; 01122 01123 01124 /***************\ 01125 |* SCOPE TABLE *| 01126 \***************/ 01127 01128 union scp_wd_entry {struct {boolean typed : 1; 01129 boolean flag1 : 1; 01130 boolean flag2 : 1; 01131 boolean flag3 : 1; 01132 Uint storage : 4; 01133 Uint field2 : 24; 01134 Uint field3 : 16; 01135 Uint type_idx : 16; 01136 } fld1; 01137 01138 struct {Uint UNUSED1 : 8; 01139 Uint field4 : 8; 01140 Uint field5 : 16; 01141 Uint UNUSED2 : 32; 01142 } fld2; 01143 01144 }; 01145 01146 struct scp_tbl_entry {scp_wd_type wd[MAX_IMPL_CHS]; 01147 }; 01148 01149 01150 /************************\ 01151 |* SECONDARY NAME TABLE *| 01152 \************************/ 01153 01154 struct sec_name_tbl_entry {Uint sibling_link : 24; 01155 Uint unused1 : 8; 01156 01157 /* WARNING - JLS has hard coded shifts and masks for these fields. DO NOT */ 01158 /* move them unless you want a bunch of wierd stuff to happen. */ 01159 01160 Uint length : 8; 01161 Uint name_idx : 24; 01162 01163 Uint line_num : 24; 01164 Uint column_num : 8; 01165 01166 Uint unused2 : 7; 01167 boolean matched : 1; 01168 Uint attr_idx : 24; 01169 }; 01170 01171 01172 /**************************\ 01173 |* STATEMENT HEADER TABLE *| 01174 \**************************/ 01175 01176 struct sh_tbl_entry {Uint old_stmt_type : 7; 01177 Uint stmt_parse_err : 1; 01178 Uint glb_line_num : 24; 01179 Uint col_num : 8; 01180 Uint ir_idx : 24; 01181 01182 /* word 2 */ 01183 Uint parent_blk_idx : 24; 01184 boolean action_stmt : 1; 01185 boolean inlining_attempted : 1; 01186 boolean cif_skip_me : 1; 01187 boolean doall_loop_end : 1; 01188 boolean loop_end : 1; 01189 boolean labeled : 1; 01190 boolean compiler_gen : 1; 01191 boolean skip_pass_2 : 1; 01192 01193 Uint unused : 16; 01194 stmt_type_type stmt_type : 16; 01195 01196 /* word 3 */ 01197 Uint prev_sh_idx : 32; 01198 Uint next_sh_idx : 32; 01199 }; 01200 01201 01202 /***********************\ 01203 |* STORAGE BLOCK TABLE *| 01204 \***********************/ 01205 01206 union stor_blk_tbl_entry {struct { 01207 Uint name_idx : 24; 01208 Uint name_len : 8; 01209 Uint orig_scp_idx : 16; 01210 Uint scp_idx : 16; 01211 01212 Uint first_attr_idx : 20; 01213 boolean saved : 1; 01214 boolean module : 1; 01215 boolean blank_common : 1; 01216 boolean auxiliary : 1; 01217 boolean dcl_err : 1; 01218 boolean hidden : 1; 01219 boolean needs_offset : 1; 01220 boolean hosted_stack : 1; 01221 boolean def_mult_scps : 1; 01222 boolean use_associated : 1; 01223 boolean host_associated : 1; 01224 boolean has_renames : 1; 01225 boolean is_common : 1; 01226 boolean cache_align : 1; 01227 boolean hosted_static : 1; 01228 boolean dcl_common_dir : 1; 01229 boolean blk_has_npes : 1; 01230 boolean symmetric : 1; 01231 boolean pad_blk : 1; 01232 Uint old_sb_type : 5; 01233 boolean pad_amount_set : 1; 01234 boolean equivalenced : 1; 01235 boolean UNUSED : 1; 01236 boolean name_in_stone : 1; 01237 Uint last_attr_list : 16; 01238 01239 Uint merged_blk_idx : 16; 01240 Uint UNUSED1 : 16; 01241 sb_type_type sb_type : 8; 01242 boolean align_symbol : 1; 01243 boolean fill_symbol : 1; 01244 boolean section_gp : 1; 01245 boolean section_non_gp : 1; 01246 Uint module_idx : 20; 01247 01248 Uint def_line : 24; 01249 Uint def_column : 8; 01250 boolean runtime_init : 1; 01251 boolean duplicate_common: 1; 01252 boolean x_volatile : 1; 01253 boolean flag31 : 1; 01254 boolean flag32 : 1; 01255 boolean flag33 : 1; 01256 boolean flag34 : 1; 01257 boolean flag35 : 1; 01258 Uint cif_idx : 24; 01259 01260 Uint pad_amount : 16; 01261 Uint UNUSED3 : 16; 01262 fld_type len_fld : 8; 01263 Uint len_idx : 24; 01264 } fld; 01265 01266 struct { 01267 Uint Unused1 : 32; 01268 Uint Unused2 : 32; 01269 01270 Uint Unused3 : 32; 01271 Uint Unused4 : 32; 01272 01273 Uint Unused5 : 32; 01274 Uint Unused6 : 32; 01275 01276 Uint Unused7 : 32; 01277 Uint Unused8 : 32; 01278 01279 01280 # if defined(_HOST32) && defined(_TARGET32) 01281 Uint Unused9 : 32; 01282 # endif 01283 long_type blk_len; 01284 }wd; 01285 }; 01286 01287 01288 /**************\ 01289 |* TYPE TABLE *| 01290 \**************/ 01291 01292 /* *** WARNING *** If the fields change here, type_init_tbl needs to change */ 01293 /* *** WARNING *** in type.h It is based on the type table definition. */ 01294 01295 union type_tbl_entry {struct 01296 {basic_type_type type : 8; 01297 Uint dcl_value : 5; 01298 Uint UNUSED0 : 3; 01299 Uint char_class : 2; 01300 boolean kind_const : 1; 01301 boolean kind_double : 1; 01302 boolean dp_hit_me : 1; 01303 boolean resolved : 1; 01304 boolean type_is_byte : 1; 01305 boolean declared_dbl : 1; 01306 Uint UNUSED1 : 2; 01307 Uint desc : 2; 01308 fld_type type_fld : 4; 01309 01310 Uint type_idx : 24; 01311 linear_type_type linear_type : 8; 01312 long64 bit_len; 01313 }fld; 01314 struct 01315 {Uint UNUSED3 : 32; 01316 Uint UNUSED4 : 32; 01317 Uint UNUSED5 : 32; 01318 Uint index : 32; 01319 }wd2; 01320 01321 struct 01322 {Uint UNUSED6 : 32; 01323 Uint UNUSED7 : 32; 01324 01325 # if defined(_HOST32) && defined(_TARGET32) 01326 Uint UNUSED5 : 32; 01327 # endif 01328 long_type old_bit_len; 01329 }wd1; 01330 01331 01332 struct 01333 {Uint UNUSED8 : 32; 01334 Uint UNUSED9 : 32; 01335 long_type length[MAX_WORDS_FOR_INTEGER]; 01336 }wd; 01337 }; 01338 01339 01340 union global_type_tbl_entry {struct 01341 {basic_type_type type : 8; 01342 Uint dcl_value : 5; 01343 Uint UNUSED0 : 3; 01344 Uint char_class : 2; 01345 Uint len_lin_type : 8; 01346 Uint desc : 2; 01347 Uint UNUSED2 : 4; 01348 01349 Uint type_idx : 24; 01350 linear_type_type linear_type : 8; 01351 long64 bit_len; 01352 }fld; 01353 01354 struct 01355 {Uint UNUSED8 : 32; 01356 Uint UNUSED9 : 32; 01357 long_type length[MAX_WORDS_FOR_INTEGER]; 01358 }wd; 01359 }; 01360 01361 01362 /*******************************************\ 01363 |* intrinsic table declarations *| 01364 \*******************************************/ 01365 01366 struct intrin_tbl_entry { 01367 id_str_type id_str; 01368 Uint name_len : 6; 01369 boolean elemental : 1; 01370 boolean function : 1; 01371 boolean passable : 1; 01372 boolean external : 1; 01373 boolean optional : 1; 01374 boolean dope : 1; 01375 boolean generic : 1; 01376 boolean non_ansi : 1; 01377 Uint n_specifics : 9; 01378 Uint intrin_enum : 9; 01379 Uint data_type : 32; 01380 }; 01381 01382 struct intrin_map_entry { 01383 id_str_type id_str; 01384 id_str_type mapped_4; 01385 id_str_type mapped_8; 01386 }; 01387 01388 01389 01390 01391 /*******************************************\ 01392 |* globally accessible function prototypes *| 01393 \*******************************************/ 01394 01395 extern void add_attr_to_local_list(int); 01396 extern void align_bit_length(size_offset_type *, int); 01397 extern void assign_offset(int); 01398 extern void assign_storage_blk(int); 01399 extern attr_aux_tbl_type *attr_aux_var_error(char *, int); 01400 extern bounds_tbl_type *bd_var_error(char *, int); 01401 extern void bits_and_bytes_to_words(size_offset_type *, int, int); 01402 extern void global_name_semantics(int, int, int, int, int); 01403 extern void check_for_duplicate_renames(int); 01404 extern int check_global_pgm_unit(int); 01405 extern int check_type_for_size_address(opnd_type *); 01406 extern void chg_data_obj_to_pgm_unit(int, pgm_unit_type, 01407 atp_proc_type); 01408 extern int cval_to_cn_int(int, boolean, long64 *, boolean); 01409 extern int cval_to_f_int(long_type *, long64 *, int); 01410 extern boolean compare_array_entries(int, int); 01411 extern boolean compare_derived_types(int,int); 01412 extern int compare_names(long *, int, long *, int); 01413 extern boolean compare_target_consts(long_type *, int, long_type *, 01414 int, int); 01415 extern void constant_value_semantics(opnd_type *, int); 01416 extern void create_hidden_name_tbl(int); 01417 extern int create_lib_entry_attr(char *, int, int, int); 01418 extern void data_repeat_semantics(int); 01419 extern long64 f_int_to_cval(long_type *, int); 01420 extern void fill_in_global_attr_ntry(int, int, int); 01421 extern void find_opnd_line_and_column(opnd_type *, int *, int *); 01422 extern void free_attr_list(int); 01423 extern global_attr_tbl_type *ga_var_error(char *, int); 01424 extern int gen_compiler_tmp(int, int, task_scope_type, boolean); 01425 extern int gen_compiler_star(int, int, task_scope_type, boolean); 01426 extern int gen_compiler_upbd(int, int, task_scope_type, boolean); 01427 extern int gen_debug_lbl_stmt(int, atl_debug_class_type, int); 01428 extern void gen_default_init_code(int); 01429 extern int gen_internal_lbl(int); 01430 extern int gen_tmp_equal_max_zero(opnd_type *, int, int, 01431 boolean, boolean); 01432 extern char *get_basic_type_str(int); 01433 extern void host_associated_attr_semantics(int, boolean); 01434 extern void init_name_and_stor_tbls(int, boolean); 01435 extern void init_sytb(void); 01436 extern ir_list_tbl_type *ir_list_var_error(char *, int); 01437 extern boolean kind_to_linear_type(opnd_type *, int, boolean, boolean, 01438 boolean, boolean); 01439 extern boolean validate_kind(basic_type_type, int, int, long *, 01440 linear_type_type *); 01441 extern void make_external_name(int, int, int); 01442 extern int make_ro_entry(int, int, boolean); 01443 extern long_type mpp_cn_int_to_c(int); 01444 extern int ntr_array_in_bd_tbl(int); 01445 extern int ntr_attr_list_tbl(void); 01446 extern int ntr_boz_const_tbl(int, long_type *); 01447 extern int ntr_boolean_const_tbl(int, long_type *); 01448 extern int ntr_common_in_global_attr_tbl(int, int); 01449 extern int ntr_const_tbl(int, boolean, long_type *); 01450 extern int ntr_cpnt_name(token_type *, int *, int); 01451 extern void ntr_global_name_tbl(int, int, int); 01452 extern int ntr_global_attr_tbl(int, int); 01453 extern int ntr_global_type_tbl(int); 01454 extern void ntr_hidden_name_tbl(int, int, int); 01455 extern int ntr_host_in_sym_tbl(token_type *,int,int,int,boolean); 01456 extern int ntr_int_const_tbl(int, long64); 01457 extern int ntr_ir_list_tbl(void); 01458 extern int ntr_ir_tbl(void); 01459 extern int ntr_gl_ir_list_tbl(void); 01460 extern int ntr_gl_ir_tbl(void); 01461 extern int ntr_gl_sh_tbl(void); 01462 extern int ntr_local_attr_list(char *, int, int, int); 01463 extern int ntr_sh_tbl(void); 01464 extern int ntr_stor_blk_tbl(char *, int, int, int, int); 01465 extern int ntr_sym_tbl(token_type *, int); 01466 extern int ntr_type_tbl(void); 01467 extern int ntr_derived_type_tbl(void); 01468 extern int ntr_unshared_const_tbl(int, boolean, long_type *); 01469 extern void remove_hidden_name_ntry(int); 01470 extern void remove_hidden_name_tbl(int); 01471 extern void remove_ln_ntry(int); 01472 extern int reserve_array_ntry(int); 01473 extern int set_based_stor_blk(void); 01474 extern void set_stride_for_first_dim(int, size_offset_type *); 01475 extern boolean size_offset_binary_calc(size_offset_type *, 01476 size_offset_type *, 01477 operator_type, 01478 size_offset_type *); 01479 extern boolean size_offset_logical_calc(size_offset_type *, 01480 size_offset_type *, 01481 operator_type, 01482 size_offset_type *); 01483 extern boolean size_offset_min_max_calc(size_offset_type *, 01484 size_offset_type *, 01485 operator_type, 01486 size_offset_type *); 01487 extern boolean srch_global_name_tbl(char *, int, int *); 01488 extern int srch_hidden_name_tbl(char *, int, int, int *, int *); 01489 extern int srch_host_stor_blk_tbl(token_type *); 01490 extern int srch_host_sym_tbl(char *, int, int *, boolean); 01491 extern int srch_kwd_name(char *, int, int, int *); 01492 extern int srch_linked_sn(char *, int, int *); 01493 extern int srch_name_tbl(char *, int, int *, name_tbl_type *, 01494 name_pool_type *, int, int); 01495 extern int srch_stor_blk_tbl(char *, int, int); 01496 extern int srch_sym_tbl(char *, int, int *); 01497 extern size_offset_type stor_bit_size_of(int, boolean, boolean); 01498 extern attr_tbl_type *sytb_var_error(char *, int); 01499 extern void use_stmt_semantics(void); 01500 01501 01502 01503 /*******************************\ 01504 |* globally accessible objects *| 01505 \*******************************/ 01506 01507 /* NOTE: ..._idx always points to the last used entry in the table. */ 01508 01509 extern attr_list_tbl_type *RESTRICT attr_list_tbl; 01510 extern int attr_list_tbl_idx; 01511 extern int attr_list_tbl_inc; 01512 extern int attr_list_tbl_size; 01513 extern int attr_list_tbl_limit; 01514 extern int attr_list_tbl_num_wds; 01515 extern int attr_list_tbl_init_size; 01516 extern int attr_list_tbl_largest_idx; 01517 01518 extern attr_tbl_type *RESTRICT attr_tbl; 01519 extern int attr_tbl_idx; 01520 extern int attr_tbl_inc; 01521 extern int attr_tbl_size; 01522 extern int attr_tbl_limit; 01523 extern int attr_tbl_num_wds; 01524 extern int attr_tbl_init_size; 01525 extern int attr_tbl_largest_idx; 01526 01527 extern attr_aux_tbl_type *RESTRICT attr_aux_tbl; 01528 extern int attr_aux_tbl_idx; 01529 extern int attr_aux_tbl_inc; 01530 extern int attr_aux_tbl_size; 01531 extern int attr_aux_tbl_limit; 01532 extern int attr_aux_tbl_num_wds; 01533 extern int attr_aux_tbl_init_size; 01534 extern int attr_aux_tbl_largest_idx; 01535 01536 extern bounds_tbl_type *RESTRICT bounds_tbl; 01537 extern int bounds_tbl_idx; 01538 extern int bounds_tbl_inc; 01539 extern int bounds_tbl_size; 01540 extern int bounds_tbl_limit; 01541 extern int bounds_tbl_num_wds; 01542 extern int bounds_tbl_init_size; 01543 extern int bounds_tbl_largest_idx; 01544 01545 extern int ieee_const_tbl_idx[]; 01546 01547 extern const_tbl_type *RESTRICT const_tbl; 01548 extern int const_tbl_idx; 01549 extern int const_tbl_inc; 01550 extern int const_tbl_size; 01551 extern int const_tbl_limit; 01552 extern int const_tbl_num_wds; 01553 extern int const_tbl_init_size; 01554 extern int const_tbl_largest_idx; 01555 01556 extern int cn_root_idx[Num_Linear_Types]; 01557 01558 extern const_pool_type *RESTRICT const_pool; 01559 extern int const_pool_idx; 01560 extern int const_pool_inc; 01561 extern int const_pool_size; 01562 extern int const_pool_limit; 01563 extern int const_pool_num_wds; 01564 extern int const_pool_init_size; 01565 extern int const_pool_largest_idx; 01566 01567 extern equiv_tbl_type *RESTRICT equiv_tbl; 01568 extern int equiv_tbl_idx; 01569 extern int equiv_tbl_inc; 01570 extern int equiv_tbl_size; 01571 extern int equiv_tbl_limit; 01572 extern int equiv_tbl_num_wds; 01573 extern int equiv_tbl_init_size; 01574 extern int equiv_tbl_largest_idx; 01575 01576 extern file_path_tbl_type *RESTRICT file_path_tbl; 01577 extern int file_path_tbl_idx; 01578 extern int file_path_tbl_inc; 01579 extern int file_path_tbl_size; 01580 extern int file_path_tbl_limit; 01581 extern int file_path_tbl_num_wds; 01582 extern int file_path_tbl_init_size; 01583 extern int file_path_tbl_largest_idx; 01584 01585 extern global_attr_tbl_type *RESTRICT global_attr_tbl; 01586 extern int global_attr_tbl_idx; 01587 extern int global_attr_tbl_inc; 01588 extern int global_attr_tbl_size; 01589 extern int global_attr_tbl_limit; 01590 extern int global_attr_tbl_num_wds; 01591 extern int global_attr_tbl_init_size; 01592 extern int global_attr_tbl_largest_idx; 01593 01594 extern global_bounds_tbl_type *RESTRICT global_bounds_tbl; 01595 extern int global_bounds_tbl_idx; 01596 extern int global_bounds_tbl_inc; 01597 extern int global_bounds_tbl_size; 01598 extern int global_bounds_tbl_limit; 01599 extern int global_bounds_tbl_num_wds; 01600 extern int global_bounds_tbl_init_size; 01601 extern int global_bounds_tbl_largest_idx; 01602 01603 extern global_line_tbl_type *RESTRICT global_line_tbl; 01604 extern long global_line_tbl_idx; 01605 extern int global_line_tbl_inc; 01606 extern long global_line_tbl_size; 01607 extern long global_line_tbl_limit; 01608 extern int global_line_tbl_num_wds; 01609 extern int global_line_tbl_init_size; 01610 extern long global_line_tbl_largest_idx; 01611 01612 extern name_tbl_type *RESTRICT global_name_tbl; 01613 extern long global_name_tbl_idx; 01614 extern int global_name_tbl_inc; 01615 extern long global_name_tbl_size; 01616 extern long global_name_tbl_limit; 01617 extern int global_name_tbl_num_wds; 01618 extern int global_name_tbl_init_size; 01619 extern long global_name_tbl_largest_idx; 01620 01621 extern global_type_tbl_type *RESTRICT global_type_tbl; 01622 extern int global_type_tbl_idx; 01623 extern int global_type_tbl_inc; 01624 extern int global_type_tbl_size; 01625 extern int global_type_tbl_limit; 01626 extern int global_type_tbl_num_wds; 01627 extern int global_type_tbl_init_size; 01628 extern int global_type_tbl_largest_idx; 01629 01630 extern global_ir_tbl_type *RESTRICT global_ir_tbl; 01631 extern int global_ir_tbl_idx; 01632 extern int global_ir_tbl_inc; 01633 extern int global_ir_tbl_init_size; 01634 extern int global_ir_tbl_limit; 01635 extern int global_ir_tbl_num_wds; 01636 extern int global_ir_tbl_size; 01637 extern int global_ir_tbl_largest_idx; 01638 01639 extern global_ir_list_tbl_type *RESTRICT global_ir_list_tbl; 01640 extern int global_ir_list_tbl_idx; 01641 extern int global_ir_list_tbl_inc; 01642 extern int global_ir_list_tbl_init_size; 01643 extern int global_ir_list_tbl_limit; 01644 extern int global_ir_list_tbl_num_wds; 01645 extern int global_ir_list_tbl_size; 01646 extern int global_ir_list_tbl_largest_idx; 01647 01648 extern global_sh_tbl_type *RESTRICT global_sh_tbl; 01649 extern int global_sh_tbl_idx; 01650 extern int global_sh_tbl_inc; 01651 extern int global_sh_tbl_init_size; 01652 extern int global_sh_tbl_limit; 01653 extern int global_sh_tbl_num_wds; 01654 extern int global_sh_tbl_size; 01655 extern int global_sh_tbl_largest_idx; 01656 01657 extern name_tbl_type *RESTRICT hidden_name_tbl; 01658 extern int hidden_name_tbl_idx; 01659 extern int hidden_name_tbl_inc; 01660 extern int hidden_name_tbl_size; 01661 extern int hidden_name_tbl_limit; 01662 extern int hidden_name_tbl_num_wds; 01663 extern int hidden_name_tbl_init_size; 01664 extern int hidden_name_tbl_largest_idx; 01665 01666 extern ir_tbl_type *RESTRICT ir_tbl; 01667 extern int ir_tbl_idx; 01668 extern int ir_tbl_inc; 01669 extern int ir_tbl_size; 01670 extern int ir_tbl_limit; 01671 extern int ir_tbl_num_wds; 01672 extern int ir_tbl_init_size; 01673 extern int ir_tbl_largest_idx; 01674 01675 extern ir_list_tbl_type *RESTRICT ir_list_tbl; 01676 extern int ir_list_tbl_idx; 01677 extern int ir_list_tbl_inc; 01678 extern int ir_list_tbl_size; 01679 extern int ir_list_tbl_limit; 01680 extern int ir_list_tbl_num_wds; 01681 extern int ir_list_tbl_init_size; 01682 extern int ir_list_tbl_largest_idx; 01683 01684 extern name_tbl_type *RESTRICT loc_name_tbl; 01685 extern int loc_name_tbl_idx; 01686 extern int loc_name_tbl_inc; 01687 extern int loc_name_tbl_size; 01688 extern int loc_name_tbl_limit; 01689 extern int loc_name_tbl_num_wds; 01690 extern int loc_name_tbl_init_size; 01691 extern int loc_name_tbl_largest_idx; 01692 01693 extern mod_link_tbl_type *RESTRICT mod_link_tbl; 01694 extern long mod_link_tbl_idx; 01695 extern int mod_link_tbl_inc; 01696 extern long mod_link_tbl_size; 01697 extern long mod_link_tbl_limit; 01698 extern int mod_link_tbl_num_wds; 01699 extern int mod_link_tbl_init_size; 01700 extern long mod_link_tbl_largest_idx; 01701 01702 extern name_pool_type *RESTRICT name_pool; 01703 extern int name_pool_idx; 01704 extern int name_pool_inc; 01705 extern int name_pool_size; 01706 extern int name_pool_limit; 01707 extern int name_pool_num_wds; 01708 extern int name_pool_init_size; 01709 extern int name_pool_largest_idx; 01710 01711 extern pdg_link_tbl_type *RESTRICT pdg_link_tbl; 01712 extern long pdg_link_tbl_idx; 01713 extern int pdg_link_tbl_inc; 01714 extern long pdg_link_tbl_size; 01715 extern long pdg_link_tbl_limit; 01716 extern int pdg_link_tbl_num_wds; 01717 extern int pdg_link_tbl_init_size; 01718 extern long pdg_link_tbl_largest_idx; 01719 01720 extern rename_only_tbl_type *RESTRICT rename_only_tbl; 01721 extern int rename_only_tbl_idx; 01722 extern int rename_only_tbl_inc; 01723 extern int rename_only_tbl_size; 01724 extern int rename_only_tbl_limit; 01725 extern int rename_only_tbl_num_wds; 01726 extern int rename_only_tbl_init_size; 01727 extern int rename_only_tbl_largest_idx; 01728 01729 extern scp_tbl_type *RESTRICT scp_tbl; 01730 extern int scp_tbl_idx; 01731 extern int scp_tbl_inc ; 01732 extern int scp_tbl_size; 01733 extern int scp_tbl_limit; 01734 extern int scp_tbl_num_wds; 01735 extern int scp_tbl_init_size; 01736 extern int scp_tbl_largest_idx; 01737 01738 extern sec_name_tbl_type *RESTRICT sec_name_tbl; 01739 extern int sec_name_tbl_idx; 01740 extern int sec_name_tbl_inc; 01741 extern int sec_name_tbl_size; 01742 extern int sec_name_tbl_limit; 01743 extern int sec_name_tbl_num_wds; 01744 extern int sec_name_tbl_init_size; 01745 extern int sec_name_tbl_largest_idx; 01746 01747 extern sh_tbl_type *RESTRICT sh_tbl; 01748 extern int sh_tbl_idx; 01749 extern int sh_tbl_inc; 01750 extern int sh_tbl_size; 01751 extern int sh_tbl_limit; 01752 extern int sh_tbl_num_wds; 01753 extern int sh_tbl_init_size; 01754 extern int sh_tbl_largest_idx; 01755 01756 extern stor_blk_tbl_type *RESTRICT stor_blk_tbl; 01757 extern int stor_blk_tbl_idx; 01758 extern int stor_blk_tbl_inc; 01759 extern int stor_blk_tbl_size; 01760 extern int stor_blk_tbl_limit; 01761 extern int stor_blk_tbl_num_wds; 01762 extern int stor_blk_tbl_init_size; 01763 extern int stor_blk_tbl_largest_idx; 01764 01765 extern name_pool_type *RESTRICT str_pool; 01766 extern int str_pool_idx; 01767 extern int str_pool_inc; 01768 extern int str_pool_size; 01769 extern int str_pool_limit; 01770 extern int str_pool_num_wds; 01771 extern int str_pool_init_size; 01772 extern int str_pool_largest_idx; 01773 01774 extern type_tbl_type *RESTRICT type_tbl; 01775 extern int type_tbl_idx; 01776 extern int type_tbl_inc; 01777 extern int type_tbl_size; 01778 extern int type_tbl_limit; 01779 extern int type_tbl_num_wds; 01780 extern int type_tbl_init_size; 01781 extern int type_tbl_largest_idx; 01782 01783 extern intrin_tbl_type intrin_tbl[MAX_INTRIN_TBL_SIZE]; 01784 extern intrin_map_type intrin_map[MAX_INTRIN_MAP_SIZE]; 01785 extern void (*intrinsic_semantics[])(); 01786 01787 extern char *pgm_unit_str[]; 01788 01789 # ifdef _DEBUG 01790 extern void print_so(size_offset_type); 01791 # endif