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