Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
globals.h
Go to the documentation of this file.
00001 /*
00002 
00003   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
00004 
00005   This program is free software; you can redistribute it and/or modify it
00006   under the terms of version 2 of the GNU General Public License as
00007   published by the Free Software Foundation.
00008 
00009   This program is distributed in the hope that it would be useful, but
00010   WITHOUT ANY WARRANTY; without even the implied warranty of
00011   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
00012 
00013   Further, this software is distributed without any warranty that it is
00014   free of the rightful claim of any third person regarding infringement 
00015   or the like.  Any license provided herein, whether implied or 
00016   otherwise, applies only to this software file.  Patent licenses, if 
00017   any, provided herein do not apply to combinations of this program with 
00018   other software, or any other product whatsoever.  
00019 
00020   You should have received a copy of the GNU General Public License along
00021   with this program; if not, write the Free Software Foundation, Inc., 59
00022   Temple Place - Suite 330, Boston MA 02111-1307, USA.
00023 
00024   Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
00025   Mountain View, CA 94043, or:
00026 
00027   http://www.sgi.com
00028 
00029   For further information regarding this notice, see:
00030 
00031   http://oss.sgi.com/projects/GenInfo/NoticeExplan
00032 
00033 */
00034 
00035 
00036 
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines