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/globals.h 5.44 10/27/99 17:06:38\n" */ 00038 00039 /***************************************\ 00040 |* globally accessible type specifiers *| 00041 \***************************************/ 00042 00043 enum addr_mode_values {Addr_Full, 00044 Addr_Fast }; 00045 00046 enum comp_phase_values {Cmdline_Parsing, 00047 Pass1_Parsing, 00048 Lex_Parsing, 00049 Decl_Semantics, 00050 Pass2_Semantics, 00051 Inlining, 00052 Pdg_Conversion 00053 }; 00054 00055 enum convert_to_string_values {Dont_Care, 00056 Binary_Fmt, 00057 Octal_Fmt, 00058 Hex_Fmt, 00059 Character_Fmt 00060 }; 00061 00062 enum basic_type_values {Integer, 00063 Logical, 00064 Real, 00065 Complex, 00066 CRI_Ptr, 00067 CRI_Parcel_Ptr, 00068 CRI_Ch_Ptr, 00069 Typeless, 00070 Character, 00071 Structure, 00072 Num_Basic_Types, 00073 Last_Linear_Type = CRI_Ch_Ptr 00074 }; 00075 00076 enum debug_lvl_values {Debug_Lvl_0, 00077 Debug_Lvl_1, 00078 Debug_Lvl_2, 00079 Debug_Lvl_3, 00080 No_Debugging 00081 }; 00082 00083 enum expr_mode_values {Initialization_Expr, 00084 Specification_Expr, 00085 Stmt_Func_Expr, 00086 Data_Stmt_Target, 00087 Data_Stmt_Target_Expr, 00088 Restricted_Imp_Do_Target, 00089 Restricted_Imp_Do_Expr, 00090 Regular_Expr 00091 }; 00092 00093 enum fld_values {NO_Tbl_Idx, 00094 CN_Tbl_Idx, 00095 SB_Tbl_Idx, 00096 IL_Tbl_Idx, 00097 AT_Tbl_Idx, 00098 SH_Tbl_Idx, 00099 IR_Tbl_Idx, 00100 IMPLICIT_Tbl_Idx 00101 }; 00102 00103 enum fortran_type_values {Fortran_Integer, 00104 Fortran_Logical, 00105 Fortran_Real, 00106 Fortran_Double, 00107 Fortran_Complex, 00108 Fortran_Double_Complex, 00109 Fortran_Character, 00110 Fortran_Typeless, 00111 Num_Fortran_Types 00112 }; 00113 00114 enum tasking_scope_values {Priv, Shared}; 00115 typedef enum tasking_scope_values task_scope_type; 00116 00117 /* The following enum is used by label processing to determine the type of */ 00118 /* forward reference an IL entry represents when it is being used as a */ 00119 /* Forward Ref entry. The values of these enums are stored in the "rank" */ 00120 /* field of the IL_OPND. See also IL_FORWARD_REF in sytb.m and its use in */ 00121 /* p_utils.c. */ 00122 00123 enum forward_ref_values {From_Assign_Stmt, 00124 From_Do_Stmt, 00125 To_Format_Stmt 00126 }; 00127 00128 /* These enums are used to access a table that holds all global indexes to */ 00129 /* the symbol tables. These are kept in a table, so they can be cleared out */ 00130 /* easily. If additions are made, the only other spot that needs to changed */ 00131 /* is compress tables. These have to be cleared or reset at that time. */ 00132 00133 enum glb_tbl_idx_values {Allocate_Attr_Idx, 00134 Ptr_Asg_Attr_Idx, 00135 Argchck_Attr_Idx, 00136 Backspace_Attr_Idx, 00137 Buffer_In_Attr_Idx, 00138 Buffer_Out_Attr_Idx, 00139 Close_Attr_Idx, 00140 Dealloc_Attr_Idx, 00141 Deallocate_Attr_Idx, 00142 End_Attr_Idx, 00143 Endfile_Attr_Idx, 00144 Inquire_Attr_Idx, 00145 Main_Attr_Idx, 00146 Open_Attr_Idx, 00147 Pause_Attr_Idx, 00148 Realloc_Attr_Idx, 00149 Rewind_Attr_Idx, 00150 Stop_Attr_Idx, 00151 Conform_Attr_Idx, 00152 Bounds_Attr_Idx, 00153 Rbounds_Attr_Idx, 00154 Sbounds_Attr_Idx, 00155 Ptr_Chk_Attr_Idx, 00156 Pe_Offset_Attr_Idx, 00157 Set_Numthreads_Attr_Idx, 00158 Num_Glb_Tbl_Idxs 00159 }; 00160 00161 00162 enum inline_lvl_values {Inline_Lvl_0, 00163 Inline_Lvl_1, 00164 Inline_Lvl_2, 00165 Inline_Lvl_3, 00166 Inline_Lvl_4, 00167 Inline_Lvl_Err }; 00168 00169 enum short_circuit_lvl_values {Short_Circuit_Off, 00170 Short_Circuit_Present, 00171 Short_Circuit_Left_Right, 00172 Short_Circuit_Functions}; 00173 00174 typedef enum short_circuit_lvl_values short_circuit_lvl_type; 00175 00176 enum sgi_inline_state_values {Not_Specified_Sgi, 00177 Inline_Sgi, 00178 Noinline_Sgi }; 00179 00180 typedef enum sgi_inline_state_values sgi_inline_state_type; 00181 00182 00183 00184 enum intrinsic_values {Unknown_Intrinsic, 00185 Abs_Intrinsic, 00186 Achar_Intrinsic, 00187 Acos_Intrinsic, 00188 Acosd_Intrinsic, 00189 Add_And_Fetch_Intrinsic, 00190 Adjustl_Intrinsic, 00191 Adjustr_Intrinsic, 00192 Aimag_Intrinsic, 00193 Aint_Intrinsic, 00194 All_Intrinsic, 00195 Allocated_Intrinsic, 00196 Alog_Intrinsic, 00197 Alog10_Intrinsic, 00198 Amax0_Intrinsic, 00199 Amax1_Intrinsic, 00200 Amin0_Intrinsic, 00201 Amin1_Intrinsic, 00202 Amod_Intrinsic, 00203 And_Intrinsic, 00204 And_And_Fetch_Intrinsic, 00205 Anint_Intrinsic, 00206 Any_Intrinsic, 00207 Asin_Intrinsic, 00208 Asind_Intrinsic, 00209 Associated_Intrinsic, 00210 Atan_Intrinsic, 00211 Atan2_Intrinsic, 00212 Atan2d_Intrinsic, 00213 Atand_Intrinsic, 00214 Bitest_Intrinsic, 00215 Bit_Size_Intrinsic, 00216 Bjtest_Intrinsic, 00217 Bktest_Intrinsic, 00218 Btest_Intrinsic, 00219 Cabs_Intrinsic, 00220 Ccos_Intrinsic, 00221 Cdabs_Intrinsic, 00222 Cdcos_Intrinsic, 00223 Cdexp_Intrinsic, 00224 Cdlog_Intrinsic, 00225 Cdsin_Intrinsic, 00226 Cdsqrt_Intrinsic, 00227 Ceiling_Intrinsic, 00228 Cexp_Intrinsic, 00229 Char_Intrinsic, 00230 Clear_Ieee_Exception_Intrinsic, 00231 Cloc_Intrinsic, 00232 Clock_Intrinsic, 00233 Clog_Intrinsic, 00234 Cmplx_Intrinsic, 00235 Compare_And_Swap_Intrinsic, 00236 Compl_Intrinsic, 00237 Conjg_Intrinsic, 00238 Cos_Intrinsic, 00239 Cosd_Intrinsic, 00240 Cosh_Intrinsic, 00241 Cot_Intrinsic, 00242 Count_Intrinsic, 00243 Cputime_Intrinsic, 00244 Cqabs_Intrinsic, 00245 Cqcos_Intrinsic, 00246 Cqexp_Intrinsic, 00247 Cqlog_Intrinsic, 00248 Cqsin_Intrinsic, 00249 Cqsqrt_Intrinsic, 00250 Cshift_Intrinsic, 00251 Csin_Intrinsic, 00252 Csmg_Intrinsic, 00253 Csqrt_Intrinsic, 00254 Cvmgm_Intrinsic, 00255 Cvmgn_Intrinsic, 00256 Cvmgp_Intrinsic, 00257 Cvmgt_Intrinsic, 00258 Cvmgz_Intrinsic, 00259 C_Loc_Intrinsic, 00260 Dabs_Intrinsic, 00261 Dacos_Intrinsic, 00262 Dacosd_Intrinsic, 00263 Dasin_Intrinsic, 00264 Dasind_Intrinsic, 00265 Datan_Intrinsic, 00266 Datan2_Intrinsic, 00267 Datan2d_Intrinsic, 00268 Datand_Intrinsic, 00269 Date_Intrinsic, 00270 Date_And_Time_Intrinsic, 00271 Dble_Intrinsic, 00272 Dbleq_Intrinsic, 00273 Dcmplx_Intrinsic, 00274 Dconjg_Intrinsic, 00275 Dcos_Intrinsic, 00276 Dcosd_Intrinsic, 00277 Dcosh_Intrinsic, 00278 Dcot_Intrinsic, 00279 Ddim_Intrinsic, 00280 Dexp_Intrinsic, 00281 Dfloat_Intrinsic, 00282 Dfloati_Intrinsic, 00283 Dfloatj_Intrinsic, 00284 Dfloatk_Intrinsic, 00285 Digits_Intrinsic, 00286 Dim_Intrinsic, 00287 Dimag_Intrinsic, 00288 Dint_Intrinsic, 00289 Disable_Ieee_Interrupt_Intrinsic, 00290 Dlog_Intrinsic, 00291 Dlog10_Intrinsic, 00292 Dmax1_Intrinsic, 00293 Dmin1_Intrinsic, 00294 Dmod_Intrinsic, 00295 Dnint_Intrinsic, 00296 Dot_Product_Intrinsic, 00297 Dprod_Intrinsic, 00298 Dreal_Intrinsic, 00299 Dshiftl_Intrinsic, 00300 Dshiftr_Intrinsic, 00301 Dsign_Intrinsic, 00302 Dsin_Intrinsic, 00303 Dsind_Intrinsic, 00304 Dsinh_Intrinsic, 00305 DSM_Chunksize_Intrinsic, 00306 DSM_Distribution_Block_Intrinsic, 00307 DSM_Distribution_Cyclic_Intrinsic, 00308 DSM_Distribution_Star_Intrinsic, 00309 DSM_Isdistributed_Intrinsic, 00310 DSM_Isreshaped_Intrinsic, 00311 DSM_Numchunks_Intrinsic, 00312 DSM_Numthreads_Intrinsic, 00313 DSM_Rem_Chunksize_Intrinsic, 00314 DSM_This_Chunksize_Intrinsic, 00315 DSM_This_Startingindex_Intrinsic, 00316 DSM_This_Threadnum_Intrinsic, 00317 Dsqrt_Intrinsic, 00318 Dtan_Intrinsic, 00319 Dtand_Intrinsic, 00320 Dtanh_Intrinsic, 00321 Enable_Ieee_Interrupt_Intrinsic, 00322 Eoshift_Intrinsic, 00323 Epsilon_Intrinsic, 00324 Eqv_Intrinsic, 00325 Exit_Intrinsic, 00326 Exp_Intrinsic, 00327 Exponent_Intrinsic, 00328 Fcd_Intrinsic, 00329 Fetch_And_Add_Intrinsic, 00330 Fetch_And_And_Intrinsic, 00331 Fetch_And_Nand_Intrinsic, 00332 Fetch_And_Or_Intrinsic, 00333 Fetch_And_Sub_Intrinsic, 00334 Fetch_And_Xor_Intrinsic, 00335 Float_Intrinsic, 00336 Floati_Intrinsic, 00337 Floatj_Intrinsic, 00338 Floatk_Intrinsic, 00339 Floor_Intrinsic, 00340 Fp_Class_Intrinsic, 00341 Fraction_Intrinsic, 00342 Free_Intrinsic, 00343 Getpos_Intrinsic, 00344 Get_Ieee_Exceptions_Intrinsic, 00345 Get_Ieee_Interrupts_Intrinsic, 00346 Get_Ieee_Rounding_Mode_Intrinsic, 00347 Get_Ieee_Status_Intrinsic, 00348 Huge_Intrinsic, 00349 Iabs_Intrinsic, 00350 Iachar_Intrinsic, 00351 Iand_Intrinsic, 00352 Ibchng_Intrinsic, 00353 Ibclr_Intrinsic, 00354 Ibits_Intrinsic, 00355 Ibset_Intrinsic, 00356 Ichar_Intrinsic, 00357 Idate_Intrinsic, 00358 Idim_Intrinsic, 00359 Idint_Intrinsic, 00360 Idnint_Intrinsic, 00361 Ieee_Binary_Scale_Intrinsic, 00362 Ieee_Class_Intrinsic, 00363 Ieee_Copy_Sign_Intrinsic, 00364 Ieee_Exponent_Intrinsic, 00365 Ieee_Finite_Intrinsic, 00366 Ieee_Int_Intrinsic, 00367 Ieee_Is_Nan_Intrinsic, 00368 Ieee_Next_After_Intrinsic, 00369 Ieee_Real_Intrinsic, 00370 Ieee_Remainder_Intrinsic, 00371 Ieee_Unordered_Intrinsic, 00372 Ieor_Intrinsic, 00373 Ifix_Intrinsic, 00374 Iiabs_Intrinsic, 00375 Iiand_Intrinsic, 00376 Iibchng_Intrinsic, 00377 Iibclr_Intrinsic, 00378 Iibits_Intrinsic, 00379 Iibset_Intrinsic, 00380 Iidim_Intrinsic, 00381 Iidint_Intrinsic, 00382 Iieor_Intrinsic, 00383 Iifix_Intrinsic, 00384 Iint_Intrinsic, 00385 Iior_Intrinsic, 00386 Iiqint_Intrinsic, 00387 Iisha_Intrinsic, 00388 Iishc_Intrinsic, 00389 Iishft_Intrinsic, 00390 Iishftc_Intrinsic, 00391 Iishl_Intrinsic, 00392 Iisign_Intrinsic, 00393 Ilen_Intrinsic, 00394 Imag_Intrinsic, 00395 Imod_Intrinsic, 00396 Imvbits_Intrinsic, 00397 Index_Intrinsic, 00398 Inint_Intrinsic, 00399 Inot_Intrinsic, 00400 Int_Intrinsic, 00401 Int1_Intrinsic, 00402 Int2_Intrinsic, 00403 Int4_Intrinsic, 00404 Int8_Intrinsic, 00405 Int_Mult_Upper_Intrinsic, 00406 Ior_Intrinsic, 00407 Iqint_Intrinsic, 00408 Iqnint_Intrinsic, 00409 Irtc_Intrinsic, 00410 Isha_Intrinsic, 00411 Ishc_Intrinsic, 00412 Ishft_Intrinsic, 00413 Ishftc_Intrinsic, 00414 Ishl_Intrinsic, 00415 Isign_Intrinsic, 00416 Isnan_Intrinsic, 00417 Jdate_Intrinsic, 00418 Jiabs_Intrinsic, 00419 Jiand_Intrinsic, 00420 Jibchng_Intrinsic, 00421 Jibclr_Intrinsic, 00422 Jibits_Intrinsic, 00423 Jibset_Intrinsic, 00424 Jidim_Intrinsic, 00425 Jidint_Intrinsic, 00426 Jieor_Intrinsic, 00427 Jifix_Intrinsic, 00428 Jint_Intrinsic, 00429 Jior_Intrinsic, 00430 Jiqint_Intrinsic, 00431 Jisha_Intrinsic, 00432 Jishc_Intrinsic, 00433 Jishft_Intrinsic, 00434 Jishftc_Intrinsic, 00435 Jishl_Intrinsic, 00436 Jisign_Intrinsic, 00437 Jmod_Intrinsic, 00438 Jmvbits_Intrinsic, 00439 Jnint_Intrinsic, 00440 Jnot_Intrinsic, 00441 Kiabs_Intrinsic, 00442 Kiand_Intrinsic, 00443 Kibchng_Intrinsic, 00444 Kibclr_Intrinsic, 00445 Kibits_Intrinsic, 00446 Kibset_Intrinsic, 00447 Kidim_Intrinsic, 00448 Kidint_Intrinsic, 00449 Kieor_Intrinsic, 00450 Kifix_Intrinsic, 00451 Kind_Intrinsic, 00452 Kint_Intrinsic, 00453 Kior_Intrinsic, 00454 Kiqint_Intrinsic, 00455 Kisha_Intrinsic, 00456 Kishc_Intrinsic, 00457 Kishft_Intrinsic, 00458 Kishftc_Intrinsic, 00459 Kishl_Intrinsic, 00460 Kisign_Intrinsic, 00461 Kmod_Intrinsic, 00462 Kmvbits_Intrinsic, 00463 Knint_Intrinsic, 00464 Knot_Intrinsic, 00465 Lbound_Intrinsic, 00466 Leadz_Intrinsic, 00467 Len_Intrinsic, 00468 Length_Intrinsic, 00469 Len_Trim_Intrinsic, 00470 Lge_Intrinsic, 00471 Lgt_Intrinsic, 00472 Lle_Intrinsic, 00473 Llt_Intrinsic, 00474 Loc_Intrinsic, 00475 Lock_Release_Intrinsic, 00476 Lock_Test_And_Set_Intrinsic, 00477 Log_Intrinsic, 00478 Log10_Intrinsic, 00479 Log2_Images_Intrinsic, 00480 Logical_Intrinsic, 00481 Long_Intrinsic, 00482 Lshift_Intrinsic, 00483 Mclr_Intrinsic, 00484 Mld_Intrinsic, 00485 Mldmx_Intrinsic, 00486 Mmx_Intrinsic, 00487 Mul_Intrinsic, 00488 Malloc_Intrinsic, 00489 Mask_Intrinsic, 00490 Matmul_Intrinsic, 00491 Max_Intrinsic, 00492 Max0_Intrinsic, 00493 Max1_Intrinsic, 00494 Maxexponent_Intrinsic, 00495 Maxloc_Intrinsic, 00496 Maxval_Intrinsic, 00497 Memory_Barrier_Intrinsic, 00498 Merge_Intrinsic, 00499 Min_Intrinsic, 00500 Min0_Intrinsic, 00501 Min1_Intrinsic, 00502 Minexponent_Intrinsic, 00503 Minloc_Intrinsic, 00504 Minval_Intrinsic, 00505 Mod_Intrinsic, 00506 Modulo_Intrinsic, 00507 Mvbits_Intrinsic, 00508 My_Pe_Intrinsic, 00509 Nand_And_Fetch_Intrinsic, 00510 Nearest_Intrinsic, 00511 Neqv_Intrinsic, 00512 Nint_Intrinsic, 00513 Not_Intrinsic, 00514 Null_Intrinsic, 00515 Numarg_Intrinsic, 00516 Num_Images_Intrinsic, 00517 Omp_Get_Dynamic_Intrinsic, 00518 Omp_Get_Max_Threads_Intrinsic, 00519 Omp_Get_Nested_Intrinsic, 00520 Omp_Get_Num_Procs_Intrinsic, 00521 Omp_Get_Num_Threads_Intrinsic, 00522 Omp_Get_Thread_Num_Intrinsic, 00523 Omp_In_Parallel_Intrinsic, 00524 Omp_Set_Lock_Intrinsic, 00525 Omp_Test_Lock_Intrinsic, 00526 Omp_Unset_Lock_Intrinsic, 00527 Or_Intrinsic, 00528 Or_And_Fetch_Intrinsic, 00529 Pack_Intrinsic, 00530 Popcnt_Intrinsic, 00531 Poppar_Intrinsic, 00532 Precision_Intrinsic, 00533 Present_Intrinsic, 00534 Product_Intrinsic, 00535 Qabs_Intrinsic, 00536 Qacos_Intrinsic, 00537 Qacosd_Intrinsic, 00538 Qasin_Intrinsic, 00539 Qasind_Intrinsic, 00540 Qatan_Intrinsic, 00541 Qatan2_Intrinsic, 00542 Qatan2d_Intrinsic, 00543 Qatand_Intrinsic, 00544 Qcmplx_Intrinsic, 00545 Qcos_Intrinsic, 00546 Qcosd_Intrinsic, 00547 Qcosh_Intrinsic, 00548 Qcot_Intrinsic, 00549 Qdim_Intrinsic, 00550 Qexp_Intrinsic, 00551 Qext_Intrinsic, 00552 Qfloat_Intrinsic, 00553 Qfloati_Intrinsic, 00554 Qfloatj_Intrinsic, 00555 Qfloatk_Intrinsic, 00556 Qimag_Intrinsic, 00557 Qint_Intrinsic, 00558 Qlog_Intrinsic, 00559 Qlog10_Intrinsic, 00560 Qmod_Intrinsic, 00561 Qnint_Intrinsic, 00562 Qprod_Intrinsic, 00563 Qreal_Intrinsic, 00564 Qsign_Intrinsic, 00565 Qsin_Intrinsic, 00566 Qsind_Intrinsic, 00567 Qsinh_Intrinsic, 00568 Qsqrt_Intrinsic, 00569 Qtan_Intrinsic, 00570 Qtand_Intrinsic, 00571 Qtanh_Intrinsic, 00572 Radix_Intrinsic, 00573 Ran_Intrinsic, 00574 Random_Number_Intrinsic, 00575 Random_Seed_Intrinsic, 00576 Randu_Intrinsic, 00577 Ranf_Intrinsic, 00578 Range_Intrinsic, 00579 Ranget_Intrinsic, 00580 Ranset_Intrinsic, 00581 Readsm_Intrinsic, 00582 Real_Intrinsic, 00583 Remote_Write_Barrier_Intrinsic, 00584 Rem_Images_Intrinsic, 00585 Repeat_Intrinsic, 00586 Reshape_Intrinsic, 00587 Rrspacing_Intrinsic, 00588 Rshift_Intrinsic, 00589 Rtc_Intrinsic, 00590 Scale_Intrinsic, 00591 Scan_Intrinsic, 00592 SIK_Intrinsic, 00593 SRK_Intrinsic, 00594 Set_Exponent_Intrinsic, 00595 Set_Ieee_Exception_Intrinsic, 00596 Set_Ieee_Exceptions_Intrinsic, 00597 Set_Ieee_Interrupts_Intrinsic, 00598 Set_Ieee_Rounding_Mode_Intrinsic, 00599 Set_Ieee_Status_Intrinsic, 00600 Shape_Intrinsic, 00601 Shift_Intrinsic, 00602 Shifta_Intrinsic, 00603 Shiftl_Intrinsic, 00604 Shiftr_Intrinsic, 00605 Short_Intrinsic, 00606 Sign_Intrinsic, 00607 Sin_Intrinsic, 00608 Sind_Intrinsic, 00609 Sinh_Intrinsic, 00610 Size_Intrinsic, 00611 Sizeof_Intrinsic, 00612 Sngl_Intrinsic, 00613 Snglq_Intrinsic, 00614 Spacing_Intrinsic, 00615 Spread_Intrinsic, 00616 Sqrt_Intrinsic, 00617 Sub_And_Fetch_Intrinsic, 00618 Sum_Intrinsic, 00619 Synchronize_Intrinsic, 00620 Sync_Images_Intrinsic, 00621 System_Clock_Intrinsic, 00622 Tan_Intrinsic, 00623 Tand_Intrinsic, 00624 Tanh_Intrinsic, 00625 Test_Ieee_Exception_Intrinsic, 00626 Test_Ieee_Interrupt_Intrinsic, 00627 This_Image_Intrinsic, 00628 Time_Intrinsic, 00629 Tiny_Intrinsic, 00630 Transfer_Intrinsic, 00631 Transpose_Intrinsic, 00632 Trim_Intrinsic, 00633 Ubound_Intrinsic, 00634 Unit_Intrinsic, 00635 Unpack_Intrinsic, 00636 Verify_Intrinsic, 00637 Write_Memory_Barrier_Intrinsic, 00638 Xor_Intrinsic, 00639 Xor_And_Fetch_Intrinsic 00640 }; 00641 00642 00643 /* ************************************************************************** *\ 00644 |* YOUR ATTENTION PLEASE *| 00645 |* If you change the linear_type_values list (like adding or subtracting any *| 00646 |* values), you must also update procedure cif_data_type in fecif.c so that *| 00647 |* it agrees with this list. This means you may also have to negotiate a *| 00648 |* change to the define constants that represent data types with the folks *| 00649 |* in libcifland. *| 00650 \* ************************************************************************** */ 00651 00652 enum linear_type_values {Err_Res, 00653 Type_Void = Err_Res, 00654 Short_Char_Const, 00655 Short_Typeless_Const, 00656 Typeless_1, 00657 Typeless_2, 00658 Typeless_4, 00659 Typeless_8, 00660 Long_Typeless, 00661 Integer_1, 00662 Integer_2, 00663 Integer_4, 00664 Integer_8, 00665 Real_4, 00666 Real_8, 00667 Real_16, 00668 Complex_4, 00669 Complex_8, 00670 Complex_16, 00671 CRI_Ptr_8, 00672 Logical_1, 00673 Logical_2, 00674 Logical_4, 00675 Logical_8, 00676 Character_1, 00677 Character_2, 00678 Character_4, 00679 CRI_Ch_Ptr_8, 00680 Structure_Type, 00681 CRI_Parcel_Ptr_8, 00682 Num_Linear_Types 00683 }; 00684 00685 enum msg_lvl_values {Comment_Lvl, 00686 Note_Lvl, 00687 Caution_Lvl, 00688 Warning_Lvl, 00689 Error_Lvl }; 00690 00691 /* MESSAGE LEVELS: Do not change unless negotiated with PDGCS, C and backends*/ 00692 /* Note: many of these levels are not used in cft90 */ 00693 /* Note: update 'msg_severity_names' in messages.h if this enum is changed */ 00694 /* Note: all message levels are output to CIF, only Comment .. Internal, */ 00695 /* Log_Error, Log_Warning and Ansi are output to stderr */ 00696 00697 enum msg_severities {Comment, Note, Caution, 00698 Warning, Error, Internal, 00699 Vector, Scalar, Table, 00700 Ansi, Log_Warning, Inline, 00701 Info, Tasking, Limit, 00702 Log_Error, Log_Summary, F77_Ansi, 00703 Optimization, Stream, Unknown_Error }; 00704 00705 /* NOTE: Tables in nameres.h are dependent on this enumeration. */ 00706 /* The following enumeration is used to call fnd_semantic_err. These are */ 00707 /* enumerations of things being added to a symbol table entry. The divisions */ 00708 /* are for getting messages out. The first group are attributes, and use a */ 00709 /* common message and then fill in the attribute. The second group is names. */ 00710 /* These also have a common message that gets filled in. The third group is */ 00711 /* others, which needs individual messages, because they just didn't fit the */ 00712 /* attribute style, or the name style. */ 00713 00714 /* NOTE: p_driver.h needs to be changed as well!!! (obj_str) */ 00715 00716 enum obj_values {Obj_Assum_Type_Ch, Obj_Expl_Shp_Arr, 00717 Obj_Assum_Size_Arr, Obj_Defrd_Shp_Arr, 00718 Obj_Assum_Shp_Arr, Obj_Co_Array, 00719 Obj_Allocatable, Obj_Constant, 00720 Obj_Intent, Obj_Optional, 00721 Obj_Private, Obj_Public, 00722 Obj_Target, Obj_Equiv, 00723 Obj_Saved, Obj_Automatic, 00724 Obj_Pointer, Obj_Dcl_Extern, 00725 Obj_Dcl_Intrin, Obj_Data_Init, 00726 Obj_Typed, Obj_Volatile, 00727 00728 Obj_Copy_Assumed_Shape, Obj_Auxiliary, 00729 Obj_Vfunction, Obj_No_Side_Effects, 00730 Obj_Symmetric, Obj_Inline, 00731 Obj_Ipa, Obj_Align_Symbol, 00732 Obj_Fill_Symbol, Obj_Section_Gp, 00733 Obj_Section_Non_Gp, Obj_Ignore_TKR, 00734 Obj_Optional_Dir, Obj_Name, 00735 00736 Obj_Cri_Ptr, Obj_Cri_Pointee, 00737 Obj_Cri_Ch_Pointee, 00738 Obj_Ntry_Func_Result, Obj_Dummy_Arg, 00739 Obj_Common_Obj, Obj_Namelist_Obj, 00740 Obj_Module_Proc, Obj_Derived_Type, 00741 Obj_Generic_Interface, Obj_Namelist_Grp, 00742 Obj_Stmt_Func, Obj_Construct, 00743 Obj_Entry_Func, Obj_Entry_Subr, 00744 Obj_Intern_Func, Obj_Intern_Subr, 00745 Obj_Module_Func, Obj_Module_Subr, 00746 Obj_Sf_Darg, 00747 Obj_Name_Done = Obj_Sf_Darg, 00748 00749 Obj_Sf_Actual_Arg, Obj_Var_Len_Ch, 00750 Obj_Var_Len_Arr, Obj_Sym_Constant_Arr, 00751 Obj_Interface_Func, Obj_Interface_Subr, 00752 Obj_Use_Extern_Func, Obj_Use_Extern_Subr, 00753 Obj_Use_In_Expr, Obj_Use_Derived_Type, 00754 Obj_Use_Spec_Expr, Obj_Use_Init_Expr, 00755 Obj_Done }; 00756 00757 /* Ordering rationale for the operator_values enum list: */ 00758 /* - Null (no-op) (Also positioned first to hopefully catch errors.) */ 00759 /* - Expression operators in highest to lowest precedence order. */ 00760 /* - Statement marker operators. */ 00761 /* - Individual statement operators in alphabetical order. */ 00762 /* - Miscellaneous operators in alphabetical order. */ 00763 /* If you change this list, don't forget to make the corresponding change to */ 00764 /* the operator string array in debug.h. */ 00765 00766 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00767 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00768 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00769 00770 enum operator_values { Null_Opr, 00771 00772 Defined_Un_Opr, 00773 00774 Alloc_Opr, 00775 SSD_Alloc_Opr, 00776 Cvrt_Opr, 00777 Dealloc_Opr, 00778 Power_Opr, 00779 Mult_Opr, 00780 Div_Opr, 00781 Uplus_Opr, 00782 Uminus_Opr, 00783 Plus_Opr, 00784 Minus_Opr, 00785 Concat_Opr, 00786 Eq_Opr, 00787 Ne_Opr, 00788 Lt_Opr, 00789 Le_Opr, 00790 Gt_Opr, 00791 Ge_Opr, 00792 Not_Opr, 00793 Bnot_Opr, 00794 And_Opr, 00795 Or_Opr, 00796 Bor_Opr, 00797 Eqv_Opr, 00798 00799 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00800 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00801 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00802 00803 Beqv_Opr, 00804 Neqv_Opr, 00805 Bneqv_Opr, 00806 Abs_Opr, 00807 Cos_Opr, 00808 Sin_Opr, 00809 Log_E_Opr, 00810 Log_10_Opr, 00811 Tan_Opr, 00812 Tanh_Opr, 00813 Sinh_Opr, 00814 Acos_Opr, 00815 Asin_Opr, 00816 Atan_Opr, 00817 Cosh_Opr, 00818 Atan2_Opr, 00819 Aimag_Opr, 00820 Sqrt_Opr, 00821 Cot_Opr, 00822 Exp_Opr, 00823 Int_Opr, 00824 Band_Opr, 00825 Mod_Opr, 00826 Anint_Opr, 00827 Nint_Opr, 00828 00829 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00830 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00831 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00832 00833 Sign_Opr, 00834 Modulo_Opr, 00835 Shift_Opr, 00836 Shiftl_Opr, 00837 Shiftr_Opr, 00838 Leadz_Opr, 00839 Popcnt_Opr, 00840 Poppar_Opr, 00841 Aint_Opr, 00842 Dim_Opr, 00843 Ranget_Opr, 00844 Ranset_Opr, 00845 Ranf_Opr, 00846 Real_Opr, 00847 Dble_Opr, 00848 Mask_Opr, 00849 Conjg_Opr, 00850 Dprod_Opr, 00851 I24mult_Opr, 00852 Length_Opr, 00853 Getpos_Opr, 00854 Unit_Opr, 00855 Cmplx_Opr, 00856 Ichar_Opr, 00857 Char_Opr, 00858 00859 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00860 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00861 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00862 00863 Lint_Opr, 00864 Index_Opr, 00865 Lge_Opr, 00866 Lgt_Opr, 00867 Lle_Opr, 00868 Llt_Opr, 00869 Fcd_Opr, 00870 Numarg_Opr, 00871 Rtc_Opr, 00872 Cvmgp_Opr, 00873 Cvmgm_Opr, 00874 Cvmgz_Opr, 00875 Cvmgn_Opr, 00876 Cvmgt_Opr, 00877 Csmg_Opr, 00878 Adjustl_Opr, 00879 Adjustr_Opr, 00880 Ceiling_Opr, 00881 Exponent_Opr, 00882 Floor_Opr, 00883 Fraction_Opr, 00884 Spacing_Opr, 00885 Logical_Opr, 00886 Nearest_Opr, 00887 Rrspacing_Opr, 00888 00889 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00890 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00891 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00892 00893 Scale_Opr, 00894 Scan_Opr, 00895 Set_Exponent_Opr, 00896 Verify_Opr, 00897 Len_Trim_Opr, 00898 Dshiftl_Opr, 00899 Dshiftr_Opr, 00900 Mmx_Opr, 00901 Mldmx_Opr, 00902 Mld_Opr, 00903 Mul_Opr, 00904 Mcbl_Opr, 00905 Cshift_Opr, 00906 Dot_Product_Opr, 00907 Matmul_Opr, 00908 Spread_Opr, 00909 Transpose_Opr, 00910 All_Opr, 00911 Any_Opr, 00912 Count_Opr, 00913 Product_Opr, 00914 Sum_Opr, 00915 Eoshift_Opr, 00916 Maxval_Opr, 00917 Minval_Opr, 00918 00919 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00920 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00921 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00922 00923 Maxloc_Opr, 00924 Minloc_Opr, 00925 Reshape_Opr, 00926 SRK_Opr, 00927 SIK_Opr, 00928 Repeat_Opr, 00929 Trim_Opr, 00930 Transfer_Opr, 00931 00932 Defined_Bin_Opr, 00933 00934 Asg_Opr, 00935 Call_Opr, 00936 Alt_Return_Opr, 00937 Case_Opr, 00938 Allocate_Opr, 00939 Deallocate_Opr, 00940 End_Opr, 00941 Entry_Opr, 00942 Nullify_Opr, 00943 Pause_Opr, 00944 Ptr_Asg_Opr, 00945 Flat_Array_Asg_Opr, 00946 Return_Opr, 00947 Select_Opr, 00948 Stmt_Func_Call_Opr, 00949 Stop_Opr, 00950 00951 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00952 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00953 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00954 00955 Max_Opr, 00956 Min_Opr, 00957 00958 Read_Formatted_Opr, 00959 Read_Unformatted_Opr, 00960 Read_Namelist_Opr, 00961 Write_Formatted_Opr, 00962 Write_Unformatted_Opr, 00963 Write_Namelist_Opr, 00964 Inquire_Iolength_Opr, 00965 00966 /* Dope vector operators .. */ 00967 /* Access operators are unary operators, return a value */ 00968 /* operand goes on the left. */ 00969 /* Set operators are like the assignment operator */ 00970 /* they are binary. */ 00971 00972 Dv_Whole_Copy_Opr, 00973 Dv_Whole_Def_Opr, 00974 Dv_Def_Asg_Opr, 00975 Dv_Deref_Opr, 00976 Dv_Access_Base_Addr, 00977 Dv_Set_Base_Addr, 00978 Dv_Access_El_Len, 00979 Dv_Set_El_Len, 00980 Dv_Access_Assoc, 00981 Dv_Set_Assoc, 00982 Dv_Access_Ptr_Alloc, 00983 Dv_Set_Ptr_Alloc, 00984 Dv_Access_P_Or_A, 00985 Dv_Set_P_Or_A, 00986 Dv_Access_A_Contig, 00987 Dv_Set_A_Contig, 00988 00989 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 00990 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 00991 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 00992 00993 Dv_Access_N_Dim, 00994 Dv_Set_N_Dim, 00995 Dv_Access_Typ_Code, 00996 Dv_Set_Typ_Code, 00997 Dv_Access_Orig_Base, 00998 Dv_Set_Orig_Base, 00999 Dv_Access_Orig_Size, 01000 Dv_Set_Orig_Size, 01001 01002 /* Per dimension stuff, dimension is in the IR_DV_DIM */ 01003 01004 Dv_Access_Low_Bound, 01005 Dv_Set_Low_Bound, 01006 Dv_Access_Extent, 01007 Dv_Set_Extent, 01008 Dv_Access_Stride_Mult, 01009 Dv_Set_Stride_Mult, 01010 01011 Br_Aif_Opr, 01012 Br_Asg_Opr, 01013 Br_Index_Opr, 01014 Br_True_Opr, 01015 Br_Uncond_Opr, 01016 01017 Case_Range_Opr, 01018 Implied_Do_Opr, 01019 Kwd_Opr, 01020 Percent_Val_Opr, 01021 Loc_Opr, 01022 Aloc_Opr, 01023 01024 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01025 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01026 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01027 01028 Const_Tmp_Loc_Opr, 01029 Present_Opr, 01030 Argchck_Present_Opr, 01031 Argchck_Loc_Opr, 01032 Len_Opr, 01033 Clen_Opr, 01034 Paren_Opr, 01035 Struct_Opr, 01036 Struct_Construct_Opr, 01037 Array_Construct_Opr, 01038 Constant_Struct_Construct_Opr, 01039 Constant_Array_Construct_Opr, 01040 Subscript_Opr, 01041 Whole_Subscript_Opr, 01042 Section_Subscript_Opr, 01043 Alloc_Obj_Opr, 01044 Dealloc_Obj_Opr, 01045 Substring_Opr, 01046 Whole_Substring_Opr, 01047 Triplet_Opr, 01048 Label_Opr, 01049 Loop_Info_Opr, 01050 Loop_End_Opr, 01051 Init_Opr, 01052 Init_Reloc_Opr, 01053 01054 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01055 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01056 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01057 01058 Use_Opr, 01059 Where_Opr, 01060 Real_Div_To_Int_Opr, 01061 Readsm_Opr, 01062 Memory_Barrier_Opr, 01063 Remote_Write_Barrier_Opr, 01064 Write_Memory_Barrier_Opr, 01065 01066 Suppress_Opr, 01067 01068 Align_Cdir_Opr, 01069 Bl_Cdir_Opr, 01070 Bounds_Cdir_Opr, 01071 Cachealign_Cdir_Opr, 01072 Inline_Cdir_Opr, 01073 Ivdep_Cdir_Opr, 01074 Nextscalar_Cdir_Opr, 01075 Nobl_Cdir_Opr, 01076 Nobounds_Cdir_Opr, 01077 Noinline_Cdir_Opr, 01078 Norecurrence_Cdir_Opr, 01079 Nosplit_Cdir_Opr, 01080 Notask_Cdir_Opr, 01081 Nounroll_Cdir_Opr, 01082 Novector_Cdir_Opr, 01083 Novsearch_Cdir_Opr, 01084 Prefertask_Cdir_Opr, 01085 01086 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01087 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01088 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01089 01090 Prefervector_Cdir_Opr, 01091 Recurrence_Cdir_Opr, 01092 Shortloop_Cdir_Opr, 01093 Shortloop128_Cdir_Opr, 01094 Split_Cdir_Opr, 01095 Task_Cdir_Opr, 01096 Unroll_Cdir_Opr, 01097 Vector_Cdir_Opr, 01098 Vsearch_Cdir_Opr, 01099 01100 Case_Cmic_Opr, 01101 Endcase_Cmic_Opr, 01102 Cncall_Cmic_Opr, 01103 Continue_Cmic_Opr, 01104 Doall_Cmic_Opr, 01105 Doparallel_Cmic_Opr, 01106 Enddo_Cmic_Opr, 01107 Guard_Cmic_Opr, 01108 Endguard_Cmic_Opr, 01109 REMOVED_Opr, /* Available in 5.0 PL */ 01110 Numcpus_Cmic_Opr, 01111 Parallel_Cmic_Opr, 01112 Endparallel_Cmic_Opr, 01113 Permutation_Cmic_Opr, 01114 Taskcommon_Cmic_Opr, 01115 Wait_Cmic_Opr, 01116 01117 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01118 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01119 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01120 01121 Send_Cmic_Opr, 01122 01123 My_Pe_Opr, 01124 01125 Ieee_Unordered_Opr, 01126 Ieee_Next_After_Opr, 01127 Ieee_Remainder_Opr, 01128 Ieee_Exponent_Opr, 01129 Ieee_Copy_Sign_Opr, 01130 Ieee_Int_Opr, 01131 Ieee_Real_Opr, 01132 Ieee_Finite_Opr, 01133 Ieee_Is_Nan_Opr, 01134 Ieee_Class_Opr, 01135 Ieee_Binary_Scale_Opr, 01136 Int_Mult_Upper_Opr, 01137 Get_Ieee_Status_Opr, 01138 Set_Ieee_Status_Opr, 01139 Get_Ieee_Exceptions_Opr, 01140 Set_Ieee_Exceptions_Opr, 01141 Get_Ieee_Interrupts_Opr, 01142 Set_Ieee_Interrupts_Opr, 01143 Get_Ieee_Rounding_Mode_Opr, 01144 Set_Ieee_Rounding_Mode_Opr, 01145 Test_Ieee_Interrupt_Opr, 01146 Test_Ieee_Exception_Opr, 01147 Set_Ieee_Exception_Opr, 01148 01149 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01150 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01151 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01152 01153 Clear_Ieee_Exception_Opr, 01154 Enable_Ieee_Interrupt_Opr, 01155 Disable_Ieee_Interrupt_Opr, 01156 01157 Cvrt_Unsigned_Opr, 01158 SSD_Dealloc_Opr, 01159 01160 /* These are used for symbolic expressions. */ 01161 01162 Symbolic_Mult_Opr, 01163 Symbolic_Div_Opr, 01164 Symbolic_Uplus_Opr, 01165 Symbolic_Uminus_Opr, 01166 Symbolic_Plus_Opr, 01167 Symbolic_Minus_Opr, 01168 Symbolic_Max_Opr, 01169 01170 Rep_Count_Opr, 01171 Lg_Opr, 01172 Shifta_Opr, 01173 01174 Symbolic_Mod_Opr, 01175 Symbolic_Shiftr_Opr, 01176 Symbolic_Shiftl_Opr, 01177 Symmetric_Alloc_Opr, 01178 Symmetric_Dealloc_Opr, 01179 01180 Copy_In_Opr, 01181 Copy_Out_Opr, 01182 01183 Pack_Opr, 01184 Unpack_Opr, 01185 01186 Local_Pe_Dim_Opr, 01187 01188 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01189 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01190 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01191 01192 Start_Io_Opr, 01193 End_Io_Opr, 01194 01195 Dot_Product_Logical_Opr, 01196 01197 Symbolic_Min_Opr, 01198 Nopattern_Cdir_Opr, 01199 Pattern_Cdir_Opr, 01200 Mark_Cdir_Opr, 01201 Nomark_Cdir_Opr, 01202 01203 Backspace_Opr, 01204 Buffer_In_Opr, 01205 Buffer_Out_Opr, 01206 Close_Opr, 01207 Endfile_Opr, 01208 Inquire_Opr, 01209 Open_Opr, 01210 Rewind_Opr, 01211 Mvbits_Opr, 01212 Ishftc_Opr, 01213 Ibits_Opr, 01214 01215 False_Parm_Opr, 01216 01217 Aggressiveinnerloopfission_Opr, 01218 Blockable_Dir_Opr, 01219 Blockingsize_Dir_Opr, 01220 Fission_Star_Opr, 01221 Fissionable_Star_Opr, 01222 01223 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01224 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01225 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01226 01227 Fuse_Star_Opr, 01228 Fusable_Star_Opr, 01229 Interchange_Dir_Opr, 01230 Nointerchange_Dir_Opr, 01231 Nofission_Star_Opr, 01232 Nofusion_Star_Opr, 01233 Noblocking_Dir_Opr, 01234 Opaque_Star_Opr, 01235 Purpleconditional_Star_Opr, 01236 Purpleunconditional_Star_Opr, 01237 Redistribute_Dollar_Opr, 01238 Doacross_Dollar_Opr, 01239 Pdo_Par_Opr, 01240 Parallel_Do_Par_Opr, 01241 Parallel_Par_Opr, 01242 Psection_Par_Opr, 01243 Singleprocess_Par_Opr, 01244 Section_Par_Opr, 01245 End_Pdo_Par_Opr, 01246 End_Parallel_Par_Opr, 01247 Barrier_Par_Opr, 01248 Critical_Section_Par_Opr, 01249 End_Critical_Section_Par_Opr, 01250 End_Psection_Par_Opr, 01251 End_Singleprocess_Par_Opr, 01252 01253 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01254 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01255 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01256 01257 Unroll_Star_Opr, 01258 Assert_Star_Opr, 01259 Regionbegin_Star_Opr, 01260 Regionend_Star_Opr, 01261 Section_Gp_Star_Opr, 01262 Section_Nongp_Star_Opr, 01263 01264 Prefetch_Star_Opr, 01265 Prefetch_Manual_Star_Opr, 01266 Prefetch_Ref_Disable_Star_Opr, 01267 Prefetch_Ref_Star_Opr, 01268 01269 Align_Symbol_Star_Opr, 01270 Fill_Symbol_Star_Opr, 01271 01272 Inline_Here_Star_Opr, 01273 Noinline_Here_Star_Opr, 01274 End_Inline_Here_Star_Opr, 01275 01276 Dynamic_Dollar_Opr, 01277 Page_Place_Dollar_Opr, 01278 Copyin_Dollar_Opr, 01279 01280 User_Code_Start_Opr, 01281 01282 Fetch_And_Add_Opr, 01283 Fetch_And_Sub_Opr, 01284 Fetch_And_Or_Opr, 01285 Fetch_And_And_Opr, 01286 Fetch_And_Xor_Opr, 01287 Fetch_And_Nand_Opr, 01288 01289 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01290 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01291 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01292 01293 Add_And_Fetch_Opr, 01294 Sub_And_Fetch_Opr, 01295 Or_And_Fetch_Opr, 01296 And_And_Fetch_Opr, 01297 Xor_And_Fetch_Opr, 01298 Nand_And_Fetch_Opr, 01299 01300 Synchronize_Opr, 01301 Lock_Release_Opr, 01302 Lock_Test_And_Set_Opr, 01303 Compare_And_Swap_Opr, 01304 01305 Integer_Cdir_Opr, 01306 01307 Malloc_Opr, 01308 Free_Opr, 01309 01310 Concurrent_Cdir_Opr, 01311 01312 Inline_Routine_Star_Opr, 01313 Noinline_Routine_Star_Opr, 01314 Inline_Global_Star_Opr, 01315 Noinline_Global_Star_Opr, 01316 01317 Atomic_Open_Mp_Opr, 01318 Barrier_Open_Mp_Opr, 01319 Critical_Open_Mp_Opr, 01320 Do_Open_Mp_Opr, 01321 Endcritical_Open_Mp_Opr, 01322 Enddo_Open_Mp_Opr, 01323 Endparallel_Open_Mp_Opr, 01324 01325 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01326 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01327 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01328 01329 Endparalleldo_Open_Mp_Opr, 01330 Endparallelsections_Open_Mp_Opr, 01331 Endmaster_Open_Mp_Opr, 01332 Endordered_Open_Mp_Opr, 01333 Endsections_Open_Mp_Opr, 01334 Endsingle_Open_Mp_Opr, 01335 Flush_Open_Mp_Opr, 01336 Master_Open_Mp_Opr, 01337 Ordered_Open_Mp_Opr, 01338 Parallel_Open_Mp_Opr, 01339 Paralleldo_Open_Mp_Opr, 01340 Parallelsections_Open_Mp_Opr, 01341 Section_Open_Mp_Opr, 01342 Sections_Open_Mp_Opr, 01343 Single_Open_Mp_Opr, 01344 01345 Concurrentize_Star_Opr, 01346 Noconcurrentize_Star_Opr, 01347 01348 Omp_Set_Lock_Opr, 01349 Omp_Unset_Lock_Opr, 01350 Omp_Test_Lock_Opr, 01351 01352 Omp_Get_Num_Threads_Opr, 01353 Omp_Get_Max_Threads_Opr, 01354 Omp_Get_Thread_Num_Opr, 01355 Omp_Get_Num_Procs_Opr, 01356 Omp_In_Parallel_Opr, 01357 01358 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01359 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01360 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01361 01362 Omp_Get_Dynamic_Opr, 01363 Omp_Get_Nested_Opr, 01364 01365 Cache_Bypass_Cdir_Opr, 01366 01367 Forall_Opr, 01368 If_Opr, 01369 Else_Opr, 01370 Endif_Opr, 01371 01372 Flush_Star_Opr, 01373 Stmt_Expansion_Opr, 01374 01375 Cosd_Opr, 01376 Sind_Opr, 01377 Tand_Opr, 01378 Acosd_Opr, 01379 Asind_Opr, 01380 Atand_Opr, 01381 Atan2d_Opr, 01382 01383 Stream_Dir_Opr, 01384 UNUSED1_Opr, 01385 UNUSED2_Opr, 01386 UNUSED3_Opr, 01387 UNUSED4_Opr, 01388 UNUSED5_Opr, 01389 Nostream_Dir_Opr, 01390 01391 Null_Intrinsic_Opr, 01392 Io_Item_Type_Code_Opr, 01393 01394 /* DO NOT CHANGE THE ORDER OF THESE OPERATORS!!!! */ 01395 /* DO NOT DELETE ANY OF THESE OPERATORS!!!!!!!!!! */ 01396 /* ADD NEW OPERATORS AT THE END OF THE LIST!!!!!!!!!!!! */ 01397 01398 Where_Cnstrct_Opr, 01399 Else_Where_Mask_Opr, 01400 Else_Where_Opr, 01401 01402 Preferstream_Dir_Opr, 01403 01404 Copyin_Bound_Opr, 01405 01406 Preferstream_Nocinv_Dir_Opr, 01407 01408 /* OpenMP 2.0 operators (radu) */ 01409 Endparallelworkshare_Open_Mp_Opr, 01410 Endworkshare_Open_Mp_Opr, 01411 Parallelworkshare_Open_Mp_Opr, 01412 Workshare_Open_Mp_Opr, 01413 01414 /* eraxxon: OpenAD directive */ 01415 XXX_OpenAD_Opr, 01416 Dependent_OpenAD_Opr, 01417 Independent_OpenAD_Opr, 01418 Simple_OpenAD_Opr, 01419 EndSimple_OpenAD_Opr, 01420 01421 /* PLACE NEW OPERATORS ABOVE THIS LINE. */ 01422 /* DO NOT PUT ANY OPRS AFTER THIS ONE */ 01423 The_Last_Opr 01424 }; 01425 01426 enum scalar_lvl_values {Scalar_Lvl_0, 01427 Scalar_Lvl_1, 01428 Scalar_Lvl_2, 01429 Scalar_Lvl_3, 01430 Scalar_Lvl_Err }; 01431 01432 enum sh_position_values {Before, After}; 01433 01434 01435 enum src_form_values {Fixed_Form, Free_Form }; 01436 01437 01438 /******************************************************************************/ 01439 /* DATA STRUCTURES DEPENDENT ON THE FOLLOWING ENUMERATION: */ 01440 /* token_to_stmt_type DEFINED IN p_driver.h */ 01441 /* stmt_parsers DEFINED IN p_driver.h */ 01442 /* stmt_semantics DEFINED IN s_driver.h */ 01443 /* stmt_in_blk DEFINED IN p_driver.h */ 01444 /* stmt_top_cat DEFINED IN p_driver.h */ 01445 /* stmt_type_str DEFINED IN main.h */ 01446 /* mapped_stmt_type DEFINED IN fecif.h */ 01447 /* */ 01448 /* Notice: If any new statement types are added, they must be added to the */ 01449 /* end of the enum. You must also update table mapped_stmt_type */ 01450 /* in fecif.h and cif_stmt_values in this file (and contact the CIF */ 01451 /* folks to coordinate the new statement type numbers for the CIF */ 01452 /* Statement Type record. */ 01453 /******************************************************************************/ 01454 01455 enum stmt_type_values {Null_Stmt, 01456 01457 Allocatable_Stmt, 01458 Automatic_Stmt, 01459 Common_Stmt, 01460 Contains_Stmt, 01461 Cpnt_Decl_Stmt, 01462 Data_Stmt, 01463 Derived_Type_Stmt, /* e.g. TYPE <name> */ 01464 Dimension_Stmt, 01465 Directive_Stmt, 01466 Equivalence_Stmt, 01467 External_Stmt, 01468 Format_Stmt, 01469 Implicit_Stmt, 01470 Implicit_None_Stmt, 01471 Intent_Stmt, 01472 Interface_Stmt, 01473 Intrinsic_Stmt, 01474 Module_Proc_Stmt, 01475 Namelist_Stmt, 01476 Optional_Stmt, 01477 Parameter_Stmt, 01478 Pointer_Stmt, 01479 Private_Stmt, 01480 Public_Stmt, 01481 Save_Stmt, 01482 Sequence_Stmt, 01483 Stmt_Func_Stmt, 01484 Target_Stmt, 01485 Task_Common_Stmt, 01486 Type_Decl_Stmt, /* C L I R D CX TYPE( */ 01487 Use_Stmt, 01488 01489 Blockdata_Stmt, 01490 Elemental_Stmt, 01491 Function_Stmt, 01492 Module_Stmt, 01493 Program_Stmt, 01494 Pure_Stmt, 01495 Recursive_Stmt, 01496 Subroutine_Stmt, 01497 01498 End_Blockdata_Stmt, 01499 End_Do_Stmt, 01500 End_Function_Stmt, 01501 End_If_Stmt, 01502 End_Interface_Stmt, 01503 End_Module_Stmt, 01504 End_Program_Stmt, 01505 End_Select_Stmt, 01506 End_Stmt, 01507 End_Subroutine_Stmt, 01508 End_Type_Stmt, 01509 End_Where_Stmt, 01510 01511 Allocate_Stmt, 01512 Arith_If_Stmt, 01513 Assign_Stmt, 01514 Assignment_Stmt, 01515 Backspace_Stmt, 01516 Buffer_Stmt, 01517 Call_Stmt, 01518 Case_Stmt, 01519 Close_Stmt, 01520 Continue_Stmt, 01521 Cycle_Stmt, 01522 Deallocate_Stmt, 01523 Decode_Stmt, 01524 Do_Iterative_Stmt, 01525 Do_While_Stmt, 01526 Do_Infinite_Stmt, 01527 Else_Stmt, 01528 Else_If_Stmt, 01529 Else_Where_Stmt, 01530 Encode_Stmt, 01531 Endfile_Stmt, 01532 Entry_Stmt, 01533 Exit_Stmt, 01534 Goto_Stmt, 01535 If_Cstrct_Stmt, 01536 If_Stmt, 01537 Inquire_Stmt, 01538 Nullify_Stmt, 01539 Open_Stmt, 01540 Outmoded_If_Stmt, 01541 Pause_Stmt, 01542 Print_Stmt, 01543 Read_Stmt, 01544 Return_Stmt, 01545 Rewind_Stmt, 01546 Select_Stmt, 01547 Stop_Stmt, 01548 Then_Stmt, 01549 Where_Cstrct_Stmt, 01550 Where_Stmt, 01551 Write_Stmt, 01552 Type_Init_Stmt, 01553 01554 Label_Def, 01555 Construct_Def, 01556 01557 Automatic_Base_Calc_Stmt, 01558 Automatic_Base_Size_Stmt, 01559 01560 End_Parallel_Stmt, 01561 End_Do_Parallel_Stmt, 01562 End_Parallel_Case_Stmt, 01563 Parallel_Case_Stmt, 01564 End_Guard_Stmt, 01565 01566 Statement_Num_Stmt, 01567 01568 SGI_Section_Stmt, 01569 SGI_End_Psection_Stmt, 01570 SGI_End_Pdo_Stmt, 01571 SGI_End_Parallel_Stmt, 01572 SGI_End_Critical_Section_Stmt, 01573 SGI_End_Single_Process_Stmt, 01574 SGI_Region_End_Stmt, 01575 01576 Open_MP_Section_Stmt, 01577 Open_MP_End_Parallel_Stmt, 01578 Open_MP_End_Do_Stmt, 01579 Open_MP_End_Parallel_Sections_Stmt, 01580 Open_MP_End_Sections_Stmt, 01581 Open_MP_End_Section_Stmt, 01582 Open_MP_End_Single_Stmt, 01583 Open_MP_End_Parallel_Do_Stmt, 01584 Open_MP_End_Master_Stmt, 01585 Open_MP_End_Critical_Stmt, 01586 Open_MP_End_Ordered_Stmt, 01587 Open_MP_End_Parallel_Workshare_Stmt, 01588 Open_MP_End_Workshare_Stmt, 01589 01590 Forall_Cstrct_Stmt, 01591 Forall_Stmt, 01592 End_Forall_Stmt, 01593 01594 Else_Where_Mask_Stmt, 01595 01596 Volatile_Stmt 01597 01598 /* When you add a stmt, make sure you change */ 01599 /* stmt_type_str in main.h. */ 01600 /* Also change mapped_stmt_type in fecif.h */ 01601 01602 /* To determine that a stmt is executable, */ 01603 /* see code that sets ATL_EXECUTABLE in */ 01604 /* p_driver.c . */ 01605 01606 }; 01607 01608 01609 enum split_lvl_values { Split_Lvl_0, 01610 Split_Lvl_1, 01611 Split_Lvl_2, 01612 Split_Lvl_Err }; 01613 01614 enum stream_lvl_values { Stream_Lvl_0, 01615 Stream_Lvl_1, 01616 Stream_Lvl_2, 01617 Stream_Lvl_3, 01618 Stream_Lvl_Err }; 01619 01620 enum task_lvl_values { Task_Lvl_0, 01621 Task_Lvl_1, 01622 Task_Lvl_2, 01623 Task_Lvl_3, 01624 Task_Lvl_Err }; 01625 01626 enum unroll_lvl_values { Unroll_Lvl_0, 01627 Unroll_Lvl_1, 01628 Unroll_Lvl_2, 01629 Unroll_Lvl_Err }; 01630 01631 enum vector_lvl_values { Vector_Lvl_0, 01632 Vector_Lvl_1, 01633 Vector_Lvl_2, 01634 Vector_Lvl_3, 01635 Vector_Lvl_Err }; 01636 01637 enum trace_values { Func_Entry, 01638 Func_Exit, 01639 Syntax_Pass, 01640 Semantics_Pass, 01641 PU_Start, 01642 Stmt_Start, 01643 Mem_Alloc, 01644 Mem_Realloc, 01645 Mem_Free, 01646 Mem_Compress }; 01647 01648 enum mp_directive_values { 01649 Doacross, 01650 Pdo, 01651 Parallel_Do, 01652 Parallel, 01653 Psection, 01654 Singleprocess, 01655 Num_Mp_Values /* must be last */ 01656 }; 01657 01658 typedef enum mp_directive_values mp_directive_type; 01659 01660 enum mp_clause_values { 01661 If_Clause, 01662 Local_Clause, 01663 Share_Clause, 01664 Lastlocal_Clause, 01665 Reduction_Clause, 01666 Mp_Schedtype_Clause, 01667 Chunk_Clause, 01668 Blocked_Clause, 01669 Affinity_Clause, 01670 Mode_Clause, 01671 Ordered_Clause, 01672 Onto_Clause, 01673 Nest_Clause, 01674 Lastthread_Clause, 01675 Last_Clause /* must be last */ 01676 }; 01677 typedef enum mp_clause_values mp_clause_type; 01678 01679 extern char *(mp_dir_str[Num_Mp_Values]); 01680 01681 extern boolean clause_allowed[Num_Mp_Values][Last_Clause]; 01682 01683 enum open_mp_directive_values { 01684 Parallel_Omp, 01685 Do_Omp, 01686 Sections_Omp, 01687 Single_Omp, 01688 Parallel_Do_Omp, 01689 Parallel_Sections_Omp, 01690 Parallel_Workshare_Omp, 01691 End_Single_Omp, 01692 Flush_Omp, 01693 Num_Omp_Values /* must be last */ 01694 }; 01695 01696 typedef enum open_mp_directive_values open_mp_directive_type; 01697 01698 enum open_mp_clause_values { 01699 If_Omp_Clause, 01700 Private_Omp_Clause, 01701 Shared_Omp_Clause, 01702 Firstprivate_Omp_Clause, 01703 Default_Omp_Clause, 01704 Copyin_Omp_Clause, 01705 Reduction_Omp_Clause, 01706 Lastprivate_Omp_Clause, 01707 Ordered_Omp_Clause, 01708 Schedule_Omp_Clause, 01709 Copyprivate_Omp_Clause, 01710 Affinity_Omp_Clause, 01711 Nest_Omp_Clause, 01712 Onto_Omp_Clause, 01713 /* there is no FLUSH clause in OpenMP */ 01714 /* we fake this clause in order to treat FLUSH directive the same as the others (radu) */ 01715 Flush_Omp_Clause, 01716 Last_Omp_Clause /* must be last */ 01717 }; 01718 typedef enum open_mp_clause_values open_mp_clause_type; 01719 01720 extern char *(open_mp_dir_str[Num_Omp_Values]); 01721 01722 extern boolean open_mp_clause_allowed[Num_Omp_Values][Last_Omp_Clause]; 01723 01724 01725 /* eraxxon: OpenAD directive */ 01726 enum openad_directive_values { 01727 XXX_OpenAD, 01728 Dependent_OpenAD, 01729 Independent_OpenAD, 01730 Simple_OpenAD, 01731 EndSimple_OpenAD, 01732 Num_OpenAD_Values /* must be last */ 01733 }; 01734 01735 typedef enum openad_directive_values openad_directive_type; 01736 01737 enum openad_clause_values { 01738 XXX_OpenAD_Clause, 01739 Last_OpenAD_Clause /* must be last */ 01740 }; 01741 typedef enum openad_clause_values openad_clause_type; 01742 01743 extern char *(openad_dir_str[Num_OpenAD_Values]); 01744 01745 extern boolean openad_clause_allowed[Num_OpenAD_Values][Last_OpenAD_Clause]; 01746 01747 01748 typedef enum addr_mode_values addr_mode_type; 01749 typedef enum basic_type_values basic_type_type; 01750 typedef enum convert_to_string_values convert_to_string_type; 01751 typedef enum debug_lvl_values debug_lvl_type; 01752 typedef enum expr_mode_values expr_mode_type; 01753 typedef enum fld_values fld_type; 01754 typedef enum fortran_type_values fortran_type_type; 01755 typedef enum forward_ref_values forward_ref_type; 01756 typedef enum glb_tbl_idx_values glb_tbl_idx_type; 01757 typedef enum intrinsic_values intrinsic_type; 01758 typedef enum linear_type_values linear_type_type; 01759 typedef enum msg_lvl_values msg_lvl_type; 01760 typedef enum msg_severities msg_severities_type; 01761 typedef enum obj_values obj_type; 01762 typedef enum operator_values operator_type; 01763 typedef enum scalar_lvl_values scalar_lvl_type; 01764 typedef enum sh_position_values sh_position_type; 01765 typedef enum src_form_values src_form_type; 01766 typedef enum stmt_type_values stmt_type_type; 01767 typedef enum stream_lvl_values stream_lvl_type; 01768 typedef enum task_lvl_values task_lvl_type; 01769 typedef enum vector_lvl_values vector_lvl_type; 01770 typedef enum trace_values trace_type; 01771 typedef struct ac_cmd_line_flags_entry ac_cmd_line_flags_type; 01772 typedef struct cdir_switch_entry cdir_switch_type; 01773 typedef struct cmd_line_flags_entry cmd_line_flags_type; 01774 typedef struct dump_flags_entry dump_flags_type; 01775 typedef struct expr_semantics_args expr_arg_type; 01776 typedef struct on_off_flags_entry on_off_flags_type; 01777 typedef struct opnd_entry opnd_type; 01778 typedef struct opt_flags_entry opt_flags_type; 01779 typedef union target_machine_entry target_machine_type; 01780 typedef union id_str_entry id_str_type; 01781 01782 01783 union id_str_entry {char string[MAX_ID_LEN+1]; 01784 long words[NUM_ID_WDS]; 01785 }; 01786 01787 01788 01789 struct cmd_line_flags_entry { 01790 boolean align8 : 1; /* -align8 */ 01791 boolean align16 : 1; /* -align16 */ 01792 boolean align32 : 1; /* -align32 */ 01793 boolean align64 : 1; /* -align64 */ 01794 boolean static_threadprivate : 1; /* -astatic_..*/ 01795 boolean dalign : 1; /* -a dalign */ 01796 boolean pad : 1; /* -a pad */ 01797 Uint pad_amount : 16; /* -a padn */ 01798 boolean taskcommon : 1; /*-ataskcommon*/ 01799 boolean binary_output : 1; /* -b TRUE */ 01800 boolean reserved_c : 1; /* */ 01801 boolean off_options : 1; /* -d flags */ 01802 boolean on_options : 1; /* -e flags */ 01803 src_form_type src_form : 2; /* -f fixed */ 01804 boolean reserved_g : 1; /* */ 01805 boolean reserved_h : 1; /* */ 01806 boolean integer_32 : 1; /* -i 32 */ 01807 boolean reserved_j : 1; /* */ 01808 boolean solaris_profile : 1; /* -k */ 01809 boolean reserved_l : 1; /* */ 01810 msg_lvl_type msg_lvl_suppressed : 4; /* -m warning*/ 01811 boolean reserved_n : 1; /* */ 01812 boolean reserved_o : 1; /* */ 01813 boolean module_paths : 1; /* -p path */ 01814 boolean expression_eval_stmt : 1; /* -qs */ 01815 boolean expression_eval_expr : 1; /* -qe */ 01816 boolean reserved_q : 1; /* */ 01817 boolean reserved_r : 1; /* */ 01818 boolean s_float64 : 1; /* -s float64 */ 01819 boolean s_default32 : 1; /*-s default32*/ 01820 boolean s_default64 : 1; /*-s default64*/ 01821 boolean s_cf77types : 1; /*-s cf77types*/ 01822 boolean s_integer8 : 1; /* -sinteger8 */ 01823 boolean s_logical8 : 1; /* -slogical8 */ 01824 boolean s_real8 : 1; /* -sreal8 */ 01825 boolean s_complex8 : 1; /* -scomplex8 */ 01826 boolean s_doublecomplex16 : 1; /* -sdoublec */ 01827 boolean s_doubleprecision16 : 1; /* -sdoublepr */ 01828 boolean s_pointer8 : 1; /* -spointer8 */ 01829 Uint truncate_bits : 6; /* -t 0 */ 01830 boolean dump_options : 1; /* -u flags */ 01831 boolean pdgcs_debug_opts : 1; /* -v opts */ 01832 boolean reserved_w : 1; /* */ 01833 boolean disregard_all_directives: 1; /* -x all */ 01834 boolean disregard_all_dirs : 1; /* -x dir */ 01835 boolean disregard_all_mics : 1; /* -x mic */ 01836 boolean disregard_all_mips : 1; /* -x mips */ 01837 boolean disregard_all_mpp_cdirs : 1; /* -x mpp */ 01838 boolean disregard_all_omps : 1; /* -x omp */ 01839 boolean disregard_conditional_omp : 1; /* No !$ */ 01840 /* eraxxon: OpenAD directive */ 01841 boolean disregard_all_openads : 1; /* -x openad */ 01842 boolean reserved_y : 1; /* */ 01843 boolean cleanUpWhirl : 1; /* -z FALSE */ 01844 int implicit_use_idx; 01845 boolean reserved_B : 1; /* */ 01846 boolean cif_flags : 1; /* -C cif */ 01847 boolean reserved_D : 1; /* */ 01848 boolean reserved_E : 1; /* */ 01849 boolean pp_macro_expansion : 1; /* */ 01850 debug_lvl_type debug_lvl : 4; /* -G level */ 01851 boolean dwarf_debug : 1; /* -Gd */ 01852 boolean reserved_H : 1; /* */ 01853 boolean reserved_I : 1; /* -I include */ 01854 boolean mod_out_path : 1; /* -J path */ 01855 boolean reserved_K : 1; /* */ 01856 boolean reserved_L : 1; /* */ 01857 Uint num_msgs_suppressed : 16; /* # -M msg */ 01858 boolean line_size_80 : 1; /* -N 72 */ 01859 boolean line_size_132 : 1; /* -N 72 */ 01860 boolean opt_options : 1; /* -O flags */ 01861 boolean small_pic_model : 1; /* -Ps */ 01862 boolean large_pic_model : 1; /* -Pl */ 01863 boolean reserved_Q : 1; /* */ 01864 boolean runtime_argument : 1; /* -R a */ 01865 boolean runtime_arg_call : 1; /* -R C */ 01866 boolean runtime_arg_entry : 1; /* -R E */ 01867 boolean runtime_arg_count_only : 1; /* -R n */ 01868 boolean runtime_bounds : 1; /* -R b */ 01869 boolean runtime_conformance : 1; /* -R c */ 01870 boolean runtime_intrinsics : 1; /* -R i */ 01871 boolean runtime_substring : 1; /* -R s */ 01872 boolean runtime_ptr_chk : 1; /* -R p */ 01873 boolean assembly_output : 1; /* -S FALSE */ 01874 boolean reserved_T : 1; /* */ 01875 boolean reserved_U : 1; /* */ 01876 boolean verify_option : 1; /* -V FALSE */ 01877 boolean reserved_W : 1; /* -W FALSE */ 01878 Uint MPP_num_pes :32; /* -X # pes */ 01879 boolean malleable : 1; /* -Xm */ 01880 boolean ccg_dump_options : 1; /* -Y flags */ 01881 boolean co_array_fortran : 1; /* -Z */ 01882 boolean do_UDB_checks : 1; /* -G0&!scala0*/ 01883 }; 01884 01885 struct ac_cmd_line_flags_entry { 01886 Uint temp_fchar_len : 3; /*-YCLEN=1...6*/ 01887 Uint ghand_create_count : 3; /*-YMXGH=1...4*/ 01888 }; 01889 01890 01891 struct dump_flags_entry { 01892 01893 /* The following options are allowed in a nondebug compiler. */ 01894 01895 boolean abort_on_ansi : 1; 01896 boolean no_dimension_padding : 1; 01897 boolean no_module_output : 1; 01898 boolean preinline : 1; 01899 boolean f_minus_minus : 1; 01900 boolean fmm1 : 1; 01901 boolean fmm2 : 1; 01902 boolean show_cmd_line : 1; 01903 boolean mod_version : 1; 01904 boolean mp : 1; 01905 boolean open_mp : 1; 01906 boolean dsm : 1; 01907 boolean cray_compatible : 1; 01908 boolean pack_half_word : 1; 01909 int pvp_test; 01910 01911 /* The rest of the options are only allowed in a debug compiler. */ 01912 01913 boolean bd_tbl : 1; 01914 boolean blk_stk : 1; 01915 boolean cmd_line_tbls : 1; 01916 boolean cn_tbl : 1; 01917 boolean defines : 1; 01918 boolean fort_out : 1; 01919 boolean fortran_out : 1; 01920 boolean fp_tbl : 1; 01921 boolean ftrace_info : 1; 01922 boolean gl_tbl : 1; 01923 boolean help_dbg : 1; 01924 boolean intrin_tbl : 1; 01925 boolean ir1_tbl : 1; 01926 boolean ir2_tbl : 1; 01927 boolean ir3_tbl : 1; 01928 boolean ir4_tbl : 1; 01929 boolean mem_report : 1; 01930 boolean msg_checking : 1; 01931 boolean mtrace_info : 1; 01932 boolean name_tbls : 1; 01933 boolean pdgcs : 1; 01934 boolean pdt_dump : 1; 01935 boolean sb_tbl : 1; 01936 boolean scp_tbl : 1; 01937 boolean src_dmp : 1; 01938 boolean std_err : 1; 01939 boolean stmt_dmp : 1; 01940 boolean sytb : 1; 01941 boolean typ_tbl : 1; 01942 boolean constant_bits : 1; 01943 }; 01944 01945 01946 struct on_off_flags_entry { 01947 boolean abort_if_any_errors : 1; /* -ea */ 01948 boolean reserved_b : 1; /* */ 01949 boolean pad_char_literals : 1; /* -ec */ 01950 boolean reserved_d : 1; /* */ 01951 boolean ieee : 1; /* -ee */ 01952 boolean flowtrace_option : 1; /* -ef */ 01953 boolean assembly_listing_file : 1; /* -eg */ 01954 boolean integer_1_and_2 : 1; /* -eh */ 01955 boolean indef_init : 1; /* -ei */ 01956 boolean exec_doloops_once : 1; /* -ej */ 01957 boolean reserved_k : 1; /* */ 01958 boolean reserved_l : 1; /* */ 01959 boolean module_to_mod : 1; /* -em */ 01960 boolean issue_ansi_messages : 1; /* -en */ 01961 boolean reserved_o : 1; /* */ 01962 boolean enable_double_precision : 1; /* -ep */ 01963 boolean abort_on_100_errors : 1; /* -eq */ 01964 boolean round_mult_operations : 1; /* -er */ 01965 boolean reserved_s : 1; /* */ 01966 boolean alloc_autos_on_stack : 1; /* -et */ 01967 boolean eu : 1; /* -eu */ 01968 boolean round_integer_divide : 1; /* -eu */ 01969 boolean reciprical_divide : 1; /* -eu */ 01970 boolean save_all_vars : 1; /* -ev */ 01971 boolean set_ev_option : 1; /* -ev */ 01972 boolean reserved_w : 1; /* */ 01973 boolean reserved_x : 1; /* */ 01974 boolean reserved_y : 1; /* */ 01975 boolean recognize_minus_zero : 1; /* -ez */ 01976 boolean MPP_apprentice : 1; /* -eA */ 01977 boolean binary_output : 1; /* -eB */ 01978 boolean shared_to_private_coer : 1; /* -eC */ 01979 boolean all_debug : 1; /* -eD */ 01980 boolean reserved_E : 1; /* */ 01981 boolean reserved_F : 1; /* */ 01982 boolean reserved_G : 1; /* */ 01983 boolean reserved_H : 1; /* */ 01984 boolean implicit_none : 1; /* -eI */ 01985 boolean reserved_J : 1; /* */ 01986 boolean reserved_K : 1; /* */ 01987 boolean top_test_shortloops : 1; /* -eL */ 01988 boolean reserved_M : 1; /* */ 01989 boolean remove_trailing_uscore : 1; /* -zN */ 01990 boolean output_pound_lines : 1; /* -dP */ 01991 boolean preprocess_only : 1; /* */ 01992 boolean preprocess : 1; /* */ 01993 boolean allow_leading_uscore : 1; /* -eQ */ 01994 boolean recursive : 1; /* -eR */ 01995 boolean assembly_output : 1; /* -eS */ 01996 boolean reserved_T : 1; /* */ 01997 boolean upper_case_names : 1; /* -eU */ 01998 boolean reserved_V : 1; /* */ 01999 boolean reserved_W : 1; /* */ 02000 boolean atexpert : 1; /* -eX */ 02001 boolean reserved_Y : 1; /* */ 02002 boolean save_dot_i : 1; /* -ek */ 02003 boolean zero_init : 1; /* -e0 */ 02004 boolean d_lines : 1; 02005 }; 02006 02007 02008 /*************\ 02009 |* OPND TYPE *| 02010 \*************/ 02011 02012 /* IF THIS CHANGES, please change INIT_OPND_TYPE in globals.m */ 02013 02014 struct opnd_entry {Uint line_num : 24; 02015 Uint col_num : 8; 02016 02017 Uint flag_1 : 1; 02018 Uint flag_2 : 1; 02019 Uint unused : 2; 02020 fld_type fld : 4; 02021 Uint idx : 24; 02022 }; 02023 02024 02025 /***********************************************************\ 02026 |* enum used to describe array constructor size complexity *| 02027 \***********************************************************/ 02028 02029 enum size_expr_level { 02030 Unknown_Expr_Size, 02031 Simple_Expr_Size, 02032 Interp_Loop_Size, 02033 Guess_Size 02034 }; 02035 02036 typedef enum size_expr_level size_level_type; 02037 02038 /**************************************************\ 02039 |* expression descriptor type for expr semantics. *| 02040 |* must be here because it needs opnd_type *| 02041 \**************************************************/ 02042 02043 struct expr_semantics_args {basic_type_type type : 8; 02044 linear_type_type linear_type : 8; 02045 Uint type_idx : 16; 02046 02047 boolean kind0seen : 1; 02048 boolean kind0E0seen : 1; 02049 boolean kind0D0seen : 1; 02050 boolean kindnotconst : 1; 02051 boolean percent_val_arg : 1; 02052 boolean constant : 1; 02053 boolean foldable : 1; 02054 boolean will_fold_later : 1; 02055 boolean pointer : 1; 02056 boolean target : 1; 02057 boolean vector_subscript: 1; 02058 boolean reference : 1; 02059 boolean constructor : 1; 02060 boolean component : 1; 02061 boolean section : 1; 02062 boolean label : 1; 02063 boolean array_elt : 1; 02064 boolean assumed_shape : 1; 02065 boolean assumed_size : 1; 02066 boolean allocatable : 1; 02067 boolean dope_vector : 1; 02068 boolean tmp_reference : 1; 02069 boolean has_constructor : 1; 02070 boolean optional_darg : 1; 02071 boolean pe_dim_ref : 1; 02072 boolean dist_reshape_ref: 1; 02073 #ifdef KEY /* Bug 934 */ 02074 /* Set to indicate that we are evaluating 02075 * the RHS of an assignment of an entire 02076 * derived type, so that we can enforce 02077 * the constraint on such assigments 02078 * within pure procedures */ 02079 boolean derived_assign : 1; 02080 Uint UNUSED2 : 5; 02081 #else /* KEY Bug 934 */ 02082 Uint UNUSED2 : 6; 02083 #endif /* KEY Bug 934 */ 02084 02085 Uint rank : 32; 02086 02087 Uint UNUSED3 : 2; 02088 Uint constructor_size_level : 2; 02089 boolean has_symbolic : 1; 02090 boolean tree_has_ranf : 1; 02091 boolean contig_array : 1; 02092 boolean shape_known : 1; 02093 Uint cif_id : 24; 02094 02095 02096 opnd_type char_len; 02097 opnd_type bias_opnd; 02098 # ifdef COARRAY_FORTRAN 02099 opnd_type shape[14]; 02100 # else 02101 opnd_type shape[7]; 02102 # endif 02103 }; 02104 02105 struct cdir_switch_entry { 02106 boolean align : 1; 02107 boolean autoscope : 1; 02108 boolean bl : 1; 02109 boolean bounds : 1; 02110 boolean casedir : 1; 02111 boolean cncall : 1; 02112 boolean code : 1; 02113 boolean concurrent : 1; 02114 boolean do_inline : 1; 02115 boolean do_parallel : 1; 02116 boolean doall_region : 1; 02117 boolean flow : 1; 02118 boolean guard : 1; 02119 boolean guard_has_flag : 1; 02120 boolean guard_in_par_reg : 1; 02121 boolean ivdep : 1; 02122 boolean mark : 1; 02123 boolean maxcpus : 1; 02124 boolean nextscalar : 1; 02125 boolean no_internal_calls : 1; 02126 boolean noinline : 1; 02127 boolean parallel_region : 1; 02128 boolean pattern : 1; 02129 boolean permutation : 1; 02130 boolean preferstream : 1; 02131 boolean preferstream_nocinv : 1; 02132 boolean prefertask : 1; 02133 boolean prefervector : 1; 02134 boolean recurrence : 1; 02135 boolean shortloop : 1; 02136 boolean shortloop128 : 1; 02137 boolean split : 1; 02138 boolean stream : 1; 02139 boolean task : 1; 02140 boolean notask_region : 1; 02141 boolean unroll_dir : 1; 02142 boolean vector : 1; 02143 boolean vsearch : 1; 02144 02145 boolean aggressiveinnerloopfission : 1; 02146 boolean fission : 1; 02147 boolean fissionable : 1; 02148 boolean fusable : 1; 02149 boolean fuse : 1; 02150 boolean noblocking : 1; 02151 boolean nofission : 1; 02152 boolean nofusion : 1; 02153 boolean nointerchange : 1; 02154 boolean opaque : 1; 02155 boolean purpleconditional : 1; 02156 boolean purpleunconditional : 1; 02157 boolean inline_here_sgi : 1; 02158 boolean noinline_here_sgi : 1; 02159 02160 int blockable_count; 02161 int blockable_group; 02162 int blockable_sh_idx; 02163 int bounds_il_list; 02164 int cache_bypass_ir_idx; 02165 int concurrent_idx; 02166 int copyin_list_idx; 02167 int copyprivate_list_idx; 02168 int default_scope_list_idx; 02169 int dir_nest_check_sh_idx; 02170 int do_omp_sh_idx; 02171 int doacross_sh_idx; 02172 int doall_sh_idx; 02173 int dopar_sh_idx; 02174 int firstprivate_list_idx; 02175 int flush_list_idx; 02176 int getfirst_list_idx; 02177 int implicit_use_idx; 02178 int inline_here_list_idx; 02179 int interchange_count; 02180 int interchange_group; 02181 int interchange_level; 02182 int interchange_sh_idx; 02183 int lastlocal_list_idx; 02184 int lastprivate_list_idx; 02185 int lastthread_list_idx; 02186 int mark_cmdline_idx; 02187 int mark_dir_idx; 02188 int nobounds_il_list; 02189 int noinline_here_list_idx; 02190 int paralleldo_omp_sh_idx; 02191 int paralleldo_sh_idx; 02192 int pdo_sh_idx; 02193 int private_list_idx; 02194 int reduction_list_idx; 02195 int safevl_idx; 02196 int send_list_idx; 02197 int shared_list_idx; 02198 int wait_list_idx; 02199 int unroll_count_idx; 02200 02201 opnd_type first_sh_blk_stk; 02202 02203 opnd_type chunk_opnd; 02204 opnd_type maxcpus_opnd; 02205 opnd_type mp_schedtype_opnd; 02206 }; 02207 02208 02209 struct opt_flags_entry { 02210 boolean aggress : 1; /* -O aggress */ 02211 boolean bottom_load : 1; /* -O bl */ 02212 boolean set_fastint_option : 1; /* -O fastint */ 02213 boolean set_nofastint_option : 1; /* -O nofastint */ 02214 boolean set_allfastint_option : 1; /* -O allfastint */ 02215 boolean fusion : 1; /* -O fusion */ 02216 boolean ieeeconform : 1; /* -O ieeeconform */ 02217 Uint inline_lvl : 3; /* -O inlinen */ 02218 Uint short_circuit_lvl : 2; /* -O inlinen */ 02219 boolean jump : 1; /* -O jump */ 02220 boolean loopalign : 1; /* -O loopalign */ 02221 boolean mark : 1; /* -O mark */ 02222 boolean modinline : 1; /* -O modinline */ 02223 boolean extent_assert : 1; /* -O inlinene */ 02224 boolean msgs : 1; /* -O msgs */ 02225 boolean neg_msgs : 1; /* -O negmsgs */ 02226 boolean nointerchange : 1; /* -O nointerchange */ 02227 boolean opt_info : 1; /* -O opt_info */ 02228 boolean over_index : 1; /* -O over_index */ 02229 boolean pattern : 1; /* -O pattern */ 02230 Uint pipeline_lvl : 2; /* -O pipeline */ 02231 boolean recurrence : 1; /* -O recurrence */ 02232 Uint scalar_lvl : 2; /* -O scalarn */ 02233 Uint split_lvl : 2; /* -O scalarn */ 02234 Uint stream_lvl : 2; /* -O stream */ 02235 Uint support_lvl : 2; /* -O num */ 02236 Uint task_lvl : 2; /* -O taskn */ 02237 boolean taskinner : 1; /* -O taskinner */ 02238 boolean threshold : 1; /* -O threshold */ 02239 Uint unroll_lvl : 2; /* -O unroll */ 02240 Uint vector_lvl : 2; /* -O vectorn */ 02241 boolean vsearch : 1; /* -O vsearch */ 02242 boolean zeroinc : 1; /* -O zeroinc */ 02243 id_str_type mark_name; /* -O mark=name */ 02244 boolean matmul_inline : 1; /* -O matmul_inline */ 02245 boolean mv_matmul_inline : 1; /* -O mv_matmul_inline*/ 02246 02247 Uint reshape_idx : 16; /* -O reshape */ 02248 boolean reshape : 1; /* -O reshape */ 02249 boolean reshape_all_arrays : 1; /* -O reshape */ 02250 }; 02251 02252 02253 /* Use the following compiler-local definition of the target machine */ 02254 /* structure until it's available from the library. */ 02255 /* 128 word machine characteristics table. */ 02256 02257 union target_machine_entry { 02258 struct { 02259 02260 /* Numeric machine characteristics. */ 02261 02262 /* The SOLARIS version of "mcpmt" is 12 characters to account for an 8 */ 02263 /* character target machine name plus the null, rounded to the next word. */ 02264 /* See also the ifdef's at the end of the table for the array overlay. */ 02265 02266 # if defined(_GETPMC_AVAILABLE) 02267 long mcpmt; 02268 # elif defined(_HOST_OS_SOLARIS) || (defined(_HOST_OS_IRIX) || defined(_HOST_OS_LINUX)) 02269 char mcpmt[12]; 02270 # endif 02271 long mcbank; 02272 long mcncpu; 02273 long mcibsz; 02274 long mcmsz; 02275 long mcmspd; 02276 long mcclk; 02277 long mcncl; 02278 long mcbbsy; 02279 long mc_serial; /* System Serial Number */ 02280 long mc_rls; /* Release level * 1000 */ 02281 long mc_c_option_rev; /* hardware C REV number */ 02282 long mc_i_option_rev; /* hardware I REV number */ 02283 long mc_r_option_rev; /* hardware R REV number */ 02284 long mc_m_option_rev_0; /* hardware M_rev number 0 */ 02285 long mc_m_option_rev_1; /* hardware M_rev number 1 */ 02286 long mc_m_option_rev_2; /* hardware M_rev number 2 */ 02287 long mc_m_option_rev_3; /* hardware M_rev number 3 */ 02288 long mc_subtype; /* Machine sub-type name, first word */ 02289 long mc_subtype1; /* Machine sub-type name, second word */ 02290 02291 long numeric_unused[44]; 02292 02293 /* Logical machine characteristics. */ 02294 Ulong mcema; 02295 Ulong mccigs; 02296 Ulong mcvpop; 02297 Ulong mcpc; 02298 Ulong mcrdvl; 02299 Ulong mcvrcr; 02300 Ulong mcavl; 02301 Ulong mchpm; 02302 Ulong mcbdm; 02303 Ulong mcstr; 02304 Ulong mccori; 02305 Ulong mcaddr32; 02306 Ulong mcxea; 02307 Ulong mcbmm; 02308 Ulong mcavpop; 02309 Ulong mcfullsect; 02310 Ulong mcieee; 02311 Ulong mccmrreq; 02312 Ulong mccache; 02313 Ulong logical_unused[45]; 02314 } fld; 02315 02316 # if defined(_GETPMC_AVAILABLE) 02317 long mc_tbl[128]; 02318 # elif defined(_HOST_OS_SOLARIS) || (defined(_HOST_OS_IRIX) || defined(_HOST_OS_LINUX)) 02319 long mc_tbl[130]; 02320 # endif 02321 }; 02322 02323 02324 /******************************************************************************\ 02325 |* cif_usage_code_values and cif_usage_code_type must be defined here rather*| 02326 |* than in the more appropriate fecif.h because procedures outside of *| 02327 |* fecif.c call cif_usage_rec to output a Usage record. *| 02328 |* CIF_No_Usage_Rec should always be last. *| 02329 \******************************************************************************/ 02330 02331 enum cif_usage_code_values {CIF_Symbol_Declaration, 02332 CIF_Symbol_Reference, 02333 CIF_Symbol_Modification, 02334 CIF_Symbol_Is_Actual_Arg, 02335 CIF_Label_Referenced_In_ASSIGN, 02336 CIF_Label_Referenced_As_Branch_Target, 02337 CIF_Label_Referenced_As_Format, 02338 CIF_Do_Loop_Label, 02339 CIF_Derived_Type_Name_Definition, 02340 CIF_Derived_Type_Name_Reference, 02341 CIF_Construct_Name_Reference, 02342 CIF_Symbol_Is_Dummy_Arg, 02343 CIF_Symbol_Defined_Opr_Actual_Arg, 02344 CIF_Symbol_Is_Hidden_Used_Module, 02345 CIF_No_Usage_Rec 02346 }; 02347 02348 02349 enum cif_directive_code_values {CIF_Master, 02350 CIF_End_Master, 02351 CIF_Barrier, 02352 CIF_No_Barrier, 02353 CIF_Critical, 02354 CIF_End_Critical, 02355 CIF_Shared_Io, 02356 CIF_Atomic_Update, 02357 CIF_List, 02358 CIF_Nolist, 02359 CIF_Eject 02360 }; 02361 02362 02363 /******************************************************************************\ 02364 |* cif_stmt_values and cif_stmt_type must be defined here rather than in *| 02365 |* the more appropriate fecif.h because various parsing procedures must call*| 02366 |* cif_stmt_type_rec when the exact type of the statement is known (for *| 02367 |* example, there are several types of DO statements so only the DO stmt *| 02368 |* parsing code can accurately call cif_stmt_type_rec). *| 02369 |* *| 02370 |* NOTE: This enum corresponds to an enum in cif.h Do not change this *| 02371 |* without making sure that cif changes also. *| 02372 |* *| 02373 \******************************************************************************/ 02374 02375 enum cif_stmt_values 02376 {CIF_Not_Exact = -2, 02377 02378 CIF_Stmt_Type_Error = -1, 02379 02380 CIF_Allocatable_Stmt /* CIF_F90_TP_ALLOCATABLE */ = 0, 02381 CIF_Allocate_Stmt, /* CIF_F90_TP_ALLOCATE */ 02382 CIF_Assign_Stmt, /* CIF_F90_TP_ASSIGN */ 02383 CIF_Assignment_Stmt, /* CIF_F90_TP_ASSIGNMENT */ 02384 CIF_Backspace_Stmt, /* CIF_F90_TP_BACKSPACE */ 02385 CIF_Block_Data_Stmt /* CIF_F90_TP_BDATA */ = 5, 02386 02387 CIF_Call_Stmt /* CIF_F90_TP_CALL */ = 7, 02388 CIF_Case_Stmt, /* CIF_F90_TP_CASE */ 02389 CIF_Close_Stmt, /* CIF_F90_TP_CLOSE */ 02390 CIF_Common_Stmt /* CIF_F90_TP_COMMON */ = 10, 02391 CIF_Contains_Stmt, /* CIF_F90_TP_CONTAINS */ 02392 CIF_Continue_Stmt, /* CIF_F90_TP_CONTINUE */ 02393 CIF_Cycle_Stmt, /* CIF_F90_TP_CYCLE */ 02394 CIF_Data_Stmt, /* CIF_F90_TP_DATA */ 02395 CIF_Deallocate_Stmt /* CIF_F90_TP_DEALLOCATE */ = 15, 02396 CIF_Decode_Stmt, /* CIF_F90_TP_DECODE */ 02397 CIF_Case_Default_Stmt, /* CIF_F90_TP_CASE_DEFAULT */ 02398 CIF_Type_Stmt, /* CIF_F90_TP_TYPE */ 02399 CIF_Dimension_Stmt, /* CIF_F90_TP_DIMENSION */ 02400 CIF_Directive_Stmt /* CIF_F90_TP_DIRECTIVE */ = 20, 02401 02402 CIF_Else_Stmt /* CIF_F90_TP_ELSE */ = 23, 02403 CIF_Else_If_Stmt, /* CIF_F90_TP_ELSEIF */ 02404 CIF_Elsewhere_Stmt, /* CIF_F90_TP_ELSEWHERE */ 02405 CIF_Encode_Stmt /* CIF_F90_TP_ENCODE */ = 26, 02406 02407 CIF_Endfile_Stmt /* CIF_F90_TP_ENDFILE */ = 28, 02408 CIF_Entry_Stmt, /* CIF_F90_TP_ENTRY */ 02409 CIF_Equivalence_Stmt /* CIF_F90_TP_EQUIVALENCE */ = 30, 02410 CIF_Exit_Stmt, /* CIF_F90_TP_EXIT */ 02411 CIF_External_Stmt, /* CIF_F90_TP_EXTERNAL */ 02412 CIF_Format_Stmt, /* CIF_F90_TP_FORMAT */ 02413 CIF_Function_Stmt /* CIF_F90_TP_FUNCTION */ = 34, 02414 02415 CIF_If_Construct /* CIF_F90_TP_IF */ = 37, 02416 CIF_Implicit_Stmt, /* CIF_F90_TP_IMPLICIT */ 02417 CIF_Implicit_None_Stmt, /* CIF_F90_TP_IMPLICIT_NONE*/ 02418 CIF_Inquire_Stmt /* CIF_F90_TP_INQUIRE */ = 40, 02419 02420 CIF_Intrinsic_Stmt /* CIF_F90_TP_INTRINSIC */ = 43, 02421 CIF_Module_Stmt, /* CIF_F90_TP_MODULE */ 02422 CIF_Module_Procedure_Stmt /* CIF_F90_TP_MODULE_PROC */ = 45, 02423 CIF_Namelist_Stmt, /* CIF_F90_TP_NAMELIST */ 02424 CIF_Nullify_Stmt, /* CIF_F90_TP_NULLIFY */ 02425 CIF_Open_Stmt, /* CIF_F90_TP_OPEN */ 02426 CIF_Optional_Stmt, /* CIF_F90_TP_OPTIONAL */ 02427 CIF_Parameter_Stmt /* CIF_F90_TP_PARAMETER */ = 50, 02428 CIF_Pause_Stmt, /* CIF_F90_TP_PAUSE */ 02429 CIF_Pointer_Stmt, /* CIF_F90_TP_POINTER */ 02430 CIF_Print_Stmt, /* CIF_F90_TP_PRINT */ 02431 CIF_Private_Stmt, /* CIF_F90_TP_PRIVATE */ 02432 CIF_Program_Stmt, /* CIF_F90_TP_PROGRAM */ 02433 CIF_Public_Stmt /* CIF_F90_TP_PUBLIC */ = 56, 02434 02435 CIF_Read_Stmt /* CIF_F90_TP_READ */ = 58, 02436 CIF_Return_Stmt, /* CIF_F90_TP_RETURN */ 02437 CIF_Rewind_Stmt /* CIF_F90_TP_REWIND */ = 60, 02438 CIF_Save_Stmt, /* CIF_F90_TP_SAVE */ 02439 CIF_Select_Case_Stmt, /* CIF_F90_TP_SELECT_CASE */ 02440 CIF_Sequence_Stmt, /* CIF_F90_TP_SEQUENCE */ 02441 CIF_Statement_Function_Stmt, /* CIF_F90_TP_STMTFUNC*/ 02442 CIF_Stop_Stmt /* CIF_F90_TP_STOP */ = 65, 02443 CIF_Subroutine_Stmt, /* CIF_F90_TP_SUBROUTINE */ 02444 CIF_Target_Stmt, /* CIF_F90_TP_TARGET */ 02445 CIF_Type_Declaration_Stmt, /* CIF_F90_TP_TYPE_DECL*/ 02446 CIF_Use_Stmt, /* CIF_F90_TP_USE */ 02447 CIF_Where_Stmt /* CIF_F90_TP_WHERE */ = 70, 02448 CIF_Where_Construct, /* CIF_F90_TP_WHERE_CONST */ 02449 CIF_Write_Stmt, /* CIF_F90_TP_WRITE */ 02450 CIF_Buffer_In_Stmt, /* CIF_F90_TP_BUFFER_IN */ 02451 CIF_Buffer_Out_Stmt /* CIF_F90_TP_BUFFER_OUT */ = 74, 02452 02453 CIF_End_Do_Stmt /* CIF_F90_TP_END_DO */ = 77, 02454 CIF_End_If_Stmt, /* CIF_F90_TP_END_IF */ 02455 CIF_Include_Stmt, /* CIF_F90_TP_INCLUDE */ 02456 CIF_CDIR_Stmt /* CIF_F90_TP_CDIR */ = 80, 02457 CIF_Array_Assignment_Stmt, /* CIF_F90_TP_ARRAY_ASSIGNMENT */ 02458 CIF_Pointer_Assigment_Stmt,/* CIF_F90_TP_POINTER_ASG */ 02459 02460 CIF_Do_Labeled_Infinite_Stmt 02461 /* CIF_F90_TP_LABELED_DO_INFINITE */ = 100, 02462 CIF_Do_Unlabeled_Infinite_Stmt, 02463 /* CIF_F90_TP_LABELED_DO_INFINITE */ 02464 CIF_Do_Labeled_Iterative_Stmt, 02465 /* CIF_F90_TP_LABELED_DO_ITERATIVE */ 02466 CIF_Do_Unlabeled_Iterative_Stmt, 02467 /* CIF_F90_TP_UNLABELED_DO_ITERATIVE */ 02468 CIF_Do_Labeled_While_Stmt, 02469 /* CIF_F90_TP_LABELED_DO_WHILE */ 02470 CIF_Do_Unlabeled_While_Stmt 02471 /* CIF_F90_TP_UNLABELED_DO_WHILE */ = 105, 02472 CIF_End_Block_Data_Stmt,/* CIF_F90_TP_END_BDATA */ 02473 CIF_End_Function_Stmt, /* CIF_F90_TP_END_FUNCTION */ 02474 CIF_End_Interface_Stmt, /* CIF_F90_TP_END_INTERFACE*/ 02475 CIF_End_Module_Stmt, /* CIF_F90_TP_END_MODULE */ 02476 CIF_End_Program_Stmt /* CIF_F90_TP_END_PROGRAM */ = 110, 02477 CIF_End_Select_Stmt, /* CIF_F90_TP_END_SELECT */ 02478 CIF_End_Subroutine_Stmt,/* CIF_F90_TP_END_SUBROUTINE */ 02479 CIF_End_Type_Stmt, /* CIF_F90_TP_END_TYPE */ 02480 CIF_End_Where_Stmt, /* CIF_F90_TP_END_WHERE */ 02481 CIF_Go_To_Unconditional_Stmt /* CIF_F90_TP_GOTO */ = 115, 02482 CIF_Go_To_Assigned_Stmt,/* CIF_F90_TP_GOTO_ASSIGNED*/ 02483 CIF_Go_To_Computed_Stmt,/* CIF_F90_TP_GOTO_COMPUTED*/ 02484 CIF_If_Logical_Stmt, /* CIF_F90_TP_IF_LOGICAL */ 02485 CIF_If_Arithmetic_Stmt, /* CIF_F90_TP_IF_ARITHMETIC*/ 02486 CIF_If_Indirect_Logical_Stmt 02487 /* CIF_F90_TP_IF_IND_LOG */ = 120, 02488 CIF_If_Two_Branch_Arithmetic_Stmt, 02489 /* CIF_F90_TP_IF_TWO_BRANCH_ARITHMETIC */ 02490 CIF_Intent_In_Stmt, /* CIF_F90_TP_INTENT_IN */ 02491 CIF_Intent_Out_Stmt, /* CIF_F90_TP_INTENT_OUT */ 02492 CIF_Intent_Inout_Stmt, /* CIF_F90_TP_INTENT_INOUT */ 02493 CIF_Interface_Explicit_Stmt /* CIF_F90_TP_INTERFACE */ = 125, 02494 CIF_Interface_Generic_Stmt, 02495 /* CIF_F90_TP_INTERFACE_GENERIC */ 02496 CIF_Interface_Operator_Stmt, 02497 /* CIF_F90_TP_INTERFACE_OPERATOR */ 02498 CIF_Interface_Assignment_Stmt, 02499 /* CIF_F90_TP_INTERFACE_ASSIGNMENT*/ 02500 CIF_Task_Common_Stmt, /* CIF_F90_TP_TASK_COMMON */ 02501 CIF_Automatic_Stmt /* CIF_F90_TP_AUTOMATIC */ = 130, 02502 CIF_Elemental_Stmt, /* CIF_F90_TP_ELEMENTAL */ 02503 CIF_Pure_Stmt, /* CIF_F90_TP_PURE */ 02504 CIF_Forall_Stmt, /* CIF_F90_TP_FORALL */ 02505 CIF_Forall_Construct, /* CIF_F90_TP_FORALL_CONSTRUCT */ 02506 CIF_Max, /* CIF_F90_TP_MAX */ 02507 CIF_End_Forall_Stmt /* CIF_F90_TP_END_FORALL */ 02508 }; 02509 02510 typedef enum cif_directive_code_values cif_directive_code_type; 02511 typedef enum cif_stmt_values cif_stmt_type; 02512 typedef enum cif_usage_code_values cif_usage_code_type; 02513 02514 02515 /*******************************************\ 02516 |* globally accessible function prototypes *| 02517 \*******************************************/ 02518 02519 extern void unknown_intrinsic (opnd_type *, expr_arg_type *, int *); 02520 extern void abs_intrinsic (opnd_type *, expr_arg_type *, int *); 02521 extern void sin_intrinsic (opnd_type *, expr_arg_type *, int *); 02522 extern void atan2_intrinsic (opnd_type *, expr_arg_type *, int *); 02523 extern void exit_intrinsic (opnd_type *, expr_arg_type *, int *); 02524 extern void aimag_intrinsic (opnd_type *, expr_arg_type *, int *); 02525 extern void int_intrinsic (opnd_type *, expr_arg_type *, int *); 02526 extern void ilen_intrinsic (opnd_type *, expr_arg_type *, int *); 02527 extern void iand_intrinsic (opnd_type *, expr_arg_type *, int *); 02528 extern void mod_intrinsic (opnd_type *, expr_arg_type *, int *); 02529 extern void anint_intrinsic (opnd_type *, expr_arg_type *, int *); 02530 extern void nint_intrinsic (opnd_type *, expr_arg_type *, int *); 02531 extern void sign_intrinsic (opnd_type *, expr_arg_type *, int *); 02532 extern void modulo_intrinsic (opnd_type *, expr_arg_type *, int *); 02533 extern void shift_intrinsic (opnd_type *, expr_arg_type *, int *); 02534 extern void leadz_intrinsic (opnd_type *, expr_arg_type *, int *); 02535 extern void not_intrinsic (opnd_type *, expr_arg_type *, int *); 02536 extern void aint_intrinsic (opnd_type *, expr_arg_type *, int *); 02537 extern void dim_intrinsic (opnd_type *, expr_arg_type *, int *); 02538 extern void max_intrinsic (opnd_type *, expr_arg_type *, int *); 02539 extern void ranget_intrinsic (opnd_type *, expr_arg_type *, int *); 02540 extern void ranf_intrinsic (opnd_type *, expr_arg_type *, int *); 02541 extern void real_intrinsic (opnd_type *, expr_arg_type *, int *); 02542 extern void mask_intrinsic (opnd_type *, expr_arg_type *, int *); 02543 extern void conjg_intrinsic (opnd_type *, expr_arg_type *, int *); 02544 extern void dprod_intrinsic (opnd_type *, expr_arg_type *, int *); 02545 extern void i24mult_intrinsic (opnd_type *, expr_arg_type *, int *); 02546 extern void length_intrinsic (opnd_type *, expr_arg_type *, int *); 02547 extern void getpos_intrinsic (opnd_type *, expr_arg_type *, int *); 02548 extern void unit_intrinsic (opnd_type *, expr_arg_type *, int *); 02549 extern void cmplx_intrinsic (opnd_type *, expr_arg_type *, int *); 02550 extern void len_intrinsic (opnd_type *, expr_arg_type *, int *); 02551 extern void ichar_intrinsic (opnd_type *, expr_arg_type *, int *); 02552 extern void idate_intrinsic (opnd_type *, expr_arg_type *, int *); 02553 extern void char_intrinsic (opnd_type *, expr_arg_type *, int *); 02554 extern void lint_intrinsic (opnd_type *, expr_arg_type *, int *); 02555 extern void index_intrinsic (opnd_type *, expr_arg_type *, int *); 02556 extern void lge_intrinsic (opnd_type *, expr_arg_type *, int *); 02557 extern void numarg_intrinsic (opnd_type *, expr_arg_type *, int *); 02558 extern void fcd_intrinsic (opnd_type *, expr_arg_type *, int *); 02559 extern void loc_intrinsic (opnd_type *, expr_arg_type *, int *); 02560 extern void clock_intrinsic (opnd_type *, expr_arg_type *, int *); 02561 extern void rtc_intrinsic (opnd_type *, expr_arg_type *, int *); 02562 extern void my_pe_intrinsic (opnd_type *, expr_arg_type *, int *); 02563 extern void cvmgp_intrinsic (opnd_type *, expr_arg_type *, int *); 02564 extern void cvmgt_intrinsic (opnd_type *, expr_arg_type *, int *); 02565 extern void csmg_intrinsic (opnd_type *, expr_arg_type *, int *); 02566 extern void mergee_intrinsic (opnd_type *, expr_arg_type *, int *); 02567 extern void adjustl_intrinsic (opnd_type *, expr_arg_type *, int *); 02568 extern void ceiling_intrinsic (opnd_type *, expr_arg_type *, int *); 02569 extern void digits_intrinsic (opnd_type *, expr_arg_type *, int *); 02570 extern void epsilon_intrinsic (opnd_type *, expr_arg_type *, int *); 02571 extern void exponent_intrinsic(opnd_type *, expr_arg_type *, int *); 02572 extern void floor_intrinsic (opnd_type *, expr_arg_type *, int *); 02573 extern void fraction_intrinsic(opnd_type *, expr_arg_type *, int *); 02574 extern void huge_intrinsic (opnd_type *, expr_arg_type *, int *); 02575 extern void ibits_intrinsic (opnd_type *, expr_arg_type *, int *); 02576 extern void ibset_intrinsic (opnd_type *, expr_arg_type *, int *); 02577 extern void btest_intrinsic (opnd_type *, expr_arg_type *, int *); 02578 extern void ishft_intrinsic (opnd_type *, expr_arg_type *, int *); 02579 extern void ishftc_intrinsic (opnd_type *, expr_arg_type *, int *); 02580 extern void mvbits_intrinsic (opnd_type *, expr_arg_type *, int *); 02581 extern void all_intrinsic (opnd_type *, expr_arg_type *, int *); 02582 extern void tiny_intrinsic (opnd_type *, expr_arg_type *, int *); 02583 extern void spacing_intrinsic (opnd_type *, expr_arg_type *, int *); 02584 extern void cshift_intrinsic (opnd_type *, expr_arg_type *, int *); 02585 extern void eoshift_intrinsic (opnd_type *, expr_arg_type *, int *); 02586 extern void minloc_intrinsic (opnd_type *, expr_arg_type *, int *); 02587 extern void minval_intrinsic (opnd_type *, expr_arg_type *, int *); 02588 extern void matmul_intrinsic (opnd_type *, expr_arg_type *, int *); 02589 extern void pack_intrinsic (opnd_type *, expr_arg_type *, int *); 02590 extern void unpack_intrinsic (opnd_type *, expr_arg_type *, int *); 02591 extern void trim_intrinsic (opnd_type *, expr_arg_type *, int *); 02592 extern void spread_intrinsic (opnd_type *, expr_arg_type *, int *); 02593 extern void repeat_intrinsic (opnd_type *, expr_arg_type *, int *); 02594 extern void size_intrinsic (opnd_type *, expr_arg_type *, int *); 02595 extern void sizeof_intrinsic (opnd_type *, expr_arg_type *, int *); 02596 extern void lbound_intrinsic (opnd_type *, expr_arg_type *, int *); 02597 extern void ubound_intrinsic (opnd_type *, expr_arg_type *, int *); 02598 extern void shape_intrinsic (opnd_type *, expr_arg_type *, int *); 02599 extern void reshape_intrinsic (opnd_type *, expr_arg_type *, int *); 02600 extern void radix_intrinsic (opnd_type *, expr_arg_type *, int *); 02601 extern void range_intrinsic (opnd_type *, expr_arg_type *, int *); 02602 extern void kind_intrinsic (opnd_type *, expr_arg_type *, int *); 02603 extern void present_intrinsic (opnd_type *, expr_arg_type *, int *); 02604 extern void logical_intrinsic (opnd_type *, expr_arg_type *, int *); 02605 extern void nearest_intrinsic (opnd_type *, expr_arg_type *, int *); 02606 extern void scale_intrinsic (opnd_type *, expr_arg_type *, int *); 02607 extern void dshiftl_intrinsic (opnd_type *, expr_arg_type *, int *); 02608 extern void mmx_intrinsic (opnd_type *, expr_arg_type *, int *); 02609 extern void mldmx_intrinsic (opnd_type *, expr_arg_type *, int *); 02610 extern void mld_intrinsic (opnd_type *, expr_arg_type *, int *); 02611 extern void mul_intrinsic (opnd_type *, expr_arg_type *, int *); 02612 extern void mclr_intrinsic (opnd_type *, expr_arg_type *, int *); 02613 extern void readsm_intrinsic (opnd_type *, expr_arg_type *, int *); 02614 extern void ieee_finite_intrinsic (opnd_type *, expr_arg_type *, int *); 02615 extern void ieee_real_intrinsic (opnd_type *, expr_arg_type *, int *); 02616 extern void transfer_intrinsic (opnd_type *, expr_arg_type *, int *); 02617 extern void transpose_intrinsic (opnd_type *, expr_arg_type *, int *); 02618 extern void minexponent_intrinsic (opnd_type *, expr_arg_type *, int *); 02619 extern void maxexponent_intrinsic (opnd_type *, expr_arg_type *, int *); 02620 extern void precision_intrinsic (opnd_type *, expr_arg_type *, int *); 02621 extern void bit_size_intrinsic (opnd_type *, expr_arg_type *, int *); 02622 extern void rrspacing_intrinsic (opnd_type *, expr_arg_type *, int *); 02623 extern void set_exponent_intrinsic (opnd_type *, expr_arg_type *, int *); 02624 extern void dot_product_intrinsic (opnd_type *, expr_arg_type *, int *); 02625 extern void allocated_intrinsic (opnd_type *, expr_arg_type *, int *); 02626 extern void associated_intrinsic (opnd_type *, expr_arg_type *, int *); 02627 extern void len_trim_intrinsic (opnd_type *, expr_arg_type *, int *); 02628 extern void random_number_intrinsic(opnd_type *, expr_arg_type *, int *); 02629 extern void random_seed_intrinsic (opnd_type *, expr_arg_type *, int *); 02630 extern void fetch_and_add_intrinsic(opnd_type *, expr_arg_type *, int *); 02631 extern void lock_release_intrinsic (opnd_type *, expr_arg_type *, int *); 02632 extern void synchronize_intrinsic (opnd_type *, expr_arg_type *, int *); 02633 extern void free_intrinsic (opnd_type *, expr_arg_type *, int *); 02634 extern void null_intrinsic (opnd_type *, expr_arg_type *, int *); 02635 extern void malloc_intrinsic (opnd_type *, expr_arg_type *, int *); 02636 extern void num_images_intrinsic (opnd_type *, expr_arg_type *, int *); 02637 extern void system_clock_intrinsic (opnd_type *, expr_arg_type *, int *); 02638 extern void dsm_numthreads_intrinsic 02639 (opnd_type *, expr_arg_type *, int *); 02640 extern void omp_get_max_threads_intrinsic 02641 (opnd_type *, expr_arg_type *, int *); 02642 extern void omp_set_lock_intrinsic 02643 (opnd_type *, expr_arg_type *, int *); 02644 extern void compare_and_swap_intrinsic 02645 (opnd_type *, expr_arg_type *, int *); 02646 extern void selected_int_kind_intrinsic 02647 (opnd_type *, expr_arg_type *, int *); 02648 extern void selected_real_kind_intrinsic 02649 (opnd_type *, expr_arg_type *, int *); 02650 extern void memory_barrier_intrinsic 02651 (opnd_type *, expr_arg_type *, int *); 02652 extern void get_ieee_status_intrinsic 02653 (opnd_type *, expr_arg_type *, int *); 02654 extern void set_ieee_exception_intrinsic 02655 (opnd_type *, expr_arg_type *, int *); 02656 extern void test_ieee_interrupt_intrinsic 02657 (opnd_type *, expr_arg_type *, int *); 02658 extern void remote_write_barrier_intrinsic 02659 (opnd_type *, expr_arg_type *, int *); 02660 extern void write_memory_barrier_intrinsic 02661 (opnd_type *, expr_arg_type *, int *); 02662 02663 extern void check_dependence(boolean *dependant, 02664 opnd_type item, 02665 opnd_type exp); 02666 extern void array_bounds_resolution(int, boolean *); 02667 extern void array_dim_resolution(int, boolean); 02668 extern void pe_array_dim_resolution(int); 02669 extern int bound_semantics(int, boolean); 02670 extern void bounds_cdir_handler(int); 02671 extern int cast_typeless_constant(int, int, int, int); 02672 extern void cast_to_type_idx(opnd_type *, expr_arg_type *, int); 02673 extern void char_len_resolution(int, boolean); 02674 extern void char_bounds_resolution(int, boolean *); 02675 extern boolean check_asg_semantics(int, int, int, int); 02676 extern boolean check_substring_bounds(int); 02677 extern boolean check_array_bounds(int); 02678 extern void cif_begin_scope_rec(void); 02679 extern void cif_call_site_rec(int, int); 02680 extern void cif_cont_line_rec(int, int); 02681 extern void cif_copy_temp_to_actual_CIF(void); 02682 extern void cif_directive_rec(cif_directive_code_type, int, int); 02683 extern void cif_enable_disable_rec(void); 02684 extern void cif_end_scope_rec(void); 02685 extern void cif_end_unit_rec(char *); 02686 extern void cif_fake_a_unit (void); 02687 extern int cif_file_name_rec(char *, char *); 02688 extern void cif_include_rec(int, int, int); 02689 extern void cif_interface_block_rec(void); 02690 extern void cif_label_rec(int); 02691 extern void cif_loop_def_rec(void); 02692 extern void cif_machine_characteristics_rec(void); 02693 extern void cif_message_rec(int, int, int, msg_severities_type, 02694 char*, long, long, long, long, char*, int); 02695 extern void cif_misc_compiler_opts_rec(void); 02696 extern void cif_named_constant_rec(int, int, int); 02697 extern void cif_optimization_opts_rec(void); 02698 extern void cif_prog_unit_init(void); 02699 extern int cif_rename_rec(int, int, int, int); 02700 extern void cif_sb_usage_rec(int, int, int, cif_usage_code_type); 02701 extern void cif_scope_info_rec(void); 02702 extern void cif_send_attr(int, int); 02703 extern void cif_send_sytb(void); 02704 extern void cif_source_file_rec(int, src_form_type); 02705 extern void cif_stmt_type_rec(boolean, cif_stmt_type, int); 02706 extern void cif_summary_rec(char*, char*, char*, float, long, long); 02707 extern void cif_unit_rec(void); 02708 extern void cif_usage_rec(int, fld_type, int, int, int); 02709 extern void cif_use_module_rec(int, int, boolean); 02710 extern void clean_up_module_files(void); 02711 extern void close_cif(void); 02712 extern void collapse_interface_blk(int); 02713 # if defined(_HOST32) && defined(_TARGET64) 02714 extern boolean compare_cn_and_value(int, long long, int); 02715 #else 02716 extern boolean compare_cn_and_value(int, long, int); 02717 #endif 02718 extern boolean compare_opnds(opnd_type *, opnd_type *); 02719 extern char *convert_cval_to_string(long64 *, int, char *); 02720 extern char *convert_to_string(long_type *, int, char *); 02721 extern void copy_subtree(opnd_type *, opnd_type *); 02722 extern int copy_to_gl_subtree(int, fld_type); 02723 extern int copy_from_gl_subtree(int, fld_type); 02724 extern void copy_entry_exit_sh_list(int, int, int *, int *); 02725 extern int create_bd_ntry_for_const(expr_arg_type *,int,int); 02726 extern void create_mod_info_tbl(void); 02727 extern void create_mod_info_file(void); 02728 extern int cvrt_str_to_cn(char *, int); 02729 extern void cvrt_to_pdg(char *); 02730 extern void decl_semantics(void); 02731 extern void exit_compiler(int); 02732 extern boolean expr_is_symbolic_constant(opnd_type *); 02733 extern boolean expr_semantics(opnd_type *, expr_arg_type *); 02734 extern boolean expr_sem(opnd_type *, expr_arg_type *); 02735 extern boolean find_attr_in_il(int, int, opnd_type *); 02736 extern boolean find_attr_in_ir(int, int, opnd_type *); 02737 extern boolean find_prog_unit_tbl(int); 02738 extern void fixed_get_char(void); 02739 extern void fixed_get_char_literal(void); 02740 extern boolean fold_aggragate_expression(opnd_type *, expr_arg_type *, 02741 boolean); 02742 extern boolean fold_relationals(int, int, operator_type); 02743 extern boolean folder_driver(char *, int, char *, int, long_type *, 02744 int *, int, int, int, int, ...); 02745 extern void free_tables(void); 02746 extern void free_get_char(void); 02747 extern void free_get_char_literal(void); 02748 extern void free_ir_list(int); 02749 extern void free_ir_stream(int); 02750 extern void free_stmt_expansion_opr(int); 02751 extern boolean fnd_semantic_err(obj_type, int, int, int, boolean); 02752 extern void gen_if_stmt(opnd_type *, int, int, int, int, int, int); 02753 extern int gen_il(int, boolean, int, int, ...); 02754 extern int gen_ir(fld_type, int, operator_type, int, 02755 int, int, fld_type, int); 02756 02757 extern void gen_rbounds_condition(opnd_type *, opnd_type *, 02758 opnd_type *, opnd_type *, 02759 opnd_type *, opnd_type *, 02760 int, int); 02761 extern void gen_runtime_checks(opnd_type *); 02762 extern void gen_runtime_ptr_chk(opnd_type *); 02763 extern void gen_sh(sh_position_type, stmt_type_type, int, 02764 int, boolean, boolean, boolean); 02765 extern void gen_gl_sh(sh_position_type, stmt_type_type, int, 02766 int, boolean, boolean, boolean); 02767 extern void gen_internal_call_stmt(char *, opnd_type *, 02768 sh_position_type); 02769 extern void gen_lb_array_ref(opnd_type *, int); 02770 extern void gen_opnd(opnd_type *, int, fld_type, int, int); 02771 extern int get_next_array_expr_element(opnd_type *, long64 *); 02772 extern char *get_src_path_name(void); 02773 extern int gen_stmt_expansion_opr(int, int); 02774 extern boolean get_temp_file(char *, FILE **, char *); 02775 extern void gen_temp_init(int, int); 02776 extern int gen_initialized_tmp(int, int, int); 02777 extern boolean gen_whole_substring (opnd_type *, int); 02778 extern char *global_to_local_file(int); 02779 extern int global_to_local_line_number(int); 02780 extern char *global_to_local_path(int); 02781 extern int global_to_file_line_number(int); 02782 extern void init_cif(char *, char *); 02783 extern void init_directive(int); 02784 extern void inline_processing(int); 02785 extern void insert_init_stmt_for_tmp(int); 02786 extern void insert_sh_chain(int, int, sh_position_type); 02787 extern void insert_sh_chain_after_entries(int, int); 02788 extern void insert_sh_chain_before(int); 02789 extern void interface_semantics_pass_driver(void); 02790 extern void issue_deferred_msgs (void); 02791 extern void issue_undefined_type_msg (int, int, int); 02792 extern int main(int, char *[]); 02793 extern void make_io_type_code(int, long_type *); 02794 extern int make_in_parent_string(int, int, int, int *); 02795 extern void mark_attr_defined(opnd_type *); 02796 extern boolean needs_bounds_check(int); 02797 extern void ntr_msg_queue(int, int, msg_severities_type, int, 02798 char *, long, int); 02799 extern void output_mod_info_file(void); 02800 extern void parse_prog_unit(void); 02801 extern void pdgcs_conversion(void); 02802 extern void PRINTMSG(int, int, msg_severities_type, int, ...); 02803 extern void print_const_f(FILE *, int); 02804 extern void print_err_line(int, int); 02805 extern void print_scp_to_fortran(int, int, int, FILE *); 02806 extern char *print_type_f(int); 02807 extern int put_const_in_tbl(long); 02808 extern void remove_sh(int); 02809 extern void reset_lex(int, int); 02810 extern void reset_src_input(int, int); 02811 extern void scan_for_ptr_chk(opnd_type *); 02812 extern char scan_thru_close_paren(int, int, int); 02813 extern void semantics_pass_driver(void); 02814 extern void set_related_gl_source_lines(int); 02815 extern int set_up_logical_constant(long_type *, int, int, boolean); 02816 extern void set_up_which_entry_tmp(void); 02817 extern boolean set_stmt_type_known(void); 02818 extern long64 sm_unit_in_bits(int); 02819 extern void stmt_expansion_control_start(void); 02820 extern void stmt_expansion_control_end(opnd_type *); 02821 extern void terminate_PDGCS(void); 02822 extern void final_src_input(void); 02823 extern FILE *init_debug_file(void); 02824 extern boolean omp_extension_prefix(int); 02825 extern void print_al(int); 02826 extern void print_al_list(FILE *,int); 02827 extern void print_at(int); 02828 extern void print_at_all(int); 02829 extern void print_bd(int); 02830 extern void print_blk(int); 02831 extern void print_cn(int); 02832 extern void print_defines(void); 02833 extern void print_expanded_stmt(void); 02834 extern void print_eq(int); 02835 extern void print_fp(int); 02836 extern void print_ga(int); 02837 extern void print_gb(int); 02838 extern void print_gl(int); 02839 extern void print_gn(int); 02840 extern void print_gt(int); 02841 extern void print_hn(int); 02842 extern void print_il(int); 02843 extern void print_ir(int); 02844 extern void print_ln(int); 02845 extern void print_lnr(int, int); 02846 extern void print_mem_usage_report(char *, int, int); 02847 extern void print_ml(int); 02848 extern void print_mf(int); 02849 extern void print_ro(int); 02850 extern void print_sb(int); 02851 extern void print_scp(int, boolean); 02852 extern void print_sn(int); 02853 extern void print_sn_list(int); 02854 extern void print_src_stk_entry(int); 02855 extern void print_src_input_tbls(void); 02856 extern void print_typ(int); 02857 extern void print_blk_tbl(void); 02858 extern void print_bd_tbl(void); 02859 extern void print_cmd_tbl(void); 02860 extern void print_compressed_sytb(int, int); 02861 extern void print_cn_tbl(void); 02862 extern void print_eq_tbl(void); 02863 extern void print_fp_includes(void); 02864 extern void print_fp_tbl(void); 02865 extern void print_ga_tbl(void); 02866 extern void print_gb_tbl(void); 02867 extern void print_gl_tbl(void); 02868 extern void print_gn_tbl(void); 02869 extern void print_gt_tbl(void); 02870 extern void print_hn_tbl(void); 02871 extern void print_ir_tbl(void); 02872 extern void print_ln_tbl(void); 02873 extern void print_ml_tbl(void); 02874 extern void print_ro_tbl(int); 02875 extern void print_sb_tbl(void); 02876 extern void print_scp_tbl(void); 02877 extern void print_sh_tbl(boolean); 02878 extern void print_sn_tbl(void); 02879 extern void print_typ_tbl(void); 02880 extern void print_sytb(int, boolean, boolean); 02881 extern void print_attr_by_name(void); 02882 extern void print_ln_by_name(void); 02883 extern void print_sb_by_name(void); 02884 extern void dump_func_trace_info(trace_type, char *, char *); 02885 extern void dump_mem_trace_info(trace_type, char *, void *, 02886 void *, long, int); 02887 02888 /*****************************************************\ 02889 |* globally accessible objects in ALPHABETICAL ORDER *| 02890 \*****************************************************/ 02891 02892 extern ac_cmd_line_flags_type ac_cmd_line_flags; 02893 extern char assembly_file[]; 02894 extern char assembly_listing_file[]; 02895 extern boolean assembly_output; 02896 extern char *basic_type_str[]; 02897 extern char bin_file[]; 02898 extern boolean binary_output; 02899 extern long ccg_dump_flags; 02900 extern char dot_i_file[]; 02901 extern cdir_switch_type cdir_switches; 02902 extern FILE *c_i_f; /* cif output file */ 02903 extern int cif_C_opts; 02904 extern boolean cif_first_pgm_unit; 02905 extern int cif_flags; 02906 extern int cif_internal_proc_start_line; 02907 extern int cif_module_proc_start_line; 02908 extern char cif_name[]; 02909 extern boolean cif_need_unit_rec; 02910 extern FILE *cif_actual_file; /* The real CIF file */ 02911 extern boolean cif_pgm_unit_error_recovery; 02912 extern int cif_pgm_unit_start_line; 02913 extern FILE *cif_tmp_file; 02914 extern boolean cif_tmp_so_no_msg; 02915 extern cmd_line_flags_type cmd_line_flags; 02916 extern int code_size; 02917 extern boolean comp_gen_expr; 02918 extern int comp_phase; 02919 extern int const_safevl_idx; 02920 extern convert_to_string_type convert_to_string_fmt; 02921 extern int curr_debug_lbl; 02922 extern int curr_glb_line; 02923 extern int curr_internal_lbl; 02924 extern int curr_scp_idx; 02925 extern int curr_stmt_sh_idx; 02926 extern int curr_gl_stmt_sh_idx; 02927 extern int data_size; 02928 extern linear_type_type double_linear_type[Num_Fortran_Types]; 02929 extern boolean disregard_mics[]; 02930 extern boolean disregard_directive[]; 02931 extern boolean disregard_mips[]; 02932 extern boolean disregard_open_mp[]; 02933 extern boolean disregard_openad[]; /* eraxxon: OpenAD */ 02934 extern FILE *debug_file; 02935 extern char debug_file_name[]; 02936 extern dump_flags_type dump_flags; 02937 extern long *dt_cmp_tbl; /* Assumes long is word length */ 02938 extern int expanded_intrinsic_list; 02939 extern expr_mode_type expr_mode; 02940 extern void (*get_char) (); 02941 extern void (*get_char_literal) (); 02942 extern long glb_tbl_idx[Num_Glb_Tbl_Idxs]; 02943 extern int global_stmt_sh_idx; 02944 extern linear_type_type half_linear_type[Num_Fortran_Types]; 02945 extern boolean have_unnamed_pgm_unit; 02946 extern boolean have_main_pgm_unit; 02947 extern boolean need_pure_function; 02948 extern boolean host_ieee; 02949 extern boolean in_action_stmt_of_if_where_or_forall; 02950 extern int include_path_idx; 02951 extern linear_type_type init_default_linear_type[Num_Fortran_Types]; 02952 extern linear_type_type default_linear_type[Num_Fortran_Types]; 02953 extern expr_arg_type init_exp_desc; 02954 extern opnd_type init_target_opnd; 02955 extern boolean inline_global_sgi; 02956 extern int inline_path_idx; 02957 extern boolean issue_overflow_msg_719; 02958 extern long max_call_list_size; 02959 extern long_type max_character_length; 02960 extern char mod_out_path[]; 02961 extern int module_path_idx; 02962 extern boolean need_new_sh; 02963 extern boolean need_to_issue_719; 02964 extern boolean no_func_expansion; 02965 extern boolean noinline_global_sgi; 02966 extern opnd_type null_opnd; 02967 extern int num_ansi; 02968 extern int num_cautions; 02969 extern int num_comments; 02970 extern int num_errors; 02971 extern int num_notes; 02972 extern int num_optz_msgs; 02973 extern int num_warnings; 02974 extern int num_of_derived_types; 02975 extern int num_prog_unit_errors; 02976 extern on_off_flags_type on_off_flags; 02977 extern opt_flags_type opt_flags; 02978 extern char parse_operand_insert[40]; 02979 extern int pgm_unit_start_line; 02980 extern char preinline_file[]; 02981 extern int prev_statement_number; 02982 extern char program_unit_name[MAX_ID_LEN+1]; 02983 extern int register_bit_size_tbl[Num_Linear_Types]; 02984 extern int sb_len[]; 02985 extern char *sb_name[]; 02986 extern char *search_str[]; 02987 extern src_form_type source_form; 02988 extern char src_file[]; 02989 extern int statement_number; 02990 extern int stmt_end_col; 02991 extern int stmt_end_line; 02992 extern int stmt_label_idx; 02993 extern int stmt_start_col; 02994 extern int stmt_start_line; 02995 extern stmt_type_type stmt_type; 02996 extern char *stmt_type_str[]; 02997 extern int storage_bit_kind_tbl[Num_Linear_Types]; 02998 extern int storage_bit_size_tbl[Num_Linear_Types]; 02999 extern int bit_size_tbl[Num_Linear_Types]; 03000 extern int storage_bit_prec_tbl[Num_Linear_Types]; 03001 extern int stride_mult_unit_in_bits[Num_Linear_Types]; 03002 extern target_machine_type target_machine; 03003 extern int target_safevl; 03004 extern boolean target_ieee; 03005 extern int target_os; 03006 extern boolean target_sv1; 03007 extern boolean target_triton; 03008 extern boolean target_t3e; 03009 extern long true_value; 03010 extern int where_ir_idx; 03011 extern int where_dealloc_stmt_idx; 03012 extern int type_alignment_tbl[Num_Linear_Types]; 03013 03014 03015 /*********************************\ 03016 |* global enums and types for io *| 03017 \*********************************/ 03018 03019 enum io_stmt_entry {Backspace, 03020 Close, 03021 Endfile, 03022 Inquire, 03023 Open, 03024 Read, 03025 Rewind, 03026 Write, 03027 Print, 03028 Decode, 03029 Encode 03030 }; 03031 03032 03033 enum exp_form_entry {Exp_Form, 03034 Format_Form, 03035 Label_Form, 03036 Namelist_Form, 03037 Var_Only_Form 03038 }; 03039 03040 typedef enum exp_form_entry exp_form_type; 03041 typedef enum io_stmt_entry io_stmt_type; 03042 03043 typedef struct ciitem_entry ciitem_entry_type; 03044 typedef struct ciitem_tbl_entry ciitem_tbl_type; 03045 typedef struct cilist1 cilist1_type; 03046 03047 typedef char const_opts_type[MAX_CONST_OPT_LENGTH]; 03048 typedef char ciitem_name[MAX_CIITEM_NAME_LENGTH]; 03049 03050 03051 struct ciitem_entry {ciitem_name name; 03052 int name_length; 03053 exp_form_type allowed_form; 03054 int num_types; 03055 basic_type_type allowed_types[MAX_NUM_ALLOWED_TYPES]; 03056 int arg_position; 03057 boolean has_const_opts; 03058 boolean scalar; 03059 int num_const_opts; 03060 const_opts_type const_opts[MAX_NUM_CONST_OPTS]; 03061 }; 03062 03063 typedef ciitem_entry_type ciitem_list_type[MAX_NUM_CIITEM]; 03064 03065 struct ciitem_tbl_entry{int num_ciitems; 03066 int num_diff_ciitems; 03067 int num_without_kwd; 03068 ciitem_list_type ciitem_list; 03069 }; 03070 03071 struct cilist1 {Uint version : 8; 03072 Uint uflag : 8; 03073 Uint eeeflag : 8; 03074 Uint dsflag : 8; 03075 Uint fmt : 8; 03076 Uint stksize : 8; 03077 Uint unused : 8; 03078 Uint icount : 8; 03079 }; 03080 03081 03082 extern cif_usage_code_type xref_state; 03083 03084 extern long message_error_tbl[MAX_MSG_SIZE]; 03085 extern long message_suppress_tbl[MAX_MSG_SIZE]; 03086 extern long message_warning_tbl[MAX_MSG_SIZE]; 03087 03088 extern boolean check_type_conversion; 03089 extern int target_type_idx; 03090 extern int target_char_len_idx; 03091 extern int target_array_idx; 03092 03093 extern boolean insert_subs_ok; 03094 03095 extern boolean two_word_fcd; 03096 extern boolean char_len_in_bytes; 03097 03098 typedef struct f90_type { 03099 03100 unsigned int unused : 32; 03101 03102 enum typecodes { 03103 DVTYPE_UNUSED = 0, 03104 DVTYPE_TYPELESS = 1, 03105 DVTYPE_INTEGER = 2, 03106 DVTYPE_REAL = 3, 03107 DVTYPE_COMPLEX = 4, 03108 DVTYPE_LOGICAL = 5, 03109 DVTYPE_ASCII = 6, 03110 DVTYPE_DERIVEDBYTE = 7, 03111 DVTYPE_DERIVEDWORD = 8 03112 } type :8; /* type code */ 03113 unsigned int dpflag :1; /* set if declared double precision 03114 * or double complex */ 03115 enum dec_codes { 03116 DVD_DEFAULT = 0, /* KIND= and *n absent, or 03117 * KIND=expression which evaluates to 03118 * the default KIND, ie.: 03119 * KIND(0) for integer 03120 * KIND(0.0) for real 03121 * KIND((0,0)) for complex 03122 * KIND(.TRUE.) for logical 03123 * KIND('A') for character 03124 * across on all ANSI-conformant 03125 * implementations. */ 03126 DVD_KIND = 1, /* KIND=expression which does not 03127 * qualify to be DVD_DEFAULT or 03128 * DVD_KIND_CONST or DVD_KIND_DOUBLE */ 03129 DVD_STAR = 2, /* *n is specified (example: REAL*8 */ 03130 DVD_KIND_CONST = 3, /* KIND=expression constant across 03131 * all implementations. */ 03132 DVD_KIND_DOUBLE = 4 /* KIND=expression which evaluates to 03133 * KIND(1.0D0) for real across all 03134 * implementations. This code may be 03135 * passed for real or complex type. */ 03136 } kind_or_star :3; /* Set if KIND= or *n appears in the 03137 * variable declaration. Values 03138 * are from enum dec_codes */ 03139 unsigned int int_len :12; /* internal length in bits of iolist 03140 * entity. 8 for character data to 03141 * indicate size of each character */ 03142 unsigned int dec_len :8; /* declared length in bytes for *n 03143 * or KIND value. Ignored if 03144 * kind_or_star==DVD_DEFAULT */ 03145 } f90_type_t; 03146 03147 03148 /***********************************************************************\ 03149 |* ext_dope_type is used for folding array intrinsics. It defines *| 03150 |* our dope vector in C so we can create dope vectors for the folders. *| 03151 \***********************************************************************/ 03152 03153 # if defined(_DOPE_VECTOR_32_OR_64) 03154 union ext_dope_entry { 03155 struct { 03156 int base_addr; 03157 int el_len; 03158 unsigned int assoc : 1; 03159 unsigned int ptr_alloc : 1; 03160 unsigned int p_or_a : 2; 03161 unsigned int a_contig : 1; 03162 unsigned int unused_1 : 27; 03163 03164 unsigned int unused_2 : 29; 03165 unsigned int num_dims : 3; 03166 03167 # ifdef _TYPE_CODE_64_BIT 03168 f90_type_t type_code; 03169 # else 03170 unsigned int unused_3 : 32; 03171 unsigned int type_code : 32; 03172 # endif 03173 03174 int orig_base; 03175 int orig_size; 03176 03177 struct { 03178 int low_bound; 03179 int extent; 03180 int stride_mult; 03181 } dim[7]; 03182 03183 int unused_fill[25]; 03184 03185 } ptr32; 03186 struct { 03187 long long base_addr; 03188 long long el_len; 03189 unsigned int assoc : 1; 03190 unsigned int ptr_alloc : 1; 03191 unsigned int p_or_a : 2; 03192 unsigned int a_contig : 1; 03193 unsigned int unused_1 : 27; 03194 03195 unsigned int unused_2 : 29; 03196 unsigned int num_dims : 3; 03197 03198 # ifdef _TYPE_CODE_64_BIT 03199 f90_type_t type_code; 03200 # else 03201 unsigned int unused_3 : 32; 03202 unsigned int type_code : 32; 03203 # endif 03204 03205 long long orig_base; 03206 long long orig_size; 03207 03208 struct { 03209 long long low_bound; 03210 long long extent; 03211 long long stride_mult; 03212 } dim[7]; 03213 } ptr64; 03214 }; 03215 03216 typedef union ext_dope_entry ext_dope_type; 03217 03218 # else 03219 03220 struct ext_dope_entry { 03221 long_type base_addr; 03222 long_type el_len; 03223 # if defined(_TARGET64) 03224 unsigned int assoc : 1; 03225 unsigned int ptr_alloc : 1; 03226 unsigned int p_or_a : 2; 03227 unsigned int a_contig : 1; 03228 unsigned int unused_1 : 27; 03229 unsigned int unused_2 : 29; 03230 03231 unsigned int num_dims : 3; 03232 03233 # ifdef _TYPE_CODE_64_BIT 03234 f90_type_t type_code; 03235 # else 03236 unsigned int unused_3 : 32; 03237 unsigned int type_code : 32; 03238 # endif 03239 # else 03240 unsigned int assoc : 1; 03241 unsigned int ptr_alloc : 1; 03242 unsigned int p_or_a : 2; 03243 unsigned int a_contig : 1; 03244 unsigned int unused_1 : 24; 03245 03246 unsigned int num_dims : 3; 03247 03248 unsigned int type_code : 32; 03249 # endif 03250 03251 long_type orig_base; 03252 long_type orig_size; 03253 03254 struct { 03255 long_type low_bound; 03256 long_type extent; 03257 long_type stride_mult; 03258 } dim[7]; 03259 }; 03260 03261 typedef struct ext_dope_entry ext_dope_type; 03262 03263 # endif 03264 03265 # if defined(_DOPE_VECTOR_32_OR_64) 03266 struct int_dope_entry { 03267 int base_addr; 03268 int el_len; 03269 unsigned int assoc : 1; 03270 unsigned int ptr_alloc : 1; 03271 unsigned int p_or_a : 2; 03272 unsigned int a_contig : 1; 03273 unsigned int unused_1 : 27; 03274 03275 unsigned int unused_2 : 29; 03276 unsigned int num_dims : 3; 03277 03278 # ifdef _TYPE_CODE_64_BIT 03279 f90_type_t type_code; 03280 # else 03281 unsigned int unused_3 : 32; 03282 unsigned int type_code : 32; 03283 # endif 03284 03285 int orig_base; 03286 int orig_size; 03287 03288 struct { 03289 int low_bound; 03290 int extent; 03291 int stride_mult; 03292 } dim[7]; 03293 03294 }; 03295 03296 # else 03297 03298 struct int_dope_entry { 03299 long_type base_addr; 03300 long_type el_len; 03301 # if defined(_TARGET64) 03302 unsigned int assoc : 1; 03303 unsigned int ptr_alloc : 1; 03304 unsigned int p_or_a : 2; 03305 unsigned int a_contig : 1; 03306 unsigned int unused_1 : 27; 03307 unsigned int unused_2 : 29; 03308 03309 unsigned int num_dims : 3; 03310 03311 # ifdef _TYPE_CODE_64_BIT 03312 f90_type_t type_code; 03313 # else 03314 unsigned int unused_3 : 32; 03315 unsigned int type_code : 32; 03316 # endif 03317 # else 03318 unsigned int assoc : 1; 03319 unsigned int ptr_alloc : 1; 03320 unsigned int p_or_a : 2; 03321 unsigned int a_contig : 1; 03322 unsigned int unused_1 : 24; 03323 03324 unsigned int num_dims : 3; 03325 03326 unsigned int type_code : 32; 03327 # endif 03328 03329 long_type orig_base; 03330 long_type orig_size; 03331 03332 struct { 03333 long_type low_bound; 03334 long_type extent; 03335 long_type stride_mult; 03336 } dim[7]; 03337 }; 03338 # endif 03339 03340 typedef struct int_dope_entry int_dope_type; 03341 03342 03343 #if 0 /* eraxxon */ 03344 # ifdef _HOST64 03345 struct exp_tbl_entry { 03346 boolean ext : 1; 03347 linear_type_type type : 63; 03348 }; 03349 # elif _HOST32 03350 # endif 03351 #endif /* eraxxon */ 03352 /* linear_type_type is an enum, which is defined to be 32 bits, even 03353 on 64 bit architectures */ 03354 struct exp_tbl_entry { 03355 boolean ext : 1; 03356 linear_type_type type : 31; 03357 }; 03358 03359 03360 typedef struct exp_tbl_entry exp_tbl_type; 03361 03362 /***********************************************************************\ 03363 |* Definitions for namlist io structures. Copied from namelist.h. *| 03364 \***********************************************************************/ 03365 03366 /* 03367 * One nmlist_goli describes one namelist group_object_list_item. 03368 */ 03369 typedef struct nmlist_goli { 03370 unsigned int valtype :8; /* type of namelist entry */ 03371 unsigned int :24; /* pad for first 32 bits */ 03372 # ifndef _BITFIELD_RIGHT_TO_LEFT 03373 unsigned int :32; /* pad for second 32-bits */ 03374 # endif 03375 } nmlist_goli_t; 03376 03377 /* 03378 * nmlist_group is the structure of a namelist. One namelist group 03379 * is passed with the single call to a compiler-library interface 03380 * routine. 03381 */ 03382 03383 typedef struct { 03384 unsigned int version :3; /* contains NAMELIST_VERSION */ 03385 #if (defined(_TARGET64) || (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))) && \ 03386 ! defined(_BITFIELD_RIGHT_TO_LEFT) 03387 unsigned int :29; /* unused */ 03388 unsigned int :16; /* unused */ 03389 #else 03390 unsigned int :13; /* unused */ 03391 #endif 03392 unsigned int icount :16; /* Number of group_object_list_items */ 03393 /* in the namelist. */ 03394 } nmlist_group_hdr; 03395 03396 /* 03397 * A nmlist_struclist describes a structure namelist group_object_list. 03398 * If the structure is a scalar, then a null pointer is the second 03399 * word in the structure table. If the structure is an array, then 03400 * the address of the dope vector is in the second word. 03401 */ 03402 03403 typedef struct nmlist_struclist { 03404 03405 #if (defined(_TARGET64) || (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX))) && \ 03406 ! defined(_BITFIELD_RIGHT_TO_LEFT) 03407 unsigned int :32; /* unused */ 03408 unsigned int :16; /* unused */ 03409 #else 03410 unsigned int :16; /* unused */ 03411 #endif 03412 unsigned int structlen :16; /* number of entries in structure. */ 03413 } nmlist_struclist_t; 03414 03415 03416 03417 extern void print_dv (int_dope_type *, boolean); 03418 03419 extern long linear_to_arith[Num_Linear_Types]; 03420 extern boolean in_constructor; 03421 extern boolean in_implied_do; 03422 extern boolean parsing_kind_selector; 03423 extern int num_host_wds[Num_Linear_Types]; 03424 extern boolean directives_are_global; 03425 extern boolean insert_global_directives; 03426 extern int curr_stmt_stk_il_idx; 03427 03428 extern long argchck_suppress_msg[40]; 03429 extern int num_argchck_suppress_msg; 03430 03431 # ifdef _USE_FOLD_DOT_f 03432 extern void kludge_input_conversion (char *, int); 03433 extern void kludge_output_conversion (long_type *, int, char *); 03434 # endif