Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
debug.c
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 static char USMID[] = "\n@(#)5.0_pl/sources/debug.c     5.17    10/14/99 12:53:57\n";
00038 
00039 # include "defines.h"           /* Machine dependent ifdefs */
00040 
00041 # include "host.m"              /* Host machine dependent macros.*/
00042 # include "host.h"              /* Host machine dependent header.*/
00043 # include "target.m"            /* Target machine dependent macros.*/
00044 # include "target.h"            /* Target machine dependent header.*/
00045 # include "globals.m"
00046 # include "tokens.m"
00047 # include "sytb.m"
00048 # include "p_globals.m"
00049 # include "debug.m"
00050 # include "s_utils.m"
00051 # include "globals.h"
00052 # include "tokens.h"
00053 # include "sytb.h"
00054 # include "p_globals.h"
00055 # include "debug.h"
00056 
00057 static void build_fake_token    (char *);
00058 static void chain_thru_sn_ntries(FILE *, int, boolean);
00059 static void dump_al_ntry        (FILE *, int);
00060 static void dump_at_ntry        (FILE *, int, boolean);
00061 static void dump_blk_ntry       (FILE *, int);
00062 static void dump_bd_ntry        (FILE *, int);
00063 static void dump_cn_ntry        (FILE *, int);
00064 static void dump_dv             (FILE *, int_dope_type *, boolean);
00065 static void dump_ga_ntry        (FILE *, int);
00066 static void dump_gb_ntry        (FILE *, int);
00067 static void dump_gl_ntry        (FILE *, int);
00068 static void dump_gn_ntry        (FILE *, int);
00069 static void dump_gt_ntry        (FILE *, int);
00070 static void dump_hn_ntry        (FILE *, int, boolean);
00071 static void dump_il_ntry        (FILE *, int);
00072 static void dump_ir_ntry        (FILE *, int, int);
00073 static void dump_ln_ntry        (FILE *, int, boolean);
00074 static void dump_fp_ntry        (FILE *, int, boolean);
00075 static void dump_ml_ntry        (FILE *, int);
00076 static void dump_ro_ntry        (FILE *, int);
00077 static void dump_sb_ntry        (FILE *, int);
00078 static void dump_scp_ntry       (FILE *, int, int, boolean, boolean);
00079 static void dump_sn_ntry        (FILE *, int);
00080 static void dump_eq_ntry        (FILE *, int);
00081 static void dump_stmt_ntry      (FILE *, boolean);
00082 static void dump_typ_ntry       (FILE *, int);
00083 static void dump_trace_info     (FILE *, trace_type, char *, char *); 
00084 static void loop_thru_sn_ntries (FILE *, int, boolean);
00085 static void print_all_text      (boolean);
00086 static char *print_at_name      (int);
00087 static void print_attr_name     (FILE *, int, int);
00088 static void print_const_entry   (FILE *, int, int);
00089 static void print_list          (FILE *, int, int, int, boolean);
00090 static void print_Dv_Whole_Def_Opr          (FILE *, int, int, int);
00091 static void print_mp_dir_opr          (FILE *, int, int, int);
00092 static void print_open_mp_dir_opr(FILE *, int, int, int);
00093 static void print_expanded_stmt_for_scp(void);
00094 static void print_expanded_ir   (int);
00095 static void print_expanded_il   (int);
00096 static void print_expanded_opnd (opnd_type);
00097 static void print_expanded_const(int);
00098 static void print_fld_idx       (FILE *, char *, fld_type,int);
00099 static char *print_global_type_f(int);
00100 static void print_tbl_header    (char *);
00101 static void dump_io_type_code_ntry(FILE *, long_type *, int);
00102 
00103 static boolean  full_debug_dump;
00104 
00105     
00106 /******************************************************************************\
00107 |*                                                                            *|
00108 |* Description:                                                               *|
00109 |*      If this is a debug compiler, open the debug file to hold output.      *|
00110 |*                                                                            *|
00111 |* Input parameters:                                                          *|
00112 |*      NONE                                                                  *|
00113 |*                                                                            *|
00114 |* Output parameters:                                                         *|
00115 |*      NONE                                                                  *|
00116 |*                                                                            *|
00117 |* Returns:                                                                   *|
00118 |*      NOTHING                                                               *|
00119 |*                                                                            *|
00120 \******************************************************************************/
00121 
00122 FILE * init_debug_file (void)
00123 
00124 {
00125    if (debug_file == NULL) {
00126       full_debug_dump = TRUE;
00127 
00128       /* Set the name to cft90_dump, if this is called before or during */
00129       /* command line processing.  Usually this should be filename.l    */
00130 
00131       if (debug_file_name[0] == NULL_CHAR) {
00132          strcpy(debug_file_name, "cft90_dump");
00133       }
00134 
00135       debug_file = fopen(debug_file_name, "w");
00136 
00137       if (debug_file == NULL) {
00138          PRINTMSG(1, 17, Error, 0, debug_file_name);
00139          exit_compiler(RC_USER_ERROR);
00140       }
00141    }
00142 
00143    return(debug_file);
00144 
00145 }  /* init_debug_file */
00146 
00147 # ifdef _DEBUG
00148 
00149 
00150 /******************************************************************************\
00151 |*                                                                            *|
00152 |* Description:                                                               *|
00153 |*      The following are routines to print full tables.  They are called     *|
00154 |*      by using the -u commandline option with the table identifier.         *|
00155 |*      The attr table is an exception.  It is called via -u sytb             *|
00156 |*      With a few exceptions, there are no input parameters.  There are      *|
00157 |*      no output parameters and these routines return nothing.               *|
00158 |*                                                                            *|
00159 |* Input parameters:                                                          *|
00160 |*      NONE                                                                  *|
00161 |*                                                                            *|
00162 |* Output parameters:                                                         *|
00163 |*      NONE                                                                  *|
00164 |*                                                                            *|
00165 |* Returns:                                                                   *|
00166 |*      NOTHING                                                               *|
00167 |*                                                                            *|
00168 \******************************************************************************/
00169 
00170 
00171 /******************************************************************************\
00172 |*                                                                            *|
00173 |*      Print bounds table.                                                   *|
00174 |*                                                                            *|
00175 \******************************************************************************/
00176 
00177 void print_bd_tbl (void)
00178 
00179 {
00180    int  bd_idx;
00181 
00182 
00183    print_tbl_header("Bounds Table");
00184 
00185    bd_idx = 1;
00186 
00187    while (bd_idx < bounds_tbl_idx) {
00188        dump_bd_ntry(debug_file, bd_idx);
00189        bd_idx += BD_NTRY_SIZE(bd_idx);
00190    }
00191 
00192    bd_idx = BD_NEXT_FREE_NTRY(BD_FREE_LIST_IDX);
00193 
00194    while (bd_idx != NULL_IDX) {
00195       dump_bd_ntry(debug_file, bd_idx);
00196       bd_idx = BD_NEXT_FREE_NTRY(bd_idx);
00197    }
00198 
00199    putc ('\n', debug_file);
00200    fflush(debug_file);
00201    return;
00202 
00203 }  /* print_bd_tbl */
00204 
00205 
00206 /******************************************************************************\
00207 |*                                                                            *|
00208 |*      Print block stack.                                                    *|
00209 |*                                                                            *|
00210 \******************************************************************************/
00211 
00212 void print_blk_tbl (void)
00213 
00214 {
00215    int          blk_idx;
00216 
00217 
00218    print_tbl_header("BLOCK STACK");
00219 
00220    for (blk_idx = 1;  blk_idx <= blk_stk_idx;   blk_idx++) {
00221        dump_blk_ntry(debug_file, blk_idx);
00222    }
00223 
00224    putc ('\n', debug_file);
00225    fflush (debug_file);
00226    return;
00227 
00228 }  /* print_blk_tbl */
00229 
00230 
00231 /******************************************************************************\
00232 |*                                                                            *|
00233 |*      Print constant table                                                  *|
00234 |*                                                                            *|
00235 \******************************************************************************/
00236 
00237 void print_cn_tbl (void)
00238 
00239 {
00240    int                  cn_idx; 
00241 
00242 
00243    print_tbl_header("Constant Table");
00244 
00245    for (cn_idx = 1; cn_idx <= const_tbl_idx; cn_idx++) {
00246        dump_cn_ntry(debug_file, cn_idx);
00247    }
00248 
00249    putc ('\n', debug_file);
00250    fflush (debug_file);
00251    return;
00252 
00253 }  /* print_cn_tbl */
00254     
00255 /******************************************************************************\
00256 |*                                                                            *|
00257 |*      Print equivalence table                                               *|
00258 |*                                                                            *|
00259 \******************************************************************************/
00260 
00261 void print_eq_tbl (void)
00262 {
00263    int      next_group;
00264    int      next_item;
00265 
00266 
00267    if (SCP_FIRST_EQUIV_GRP(curr_scp_idx) == NULL_IDX) {
00268       print_tbl_header("Equivalence Table is empty");
00269    }
00270    else {
00271       print_tbl_header("Equivalence Table");
00272 
00273       next_group = SCP_FIRST_EQUIV_GRP(curr_scp_idx);
00274 
00275       while (next_group != NULL_IDX) {
00276          fprintf(debug_file, "%21s\n", "NEW EQUIVALENCE GROUP");
00277          next_item = next_group;
00278 
00279          while (next_item != NULL_IDX) {
00280             dump_eq_ntry(debug_file, next_item);
00281             next_item = EQ_NEXT_EQUIV_OBJ(next_item);
00282          }
00283          next_group = EQ_NEXT_EQUIV_GRP(next_group);
00284       }
00285    }
00286 
00287    putc ('\n', debug_file);
00288    fflush (debug_file);
00289    return;
00290 
00291 }  /* print_eq_tbl */
00292 
00293     
00294 /******************************************************************************\
00295 |*                                                                            *|
00296 |*      Print file path table                                                 *|
00297 |*                                                                            *|
00298 \******************************************************************************/
00299 
00300 void print_fp_tbl (void)
00301 
00302 {
00303    int          fp_idx;
00304 
00305    print_tbl_header("File Path Table");
00306 
00307    fprintf(debug_file, "%s\n\n", "Module paths:");
00308 
00309    fp_idx = module_path_idx;
00310 
00311    while (fp_idx != NULL_IDX) {
00312       dump_fp_ntry(debug_file, fp_idx, TRUE);
00313       fp_idx = FP_NEXT_FILE_IDX(fp_idx);
00314    }
00315 
00316    fprintf(debug_file, "%s\n\n", "Implicit Use Module Paths:");
00317 
00318    fp_idx = cmd_line_flags.implicit_use_idx;
00319 
00320    while (fp_idx != NULL_IDX) {
00321       dump_fp_ntry(debug_file, fp_idx, TRUE);
00322       fp_idx = FP_NEXT_FILE_IDX(fp_idx);
00323    }
00324 
00325    fprintf(debug_file, "%s\n\n", "Inline paths:");
00326 
00327    fp_idx = inline_path_idx;
00328 
00329    while (fp_idx != NULL_IDX) {
00330       dump_fp_ntry(debug_file, fp_idx, TRUE);
00331       fp_idx = FP_NEXT_FILE_IDX(fp_idx);
00332    }
00333 
00334    fprintf(debug_file, "%s\n\n", "Include paths:");
00335 
00336    print_fp_includes();
00337 
00338    putc ('\n', debug_file);
00339    fflush(debug_file);
00340    return;
00341 
00342 }  /* print_fp_tbl */
00343     
00344 /******************************************************************************\
00345 |*                                                                            *|
00346 |*      Print global bounds table                                             *|
00347 |*                                                                            *|
00348 \******************************************************************************/
00349 
00350 void print_gb_tbl (void)
00351 
00352 {
00353    int   gb_idx;
00354 
00355    
00356    print_tbl_header("Global Bounds Table");
00357 
00358    gb_idx       = 1;
00359 
00360    while (gb_idx != NULL_IDX && gb_idx <= global_bounds_tbl_idx) {
00361       dump_gb_ntry(debug_file, gb_idx);
00362 
00363       if (GB_ARRAY_SIZE(gb_idx) == Constant_Size &&
00364           GB_ARRAY_CLASS(gb_idx) == Explicit_Shape) {
00365          gb_idx += (GB_RANK(gb_idx) * 2);
00366       }
00367       else {
00368          gb_idx++;
00369       }
00370        
00371    }
00372 
00373    putc ('\n', debug_file);
00374    fflush (debug_file);
00375    return;
00376 
00377 }  /* print_gb_tbl */
00378 
00379     
00380 /******************************************************************************\
00381 |*                                                                            *|
00382 |*      Print global line table                                               *|
00383 |*                                                                            *|
00384 \******************************************************************************/
00385 
00386 void print_gl_tbl (void)
00387 
00388 {
00389    int   gl_idx;
00390 
00391    
00392    print_tbl_header("Global Line Table");
00393 
00394    for (gl_idx = 1; gl_idx <= global_line_tbl_idx; gl_idx++) {
00395        dump_gl_ntry(debug_file, gl_idx);
00396    }
00397 
00398    fprintf(debug_file,"\n    %-22s= %-10d  %-20s= %-10d\n",
00399                       "num_prog_unit_err", num_prog_unit_errors,
00400                       "num_ansi", num_ansi);
00401 
00402    fprintf(debug_file,"    %-22s= %-10d  %-20s= %-10d\n",
00403                       "num_warnings", num_warnings,
00404                       "num_cautions", num_cautions);
00405 
00406    fprintf(debug_file,"    %-22s= %-10d  %-20s= %-10d\n",
00407                       "num_notes", num_notes,
00408                       "num_comments", num_comments);
00409 
00410    putc ('\n', debug_file);
00411    fflush (debug_file);
00412    return;
00413 
00414 }  /* print_gl_tbl */
00415 
00416     
00417 /******************************************************************************\
00418 |*                                                                            *|
00419 |*      Print global name table                                               *|
00420 |*                                                                            *|
00421 \******************************************************************************/
00422 
00423 void print_gn_tbl (void)
00424 
00425 {
00426    int   gn_idx;
00427    int   gt_idx;
00428 
00429    
00430    print_tbl_header("Global Name Table");
00431 
00432    for (gn_idx = 2; gn_idx < global_name_tbl_idx; gn_idx++) {
00433        fprintf(debug_file, "\n****************************************"
00434                            "****************************************\n");
00435        dump_gn_ntry(debug_file, gn_idx);
00436        dump_ga_ntry(debug_file, GN_ATTR_IDX(gn_idx));
00437    }
00438    fprintf(debug_file, "\n****************************************"
00439                        "****************************************\n");
00440 
00441    for (gt_idx = 1; gt_idx <= global_type_tbl_idx; gt_idx++) {
00442 
00443       if (GT_TYPE(gt_idx) == Structure) {
00444          dump_ga_ntry(debug_file, GT_STRUCT_IDX(gt_idx));
00445       }
00446    }
00447 
00448    putc ('\n', debug_file);
00449    fflush (debug_file);
00450    return;
00451 
00452 }  /* print_gn_tbl */
00453 
00454     
00455 /******************************************************************************\
00456 |*                                                                            *|
00457 |*      Print global type table                                               *|
00458 |*                                                                            *|
00459 \******************************************************************************/
00460 
00461 void print_gt_tbl (void)
00462 
00463 {
00464    int   gt_idx;
00465 
00466    
00467    print_tbl_header("Global Type Table");
00468 
00469    for (gt_idx = 1; gt_idx <= global_type_tbl_idx; gt_idx++) {
00470        dump_gt_ntry(debug_file, gt_idx);
00471    }
00472 
00473    putc ('\n', debug_file);
00474    fflush (debug_file);
00475    return;
00476 
00477 }  /* print_gt_tbl */
00478     
00479 /******************************************************************************\
00480 |*                                                                            *|
00481 |*      Print hidden name table                                               *|
00482 |*                                                                            *|
00483 \******************************************************************************/
00484 
00485 void print_hn_tbl()
00486 
00487 {
00488    int          hn_idx;
00489 
00490 
00491    print_tbl_header("Hidden Name Table");
00492 
00493    for (hn_idx = SCP_HN_FW_IDX(curr_scp_idx) + 1; 
00494         hn_idx < SCP_HN_LW_IDX(curr_scp_idx); 
00495         hn_idx++) {
00496        dump_hn_ntry(debug_file, hn_idx, FALSE);        /* Don't print attrs */
00497    }
00498 
00499    putc ('\n', debug_file);
00500    fflush (debug_file);
00501    return;
00502 
00503 }  /* print_hn_tbl */
00504 
00505     
00506 /******************************************************************************\
00507 |*                                                                            *|
00508 |*      Print local name table without attr entries.                          *|
00509 |*                                                                            *|
00510 \******************************************************************************/
00511 
00512 void print_ln_tbl()
00513 
00514 {
00515    int          ln_idx;
00516 
00517    print_tbl_header("Local Name Table");
00518 
00519    for (ln_idx = SCP_LN_FW_IDX(curr_scp_idx) + 1; 
00520         ln_idx < SCP_LN_LW_IDX(curr_scp_idx); 
00521         ln_idx++) {
00522        dump_ln_ntry(debug_file, ln_idx, FALSE);        /* Don't print attrs */
00523    }
00524 
00525    putc ('\n', debug_file);
00526    fflush (debug_file);
00527    return;
00528 
00529 }  /* print_ln_tbl */
00530 
00531     
00532 /******************************************************************************\
00533 |*                                                                            *|
00534 |*      Print module link table                                               *|
00535 |*                                                                            *|
00536 \******************************************************************************/
00537 
00538 void print_ml_tbl()
00539 
00540 {
00541    int          ml_idx;
00542 
00543 
00544    print_tbl_header("Module Link Table");
00545 
00546    fprintf(debug_file, 
00547        "     NOTE:  Only print entries that have at least one nonzero index\n");
00548 
00549    for (ml_idx = 0; ml_idx <= mod_link_tbl_idx; ml_idx++) {
00550 
00551       if (ML_AT_IDX(ml_idx) != NULL_IDX ||
00552           ML_BD_IDX(ml_idx) != NULL_IDX ||
00553           ML_CN_IDX(ml_idx) != NULL_IDX ||
00554           ML_LN_IDX(ml_idx) != NULL_IDX ||
00555           ML_NP_IDX(ml_idx) != NULL_IDX ||
00556           ML_SB_IDX(ml_idx) != NULL_IDX ||
00557           ML_IL_IDX(ml_idx) != NULL_IDX ||
00558           ML_IR_IDX(ml_idx) != NULL_IDX ||
00559           ML_CP_IDX(ml_idx) != NULL_IDX ||
00560           ML_SH_IDX(ml_idx) != NULL_IDX ||
00561           ML_TYP_IDX(ml_idx) != NULL_IDX ||
00562           ML_SN_IDX(ml_idx) != NULL_IDX) {
00563          dump_ml_ntry(debug_file, ml_idx);
00564       }
00565    }
00566 
00567    putc ('\n', debug_file);
00568    fflush (debug_file);
00569    return;
00570 
00571 }  /* print_ml_tbl */
00572 
00573     
00574 /******************************************************************************\
00575 |*                                                                            *|
00576 |*      Print rename only table                                               *|
00577 |*                                                                            *|
00578 \******************************************************************************/
00579 
00580 void print_ro_tbl (ro_start_idx)
00581 
00582 {
00583    int  ro_idx;
00584 
00585 
00586    print_tbl_header("Rename Only Table");
00587 
00588    ro_idx = ro_start_idx;
00589 
00590    while (ro_idx != NULL_IDX) {
00591        dump_ro_ntry(debug_file, ro_idx);
00592        ro_idx = RO_NEXT_IDX(ro_idx);
00593    }
00594 
00595    putc ('\n', debug_file);
00596    fflush(debug_file);
00597    return;
00598 
00599 }  /* print_ro_tbl */
00600 
00601     
00602 /******************************************************************************\
00603 |*                                                                            *|
00604 |*      Print storage block table                                             *|
00605 |*                                                                            *|
00606 \******************************************************************************/
00607 
00608 void print_sb_tbl (void)
00609 
00610 {
00611    int  sb_idx;
00612 
00613 
00614    print_tbl_header("Storage Block Table");
00615 
00616    for (sb_idx = 1; sb_idx <= stor_blk_tbl_idx; sb_idx++) {
00617        dump_sb_ntry(debug_file, sb_idx);
00618    }
00619 
00620    putc ('\n', debug_file);
00621    fflush(debug_file);
00622    return;
00623 
00624 }  /* print_sb_tbl */
00625 
00626     
00627 /******************************************************************************\
00628 |*                                                                            *|
00629 |*      Print scope table                                                     *|
00630 |*                                                                            *|
00631 \******************************************************************************/
00632 
00633 void print_scp_tbl(void)
00634 
00635 {
00636    print_tbl_header("Scope Table");
00637 
00638    dump_scp_ntry(debug_file, 0, 0, FALSE, TRUE);
00639 
00640    putc ('\n', debug_file);
00641    fflush (debug_file);
00642    return;
00643 
00644 }  /* print_scp_tbl */
00645 
00646     
00647 /******************************************************************************\
00648 |*                                                                            *|
00649 |*      Print statement header table                                          *|
00650 |*                                                                            *|
00651 |*      This procedure is the driver for printing all Statement Headers and   *|
00652 |*      all their IR.  A separate driver is required, like the Semantics Pass *|
00653 |*      driver, because the underlying routine is called recursively and      *|
00654 |*      because we always want to start with the first SCP entry.             *|
00655 |*                                                                            *|
00656 \******************************************************************************/
00657 
00658 void  print_sh_tbl (boolean     print_all_scps)
00659 
00660 {
00661    int  save_curr_scp_idx;
00662    int  save_curr_stmt_sh_idx;
00663 
00664 
00665    print_tbl_header("Statement Header Table");
00666 
00667    if (print_all_scps) {
00668       save_curr_scp_idx     = curr_scp_idx;
00669       curr_scp_idx          = 1;
00670       save_curr_stmt_sh_idx = curr_stmt_sh_idx;
00671 
00672       print_all_text(TRUE);
00673 
00674       curr_scp_idx     = save_curr_scp_idx;
00675       curr_stmt_sh_idx = save_curr_stmt_sh_idx;
00676    }
00677    else {
00678       print_all_text(FALSE);            /* Just print current scope */
00679    }
00680 
00681    return;
00682 
00683 }  /* print_sh_tbl */
00684 
00685     
00686 /******************************************************************************\
00687 |*                                                                            *|
00688 |*      Print type table                                                      *|
00689 |*                                                                            *|
00690 \******************************************************************************/
00691 
00692 void print_typ_tbl (void)
00693 
00694 {
00695    int          type_idx;
00696 
00697 
00698    print_tbl_header("Type Table");
00699 
00700    for (type_idx = 1; type_idx <= type_tbl_idx; type_idx++) {
00701       dump_typ_ntry(debug_file, type_idx);
00702    }
00703 
00704    putc ('\n', debug_file);
00705    fflush(debug_file);
00706    return;
00707 
00708 }  /* print_typ_tbl */
00709 
00710 
00711 /******************************************************************************\
00712 |*                                                                            *|
00713 |* Description:                                                               *|
00714 |*      Print commandline information to debug_file.                          *|
00715 |*                                                                            *|
00716 |* Input parameters:                                                          *|
00717 |*      NONE                                                                  *|
00718 |*                                                                            *|
00719 |* Output parameters:                                                         *|
00720 |*      NONE                                                                  *|
00721 |*                                                                            *|
00722 |* Returns:                                                                   *|
00723 |*      NOTHING                                                               *|
00724 |*                                                                            *|
00725 \******************************************************************************/
00726 
00727 void print_cmd_tbl (void)
00728 
00729 {
00730    extern       char           *directive_str[];
00731                 int             dir_idx;
00732                 boolean         first;
00733                 int             fp_idx;
00734                 int             i,j;
00735 
00736 
00737    print_tbl_header("Commandline Flags");
00738 
00739    fprintf(debug_file, "  %-17s = %-s\n",
00740            "   source file", src_file);
00741    fprintf(debug_file, "  %-17s = %-s\n",
00742            "-b binary_output", (cmd_line_flags.binary_output)?bin_file:"NONE");
00743    fprintf(debug_file, "  %-17s= %-s\n",
00744            "-S assembly_output", (cmd_line_flags.assembly_output) ? 
00745                                                  assembly_file:"NONE");
00746 
00747    if (include_path_idx == NULL_IDX) {
00748       fprintf(debug_file, "  %-17s = %-s\n", "-I include paths", "NONE");
00749    }
00750    else {
00751       fprintf(debug_file, "  %-17s\n", "-I include paths");
00752       print_fp_includes();
00753    }
00754 
00755    if (module_path_idx == NULL_IDX) {
00756       fprintf(debug_file, "  %-17s = %-s\n", "-p module paths", "NONE");
00757    }
00758    else {
00759       fprintf(debug_file, "  %-17s\n", "-p module paths");
00760       fp_idx = module_path_idx;
00761 
00762       while (fp_idx != NULL_IDX) {
00763          fprintf(debug_file, "%4s%-s\n", " ", FP_NAME_PTR(fp_idx));
00764          fp_idx = FP_NEXT_FILE_IDX(fp_idx);
00765       }
00766    }
00767    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00768            "-align8", boolean_str[cmd_line_flags.align8],
00769            "-align16", boolean_str[cmd_line_flags.align16],
00770            "-align32", boolean_str[cmd_line_flags.align32]);
00771 
00772    fprintf(debug_file, "  %-17s = %-2s\n",
00773            "-align64", boolean_str[cmd_line_flags.align64]);
00774 
00775    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00776            "-a dalign", boolean_str[cmd_line_flags.dalign],
00777            "-a taskcommon", boolean_str[cmd_line_flags.taskcommon],
00778            "-f ", src_form_str[cmd_line_flags.src_form]);
00779 
00780    fprintf(debug_file, "  %-17s = %-27s  %-18s = %-7s\n",
00781            "-i ", integer_size_str[cmd_line_flags.integer_32],
00782            "-k solaris_profile", boolean_str[cmd_line_flags.solaris_profile]);
00783 
00784    fprintf(debug_file, "  %-17s = %-27s  %-18s = %-7s\n",
00785            "-m ", msg_lvl_str[cmd_line_flags.msg_lvl_suppressed],
00786            "-s float64", boolean_str[cmd_line_flags.s_float64]);
00787 
00788    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00789            "-s default64", boolean_str[cmd_line_flags.s_default64],
00790            "-s default32", boolean_str[cmd_line_flags.s_default32],
00791            "-s cf77types", boolean_str[cmd_line_flags.s_cf77types]);
00792 
00793    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00794            "-s integer8", boolean_str[cmd_line_flags.s_integer8],
00795            "-s logical8", boolean_str[cmd_line_flags.s_logical8],
00796            "-s real8", boolean_str[cmd_line_flags.s_real8]);
00797 
00798 
00799    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00800            "-s complex8", boolean_str[cmd_line_flags.s_complex8],
00801            "-s pointer8", boolean_str[cmd_line_flags.s_pointer8],
00802            "-s doublecomplex16", boolean_str[cmd_line_flags.s_doublecomplex16]);
00803 
00804    fprintf(debug_file, "  %-42s = %-2s\n",
00805            "-s doubleprecision16",
00806                      boolean_str[cmd_line_flags.s_doubleprecision16]);
00807 
00808    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-s\n",
00809            "-t truncate_bits", boolean_str[cmd_line_flags.truncate_bits],
00810            "-G ", debug_lvl_str[cmd_line_flags.debug_lvl]);
00811 
00812    fprintf(debug_file, "  %-17s = ", "-N line_size");
00813 
00814    if (cmd_line_flags.line_size_80) {
00815       fprintf(debug_file, "%-7d\n", 80);
00816    }
00817    else if (cmd_line_flags.line_size_132) {
00818       fprintf(debug_file, "%-7d\n", 132);
00819    }
00820    else {
00821       fprintf(debug_file, "%-7d\n", 72);
00822    }
00823 
00824    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00825            "-Ps small pic", boolean_str[(cmd_line_flags.small_pic_model)],
00826            "-Pl large pic", boolean_str[(cmd_line_flags.large_pic_model)],
00827            "-R a", boolean_str[cmd_line_flags.runtime_argument]);
00828 
00829    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00830            "-R b", boolean_str[cmd_line_flags.runtime_bounds],
00831            "-R c", boolean_str[cmd_line_flags.runtime_conformance],
00832            "-R C", boolean_str[cmd_line_flags.runtime_arg_call]);
00833 
00834    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-7s\n",
00835            "-R E", boolean_str[cmd_line_flags.runtime_arg_entry],
00836            "-R s", boolean_str[cmd_line_flags.runtime_substring],
00837            "-R n", boolean_str[cmd_line_flags.runtime_arg_count_only]);
00838 
00839    fprintf(debug_file, "  %-17s = %-2s  %-18s = %-2s  %-18s = %-d\n",
00840            "-V verify_option", boolean_str[(cmd_line_flags.verify_option)],
00841            "-X m", boolean_str[(cmd_line_flags.malleable)],
00842            "-X npes", cmd_line_flags.MPP_num_pes);
00843 
00844 
00845    fprintf(debug_file, "\n%s On/Off Flags  (-e/-d)%s\n\n",
00846                        "  -------------------------- ",
00847                        "  -------------------------- ");
00848 
00849    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00850                        "a  abort_if_any_errors",
00851                           boolean_str[on_off_flags.abort_if_any_errors],
00852                        "e  ieee",
00853                           boolean_str[on_off_flags.ieee]);
00854    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00855                        "f  flowtrace_option",
00856                           boolean_str[on_off_flags.flowtrace_option],
00857                        "g  assembly_listing_file",
00858                           boolean_str[on_off_flags.assembly_listing_file]);
00859    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00860                        "i  indef_init",
00861                           boolean_str[on_off_flags.indef_init],
00862                        "j  exec_doloops_once",
00863                           boolean_str[on_off_flags.exec_doloops_once]);
00864    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00865                        "n  issue_ansi_messages",
00866                           boolean_str[on_off_flags.issue_ansi_messages],
00867                        "p  enable_double_precision",
00868                           boolean_str[on_off_flags.enable_double_precision]);
00869    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00870                        "q  abort_on_100_errors",
00871                           boolean_str[on_off_flags.abort_on_100_errors],
00872                        "r  round_mult_operations",
00873                           boolean_str[on_off_flags.round_mult_operations]);
00874    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00875                        "t  alloc_autos_on_stack",
00876                           boolean_str[on_off_flags.alloc_autos_on_stack],
00877                        "u  round_integer_divide",
00878                           boolean_str[on_off_flags.round_integer_divide]);
00879    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00880                        "u  reciprical_divide",
00881                           boolean_str[on_off_flags.reciprical_divide],
00882                        "v  save_all_vars",
00883                           boolean_str[on_off_flags.save_all_vars]);
00884    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00885                        "x  allow_leading_uscore",
00886                           boolean_str[on_off_flags.allow_leading_uscore],
00887                        "A  MPP_apprentice",
00888                           boolean_str[on_off_flags.MPP_apprentice]);
00889    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00890                        "B  binary_output",
00891                           boolean_str[on_off_flags.binary_output],
00892                        "C  shared_to_private_coer",
00893                           boolean_str[on_off_flags.shared_to_private_coer]);
00894    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00895                        "I  implicit_none",
00896                           boolean_str[on_off_flags.implicit_none],
00897                        "P  preprocess_only",
00898                           boolean_str[on_off_flags.preprocess_only]);
00899    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00900                        "Q  allow_leading_uscore",
00901                           boolean_str[on_off_flags.allow_leading_uscore],
00902                        "R  recursive",
00903                           boolean_str[on_off_flags.recursive]);
00904    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00905                        "S  assembly_output",
00906                           boolean_str[on_off_flags.assembly_output],
00907                        "U  upper_case_names",
00908                           boolean_str[on_off_flags.upper_case_names]);
00909    fprintf(debug_file, "  %-26s = %-2s    %-26s = %-2s\n",
00910                        "X  atexpert",
00911                           boolean_str[on_off_flags.atexpert],
00912                        "Z  save_dot_i",
00913                           boolean_str[on_off_flags.save_dot_i]);
00914 
00915    fprintf(debug_file, "\n%s Optimization Flags (-O)%s\n\n",
00916                        "  ------------------------- ",
00917                        "  ------------------------- ");
00918 
00919    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s\n",
00920                        "aggress", boolean_str[opt_flags.aggress],
00921                        "bottom_load", boolean_str[opt_flags.bottom_load]);
00922 
00923    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2d  %-18s = %-2d\n",
00924                        "fusion", boolean_str[opt_flags.fusion],
00925                        "ieeeconform", (int) boolean_str[opt_flags.ieeeconform],
00926                        "inline_lvl", opt_flags.inline_lvl);
00927 
00928    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
00929                        "jump", boolean_str[opt_flags.jump],
00930                        "loopalign", boolean_str[opt_flags.loopalign],
00931                        "mark", boolean_str[opt_flags.mark]);
00932 
00933    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
00934                        "modinline", boolean_str[opt_flags.modinline],
00935                        "msgs", boolean_str[opt_flags.msgs],
00936                        "neg_msgs", boolean_str[opt_flags.neg_msgs]);
00937 
00938    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
00939                        "nointerchange", boolean_str[opt_flags.nointerchange],
00940                        "overindex", boolean_str[opt_flags.over_index],
00941                        "pattern", boolean_str[opt_flags.pattern]);
00942 
00943    fprintf(debug_file, "  %-17s = %-2d\n",
00944                        "pipeline", opt_flags.pipeline_lvl);
00945 
00946    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2d  %-18s = %-2d\n",
00947                        "recurrence", boolean_str[opt_flags.recurrence],
00948                        "scalar", opt_flags.scalar_lvl,
00949                        "split", opt_flags.split_lvl);
00950 
00951    fprintf(debug_file, "  %-17s = %-2d   %-18s = %-2d  %-18s = %-2s\n",
00952                        "support_lvl", opt_flags.support_lvl,
00953                        "task", opt_flags.task_lvl,
00954                        "taskinner", boolean_str[opt_flags.taskinner]);
00955 
00956    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2d\n",
00957                        "threshold", boolean_str[opt_flags.threshold],
00958                        "vsearch", boolean_str[opt_flags.vsearch],
00959                        "unroll", opt_flags.unroll_lvl);
00960 
00961    fprintf(debug_file, "  %-17s = %-2d   %-18s = %-2s  %-18s = %-2s\n",
00962                        "vector", opt_flags.vector_lvl,
00963                        "vsearch", boolean_str[opt_flags.vsearch],
00964                        "zeroinc", boolean_str[opt_flags.zeroinc]);
00965 
00966 
00967    fprintf(debug_file, "\n%s Disregard Flags  (-x)%s\n\n",
00968                        "  -------------------------- ",
00969                        "  -------------------------- ");
00970 
00971    fprintf(debug_file, " ");
00972 
00973    /* 0 is Tok_Dir_Start - so skip it. */
00974 
00975    for (dir_idx = 1; (dir_idx < (Tok_Dir_End - Tok_Dir_Start -1)); dir_idx++) {
00976       fprintf(debug_file, "%-20s = %-2s ", directive_str[dir_idx], 
00977                           boolean_str[disregard_directive[dir_idx]]);
00978 
00979       if ((dir_idx%3) == 0) {
00980          fprintf(debug_file, "\n ");
00981       }
00982    }
00983 
00984    fprintf(debug_file, "\n\n%s Dump Flags (-u)%s\n\n",
00985                        "  ----------------------------- ",
00986                        "  ----------------------------- ");
00987 
00988    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
00989                      "abort_ansi", boolean_str[dump_flags.abort_on_ansi],
00990                      "no_dim_pad", boolean_str[dump_flags.no_dimension_padding],
00991                      "no_mod_output", boolean_str[dump_flags.no_module_output]);
00992 
00993    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s\n",
00994                      "bd", boolean_str[dump_flags.bd_tbl],
00995                      "blk", boolean_str[dump_flags.blk_stk]);
00996 
00997    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
00998                        "cmd", boolean_str[dump_flags.cmd_line_tbls],
00999                        "cn", boolean_str[dump_flags.cn_tbl],
01000                        "defines", boolean_str[dump_flags.defines]);
01001 
01002    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01003                        "fortran", boolean_str[dump_flags.fort_out],
01004                        "fp", boolean_str[dump_flags.fp_tbl],
01005                        "ftrace", boolean_str[dump_flags.ftrace_info]);
01006 
01007    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01008                        "gl", boolean_str[dump_flags.gl_tbl],
01009                        "intrin", boolean_str[dump_flags.intrin_tbl],
01010                        "ir1", boolean_str[dump_flags.ir1_tbl]);
01011 
01012    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01013                        "ir2", boolean_str[dump_flags.ir2_tbl],
01014                        "ir3", boolean_str[dump_flags.ir3_tbl],
01015                        "ir4", boolean_str[dump_flags.ir4_tbl]);
01016 
01017    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01018                        "mem_report", boolean_str[dump_flags.mem_report],
01019                        "mtrace", boolean_str[dump_flags.mtrace_info],
01020                        "names", boolean_str[dump_flags.name_tbls]);
01021 
01022    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01023                        "pdg", boolean_str[dump_flags.pdgcs],
01024                        "pdt", boolean_str[dump_flags.pdt_dump],
01025                        "sb", boolean_str[dump_flags.sb_tbl]);
01026 
01027    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01028                        "scp", boolean_str[dump_flags.scp_tbl],
01029                        "src", boolean_str[dump_flags.src_dmp],
01030                        "stderr", boolean_str[dump_flags.std_err]);
01031 
01032    fprintf(debug_file, "  %-17s = %-2s   %-18s = %-2s  %-18s = %-2s\n",
01033                        "stmt", boolean_str[dump_flags.stmt_dmp],
01034                        "sytb", boolean_str[dump_flags.sytb],
01035                        "typ", boolean_str[dump_flags.typ_tbl]);
01036 
01037    fprintf(debug_file, "\n\n%s Message Options %s \n\n",
01038                        "  ----------------------------- ",
01039                        "  ----------------------------- ");
01040 
01041    first        = TRUE;
01042 
01043    for (i = 0;  i < MAX_MSG_SIZE;  ++i) {
01044 
01045       if (message_suppress_tbl[i] != 0) {
01046 
01047          for (j = i * HOST_BITS_PER_WORD; j < (i+1) * HOST_BITS_PER_WORD; ++j) {
01048 
01049             if (GET_MESSAGE_TBL(message_suppress_tbl, j)) {
01050 
01051                if (!first) {
01052                   first = FALSE;
01053                   fprintf(debug_file, ",");
01054                }
01055                fprintf(debug_file, "  %d", j);
01056             }
01057          }
01058       }
01059 
01060       if (message_warning_tbl[i] != 0) {
01061 
01062          for (j = i * HOST_BITS_PER_WORD; j < (i+1) * HOST_BITS_PER_WORD; ++j) {
01063 
01064             if (GET_MESSAGE_TBL(message_warning_tbl, j)) {
01065 
01066                if (!first) {
01067                   first = FALSE;
01068                   fprintf(debug_file, ",");
01069                }
01070                fprintf(debug_file, "  W%d", j);
01071             }
01072          }
01073       }
01074 
01075       if (message_error_tbl[i] != 0) {
01076 
01077          for (j = i * HOST_BITS_PER_WORD; j < (i+1) * HOST_BITS_PER_WORD; ++j) {
01078 
01079             if (GET_MESSAGE_TBL(message_error_tbl, j)) {
01080 
01081                if (!first) {
01082                   first = FALSE;
01083                   fprintf(debug_file, ",");
01084                }
01085                fprintf(debug_file, "  E%d", j);
01086             }
01087          }
01088       }
01089    }
01090 
01091    putc ('\n', debug_file);
01092 
01093    putc ('\n', debug_file);
01094    fflush (debug_file);
01095    return;
01096 
01097 }  /* print_cmd_tbl */
01098 
01099 /******************************************************************************\
01100 |*                                                                            *|
01101 |* Description:                                                               *|
01102 |*      Using the scope table to find the start and stop of the local name    *|
01103 |*      table, print all the local name entries each scope.  Use dump_ln_ntry *|
01104 |*      and have it print all the complete attr entries for each local name.  *|
01105 |*                                                                            *|
01106 |* Input parameters:                                                          *|
01107 |*      NONE                                                                  *|
01108 |*                                                                            *|
01109 |* Output parameters:                                                         *|
01110 |*      NONE                                                                  *|
01111 |*                                                                            *|
01112 |* Returns:                                                                   *|
01113 |*      NOTHING                                                               *|
01114 |*                                                                            *|
01115 \******************************************************************************/
01116 
01117 void print_sytb (int            scp_idx,
01118                  boolean        print_all_scps,
01119                  boolean        dump_all)
01120 
01121 {
01122    int  al_idx;
01123    char header[60];
01124    int  ln_idx;
01125    int  save_scp_idx;
01126 
01127 
01128 PROCESS_SIBLING:
01129 
01130    if (scp_idx == INTRINSIC_SCP_IDX) {  /* Intrinsic scope */
01131       print_tbl_header("Intrinsic Symbol Table Dump");
01132    }
01133    else if (SCP_ATTR_IDX(scp_idx) != NULL_IDX) {
01134       header[0] = '\0';
01135       strcat(header, AT_OBJ_NAME_PTR(SCP_ATTR_IDX(scp_idx)));
01136       print_tbl_header(strcat(header, " Symbol Table Dump"));
01137    }
01138    else {
01139       print_tbl_header("Unnamed Symbol Table Dump");
01140    }
01141 
01142    for (ln_idx = SCP_LN_FW_IDX(scp_idx)+1; ln_idx < SCP_LN_LW_IDX(scp_idx);
01143                                                     ln_idx++) {
01144       fprintf(debug_file, "****************************************"
01145                           "****************************************\n");
01146       dump_ln_ntry(debug_file, ln_idx, dump_all);
01147    }
01148 
01149    al_idx = SCP_ATTR_LIST(scp_idx);
01150 
01151    while (al_idx != NULL_IDX) {
01152       fprintf(debug_file, "****************************************"
01153                           "****************************************\n");
01154       dump_at_ntry(debug_file, AL_ATTR_IDX(al_idx), dump_all);
01155       al_idx = AL_NEXT_IDX(al_idx);
01156    }
01157 
01158    fprintf(debug_file, "****************************************"
01159                        "****************************************\n");
01160 
01161    if (print_all_scps) {
01162 
01163       if (SCP_FIRST_CHILD_IDX(scp_idx) != NULL_IDX) {
01164          save_scp_idx   = scp_idx;
01165          scp_idx        = SCP_FIRST_CHILD_IDX(scp_idx);
01166          print_sytb(scp_idx, TRUE, TRUE);
01167          scp_idx        = save_scp_idx;
01168       }
01169 
01170       if (SCP_SIBLING_IDX(scp_idx) != NULL_IDX) {
01171          scp_idx        = SCP_SIBLING_IDX(scp_idx);
01172          goto PROCESS_SIBLING;
01173       }
01174 
01175 #if 0
01176     fprintf(debug_file, "**name pool***************\n");
01177     for(al_idx = 0; al_idx<=300;al_idx++)
01178       fprintf(debug_file,"%s\n",&name_pool[al_idx].name_char);
01179 #endif
01180    }
01181 
01182    return;
01183 
01184 }  /* print_sytb */
01185 
01186 /******************************************************************************\
01187 |*                                                                            *|
01188 |* Description:                                                               *|
01189 |*      Prints the compressed table.                                          *|
01190 |*                                                                            *|
01191 |* Input parameters:                                                          *|
01192 |*      loc name tbl index to start.                                          *|
01193 |*      loc name tbl index for end.                                           *|
01194 |*                                                                            *|
01195 |* Output parameters:                                                         *|
01196 |*      NONE                                                                  *|
01197 |*                                                                            *|
01198 |* Returns:                                                                   *|
01199 |*      NOTHING                                                               *|
01200 |*                                                                            *|
01201 \******************************************************************************/
01202 void print_compressed_sytb(int  ln_start,
01203                            int  ln_end)
01204 {
01205    int          ln_idx;
01206 
01207    print_tbl_header("Compressed Symbol Table");
01208 
01209    for (ln_idx = ln_start; ln_idx <= ln_end; ln_idx++) {
01210       dump_ln_ntry(debug_file, ln_idx, TRUE);  /* Print the attr too */
01211    }
01212 
01213    putc ('\n', debug_file);
01214    fflush (debug_file);
01215 
01216    return;
01217 
01218 }  /* print_compressed_sytb */
01219 
01220 /******************************************************************************\
01221 |*                                                                            *|
01222 |* Description:                                                               *|
01223 |*      The following set of utilities dump one entry to stderr.  There is    *|
01224 |*      one for each table.  Input is the table index to print.   These are   *|
01225 |*      external routines so they may be called from the debugger or inserted *|
01226 |*      in code as 'print' statements.                                        *|
01227 |*                                                                            *|
01228 |* Input parameters:                                                          *|
01229 |*      Index of table entry to print.                                        *|
01230 |*                                                                            *|
01231 |* Output parameters:                                                         *|
01232 |*      NONE                                                                  *|
01233 |*                                                                            *|
01234 |* Returns:                                                                   *|
01235 |*      NOTHING                                                               *|
01236 |*                                                                            *|
01237 \******************************************************************************/
01238 
01239 /******************************************************************************\
01240 |*                                                                            *|
01241 |* Attribute list table                                                       *|
01242 |*                                                                            *|
01243 \******************************************************************************/
01244 
01245 void    print_al (int   al_idx)
01246 
01247 {
01248    if (al_idx <= attr_list_tbl_idx) {
01249       dump_al_ntry(stderr, al_idx);
01250    }
01251    else {
01252       fprintf(stderr, "\n*FE90-ERROR* Invalid Attribute List Table index.\n");
01253    }
01254 
01255    return;
01256 
01257 }  /* print_al */
01258 
01259 /******************************************************************************\
01260 |*                                                                            *|
01261 |* Attribute Table                                                            *|
01262 |*                                                                            *|
01263 \******************************************************************************/
01264 
01265 void    print_at(int            at_idx)
01266 
01267 {
01268 
01269    if (at_idx <= attr_tbl_idx) {
01270       dump_at_ntry(stderr, at_idx, FALSE);
01271    }
01272    else {
01273       fprintf(stderr, "\n*FE90-ERROR* Invalid Attribute Table index.\n");
01274    }
01275 
01276    return;
01277 
01278 }  /* print_at */
01279 
01280 /******************************************************************************\
01281 |*                                                                            *|
01282 |* Attribute Table                                                            *|
01283 |*                                                                            *|
01284 \******************************************************************************/
01285 
01286 void    print_at_all(int                at_idx)
01287 
01288 {
01289    if (at_idx <= attr_tbl_idx) {
01290       dump_at_ntry(stderr, at_idx, TRUE);
01291    }
01292    else {
01293       fprintf(stderr, "\n*FE90-ERROR* Invalid Attribute Table index.\n");
01294    }
01295 
01296    return;
01297 
01298 }  /* print_at_all */
01299 
01300 /******************************************************************************\
01301 |*                                                                            *|
01302 |* Bounds table                                                               *|
01303 |*                                                                            *|
01304 \******************************************************************************/
01305 
01306 void print_bd (int      bd_idx)
01307 
01308 {
01309    if (bd_idx <= bounds_tbl_idx) {
01310       dump_bd_ntry(stderr, bd_idx);
01311    }
01312    else {
01313       fprintf(stderr, "\n*FE90-ERROR* Invalid bounds table index.\n");
01314    }
01315 
01316    return;
01317 
01318 }  /* print_bd */
01319 
01320 /******************************************************************************\
01321 |*                                                                            *|
01322 |* Block stack                                                                *|
01323 |*                                                                            *|
01324 \******************************************************************************/
01325 
01326 void    print_blk (int  blk_idx)
01327 
01328 {
01329    if (blk_idx <= blk_stk_idx) {
01330       dump_blk_ntry(stderr, blk_idx);
01331    }
01332    else {
01333       fprintf(stderr, "\n*FE90-ERROR* Invalid block stack index.\n");
01334    }
01335 
01336    return;
01337 
01338 }  /* print_blk */
01339 
01340 /******************************************************************************\
01341 |*                                                                            *|
01342 |* Constant table                                                             *|
01343 |*                                                                            *|
01344 \******************************************************************************/
01345 
01346 void    print_cn (int   cn_idx)
01347 
01348 {
01349    if (cn_idx <= const_tbl_idx) {
01350       dump_cn_ntry(stderr, cn_idx);
01351    }
01352    else {
01353       fprintf(stderr, "\n*FE90-ERROR* Invalid constant table index.\n");
01354    }
01355 
01356    return;
01357 
01358 }  /* print_cn */
01359 
01360 /******************************************************************************\
01361 |*                                                                            *|
01362 |* Equivalence Table                                                          *|
01363 |*                                                                            *|
01364 \******************************************************************************/
01365 
01366 void    print_eq (int   eq_idx)
01367 
01368 {
01369 
01370    if (eq_idx <= equiv_tbl_idx) {
01371       dump_eq_ntry(stderr, eq_idx);
01372    }
01373    else {
01374       fprintf(stderr, "\n*FE90-ERROR* Invalid equivalence table index.\n");
01375    }
01376 
01377    return;
01378 
01379 }  /* print_eq */
01380 
01381 /******************************************************************************\
01382 |*                                                                            *|
01383 |* file path table                                                            *|
01384 |*                                                                            *|
01385 \******************************************************************************/
01386 
01387 void    print_fp (int   fp_idx)
01388 
01389 {
01390    if (fp_idx <= file_path_tbl_idx) {
01391       dump_fp_ntry(stderr, fp_idx, FALSE);
01392    }
01393    else {
01394       fprintf(stderr, "\n*FE90-ERROR* Invalid file path table index.\n");
01395    }
01396 
01397    return;
01398 
01399 }  /* print_fp */
01400 
01401 /******************************************************************************\
01402 |*                                                                            *|
01403 |* Print a single list table entry.                                           *|
01404 |*                                                                            *|
01405 \******************************************************************************/
01406 
01407 void    print_il (int   il_idx)
01408 
01409 {
01410    if (il_idx <= ir_list_tbl_idx) {
01411       dump_il_ntry(stderr, il_idx);
01412    }
01413    else {
01414       fprintf(stderr, "\n*FE90-ERROR* Invalid ir list table index %d.\n", 
01415                       il_idx);
01416    }
01417 
01418    return;
01419 } 
01420 
01421 /******************************************************************************\
01422 |*                                                                            *|
01423 |* IR tree                                                                    *|
01424 |*                                                                            *|
01425 \******************************************************************************/
01426 
01427 void  print_ir (int     ir_idx)
01428 
01429 {
01430    if (ir_idx <= ir_tbl_idx) {
01431       dump_ir_ntry(stderr, ir_idx, 1);
01432    }
01433    else {
01434       fprintf(stderr, "\n*FE90-ERROR* Invalid ir table index.\n");
01435    }
01436 
01437    return;
01438 
01439 }  /* print_ir */
01440 
01441 /******************************************************************************\
01442 |*                                                                            *|
01443 |* Global attr table                                                          *|
01444 |*                                                                            *|
01445 \******************************************************************************/
01446 
01447 void    print_ga (int   ga_idx)
01448 
01449 {
01450    if (ga_idx <= global_attr_tbl_idx) {
01451       dump_ga_ntry(stderr, ga_idx);
01452    }
01453    else {
01454       fprintf(stderr, "\n*FE90-ERROR* Invalid global attr table index.\n");
01455    }
01456 
01457    return;
01458 
01459 }  /* print_ga */
01460 
01461 /******************************************************************************\
01462 |*                                                                            *|
01463 |* Global bounds table                                                        *|
01464 |*                                                                            *|
01465 \******************************************************************************/
01466 
01467 void    print_gb (int   gb_idx)
01468 
01469 {
01470    if (gb_idx <= global_bounds_tbl_idx) {
01471       dump_gb_ntry(stderr, gb_idx);
01472    }
01473    else {
01474       fprintf(stderr, "\n*FE90-ERROR* Invalid global bounds table index.\n");
01475    }
01476 
01477    return;
01478 
01479 }  /* print_gb */
01480 
01481 /******************************************************************************\
01482 |*                                                                            *|
01483 |* Global line table                                                          *|
01484 |*                                                                            *|
01485 \******************************************************************************/
01486 
01487 void    print_gl (int   gl_idx)
01488 
01489 {
01490    if (gl_idx <= global_line_tbl_idx) {
01491       dump_gl_ntry(stderr, gl_idx);
01492    }
01493    else {
01494       fprintf(stderr, "\n*FE90-ERROR* Invalid global name table index.\n");
01495    }
01496 
01497    return;
01498 
01499 }  /* print_gl */
01500 
01501 /******************************************************************************\
01502 |*                                                                            *|
01503 |* Global name table                                                          *|
01504 |*                                                                            *|
01505 \******************************************************************************/
01506 
01507 void    print_gn (int   gn_idx)
01508 
01509 {
01510    if (gn_idx <= global_name_tbl_idx) {
01511       dump_gn_ntry(stderr, gn_idx);
01512    }
01513    else {
01514       fprintf(stderr, "\n*FE90-ERROR* Invalid global name table index.\n");
01515    }
01516 
01517    return;
01518 
01519 }  /* print_gn */
01520 
01521 /******************************************************************************\
01522 |*                                                                            *|
01523 |* Global type table                                                          *|
01524 |*                                                                            *|
01525 \******************************************************************************/
01526 
01527 void    print_gt (int   gt_idx)
01528 
01529 {
01530    if (gt_idx <= global_type_tbl_idx) {
01531       dump_gt_ntry(stderr, gt_idx);
01532    }
01533    else {
01534       fprintf(stderr, "\n*FE90-ERROR* Invalid global type table index.\n");
01535    }
01536 
01537    return;
01538 
01539 }  /* print_gt */
01540 
01541 /******************************************************************************\
01542 |*                                                                            *|
01543 |* Hidden name table                                                          *|
01544 |*                                                                            *|
01545 \******************************************************************************/
01546 
01547 void    print_hn (int   hn_idx)
01548 {
01549 
01550    if (hn_idx <= hidden_name_tbl_idx) {
01551       dump_hn_ntry(stderr, hn_idx, FALSE);         /* Don't print attrs */
01552    }
01553    else {
01554       fprintf(stderr, "\n*FE90-ERROR* Invalid hidden name table index.\n");
01555    }
01556 
01557    return;
01558      
01559 }  /* print_hn */
01560 
01561 /******************************************************************************\
01562 |*                                                                            *|
01563 |* Local name table                                                           *|
01564 |*                                                                            *|
01565 \******************************************************************************/
01566 
01567 void print_ln (int      ln_idx)
01568 {
01569    if (ln_idx <= loc_name_tbl_idx) {
01570       dump_ln_ntry(stderr, ln_idx, FALSE);         /* Don't print attrs */
01571    }
01572    else {
01573       fprintf(stderr, "\n*FE90-ERROR* Invalid local name table index.\n");
01574    }
01575 
01576    return;
01577      
01578 }  /* print_ln */
01579 
01580 /******************************************************************************\
01581 |*                                                                            *|
01582 |* Local name table                                                           *|
01583 |*                                                                            *|
01584 \******************************************************************************/
01585 
01586 void print_lnr (int     ln_idx,
01587                 int     end_idx)
01588 {
01589    while (ln_idx <= end_idx) {
01590 
01591       if (ln_idx <= loc_name_tbl_idx) {
01592          dump_ln_ntry(stderr, ln_idx, FALSE);         /* Don't print attrs */
01593       }
01594       else {
01595          fprintf(stderr, "\n*FE90-ERROR* Invalid local name table index.\n");
01596       }
01597       ++ln_idx;
01598    }
01599 
01600    return;
01601      
01602 }  /* print_lnr */
01603 
01604 /******************************************************************************\
01605 |*                                                                            *|
01606 |* Module link table                                                          *|
01607 |*                                                                            *|
01608 \******************************************************************************/
01609 
01610 void    print_ml (int   ml_idx)
01611 
01612 {
01613    if (ml_idx <= mod_link_tbl_idx) {
01614       dump_ml_ntry(stderr, ml_idx);
01615    }
01616    else {
01617       fprintf(stderr, "\n*FE90-ERROR* Invalid module link table index.\n");
01618    }
01619 
01620    return;
01621      
01622 }  /* print_ml */
01623 
01624 /******************************************************************************\
01625 |*                                                                            *|
01626 |* Rename only table                                                          *|
01627 |*                                                                            *|
01628 \******************************************************************************/
01629 
01630 void print_ro (int      ro_idx)
01631 
01632 {
01633    if (ro_idx <= rename_only_tbl_idx) {
01634       dump_ro_ntry(stderr, ro_idx);
01635    }
01636    else {
01637       fprintf(stderr, "\n*FE90-ERROR* Invalid rename only table index.\n");
01638    }
01639 
01640    return;
01641 
01642 }  /* print_ro */
01643 
01644 /******************************************************************************\
01645 |*                                                                            *|
01646 |* Storage Block Table                                                        *|
01647 |*                                                                            *|
01648 \******************************************************************************/
01649 
01650 void    print_sb (int   sb_idx)
01651 
01652 {
01653    if (sb_idx <= stor_blk_tbl_idx) {
01654       dump_sb_ntry(stderr, sb_idx);
01655    }
01656    else {
01657       fprintf(stderr, "\n*FE90-ERROR* Invalid Storage Block Table index.\n");
01658    }
01659 
01660    return;
01661 
01662 }  /* print_sb */
01663 
01664 /******************************************************************************\
01665 |*                                                                            *|
01666 |* Scope table  (print_impl_tbl - if TRUE print implicit table)               *|
01667 |*                                                                            *|
01668 \******************************************************************************/
01669 
01670 void    print_scp(int           scp_idx,
01671                   boolean       print_impl_tbl)
01672 
01673 {
01674    if (scp_idx <= scp_tbl_idx) {
01675       dump_scp_ntry(stderr, scp_idx, 0, print_impl_tbl, FALSE);
01676    }
01677    else {
01678       fprintf(stderr, "\n*FE90-ERROR* Invalid scope table index.\n");
01679    }
01680 
01681    return;
01682 
01683 }  /* print_scp */
01684 
01685 /******************************************************************************\
01686 |*                                                                            *|
01687 |*      Print one statement and its IR.                                       *|
01688 |*                                                                            *|
01689 \******************************************************************************/
01690 
01691 void  print_sh (int     stmt_idx)
01692 
01693 {
01694    int          save_curr_stmt_sh_idx;
01695 
01696 
01697    if (stmt_idx <= sh_tbl_idx) {
01698       save_curr_stmt_sh_idx = curr_stmt_sh_idx;
01699       curr_stmt_sh_idx      = stmt_idx;
01700 
01701       dump_stmt_ntry(stderr, TRUE);  /* Print  IR for this statement */
01702 
01703       curr_stmt_sh_idx = save_curr_stmt_sh_idx;
01704    }
01705    else {
01706       fprintf(stderr, "\n*FE90-ERROR* Invalid statement header index.\n");
01707    }
01708 
01709    return;
01710 
01711 } /* print_sh */
01712 
01713 /******************************************************************************\
01714 |*                                                                            *|
01715 |* Secondary Name Table                                                       *|
01716 |*                                                                            *|
01717 \******************************************************************************/
01718 
01719 void    print_sn (int   sn_idx)
01720 
01721 {
01722    dump_sn_ntry(stderr, sn_idx);
01723 
01724    return;
01725 
01726 }  /* print_sn */
01727 
01728 /******************************************************************************\
01729 |*                                                                            *|
01730 |* Type table                                                                 *|
01731 |*                                                                            *|
01732 \******************************************************************************/
01733 
01734 void print_typ (int     type_idx)
01735 
01736 {
01737    dump_typ_ntry(stderr, type_idx);
01738 
01739    return;
01740 
01741 }  /* print_typ */
01742 
01743 
01744 /******************************************************************************\
01745 |*                                                                            *|
01746 |* Miscellaneous routines and utility routines.                               *|
01747 |*                                                                            *|
01748 \******************************************************************************/
01749 
01750 /******************************************************************************\
01751 |*                                                                            *|
01752 |* Input parameters:                                                          *|
01753 |*      address of internal dope vector.                                      *|
01754 |*                                                                            *|
01755 |* Output parameters:                                                         *|
01756 |*      NONE                                                                  *|
01757 |*                                                                            *|
01758 |* Returns:                                                                   *|
01759 |*      NOTHING                                                               *|
01760 |*                                                                            *|
01761 \******************************************************************************/
01762 
01763 void print_dv (int_dope_type    *dv,
01764                boolean          dump_it)
01765 
01766 {
01767    dump_dv(stderr, dv, dump_it);
01768 
01769    return;
01770 
01771 }  /* print_dv */
01772 
01773 /******************************************************************************\
01774 |*                                                                            *|
01775 |* Description:                                                               *|
01776 |*      Given the name of a local entity, this procedure prints a single      *|
01777 |*      Local Name Table entry to stderr.   Does not print the attr entry.    *|
01778 |*                                                                            *|
01779 |* Input parameters:                                                          *|
01780 |*      NONE                                                                  *|
01781 |*                                                                            *|
01782 |* Output parameters:                                                         *|
01783 |*      NONE                                                                  *|
01784 |*                                                                            *|
01785 |* Returns:                                                                   *|
01786 |*      NOTHING                                                               *|
01787 |*                                                                            *|
01788 \******************************************************************************/
01789 
01790 void print_ln_by_name (void)      
01791 
01792 {
01793    char         name_string[MAX_ID_LEN + 1];
01794    int          ln_tbl_idx;
01795 
01796 
01797    printf("Enter LOCAL name->");
01798    gets(name_string);
01799    build_fake_token(name_string);
01800 
01801    if (srch_sym_tbl(TOKEN_STR(fake_token), TOKEN_LEN(fake_token),
01802                                            &ln_tbl_idx) != NULL_IDX) {
01803       dump_ln_ntry(stderr, ln_tbl_idx, FALSE);
01804    }
01805    else {
01806       fprintf(stderr, "\n*FE90-ERROR* No such name in the current scope.");
01807    }
01808    return;
01809 
01810 }  /* print_ln_by_name */
01811 
01812 
01813 /******************************************************************************\
01814 |*                                                                            *|
01815 |* Description:                                                               *|
01816 |*      Given an entity name, this function prints the Attribute entry for    *|
01817 |*      the entity on standard output.                                        *|
01818 |*                                                                            *|
01819 |* Input parameters:                                                          *|
01820 |*      The entity's name.                                                    *|
01821 |*      NOTE:  This function currently only knows how to dump the attribute   *|
01822 |*             entry for a simple name.  It will need to be upgraded to break *|
01823 |*             down qualified names later.  The declaration for name_string   *|
01824 |*             will have to be expanded, the qualified name will have to be   *|
01825 |*             broken down, and srch_cpnt_name will have to be called to      *|
01826 |*             find the attribute entry for the rightmost component name.     *|
01827 |*                                                                            *|
01828 |* Output parameters:                                                         *|
01829 |*      NONE                                                                  *|
01830 |*                                                                            *|
01831 |* Returns:                                                                   *|
01832 |*      NOTHING                                                               *|
01833 |*                                                                            *|
01834 \******************************************************************************/
01835 
01836 void print_at_by_name(void)
01837 
01838 {
01839    int          attr_idx;
01840    int          ln_tbl_idx;
01841    char         name_string[MAX_ID_LEN + 1];
01842    char         reply;
01843 
01844    printf("Entity name->");
01845    gets(name_string);
01846    
01847    /* This is where the code should go to break down a qualified name.       */
01848 
01849    build_fake_token(name_string);
01850    attr_idx = srch_sym_tbl(TOKEN_STR(fake_token), TOKEN_LEN(fake_token),
01851                            &ln_tbl_idx);
01852 
01853    if (attr_idx != NULL_IDX) {
01854       dump_at_ntry(stderr, attr_idx, FALSE);
01855    }
01856    else {
01857       printf( 
01858            "\n*POSSIBLE FE90-ERROR* No such entity name in the local scope.\n");
01859       printf("Search host scope? (y) ");
01860       reply = getchar();
01861 
01862       if (reply == '\n'  ||  reply == 'y') {
01863 
01864          if (reply == 'y') {
01865             reply = getchar();    /* Get rid of newline char. */
01866          }
01867          attr_idx = srch_host_sym_tbl(TOKEN_STR(fake_token), 
01868                                       TOKEN_LEN(fake_token), 
01869                                       &ln_tbl_idx,
01870                                       TRUE);
01871 
01872          if (attr_idx != NULL_IDX) {
01873             dump_at_ntry(stderr, attr_idx, FALSE);
01874          }
01875          else {
01876             printf("\n*FE90-ERROR* No such entity name in the host either.\n");
01877          }
01878       }
01879       else {
01880          reply = getchar();       /* Get rid of newline char. */
01881       }
01882    }
01883 
01884    return;
01885 
01886 }  /* print_at_by_name */
01887 
01888 
01889 /******************************************************************************\
01890 |*                                                                            *|
01891 |* Description:                                                               *|
01892 |*      Given a common block or module name, this function prints the Storage *|
01893 |*      Block Table entry for the specified common block or module to stderr. *|
01894 |*                                                                            *|
01895 |* Input parameters:                                                          *|
01896 |*      The name of the common block or module.                               *|
01897 |*                                                                            *|
01898 |* Output parameters:                                                         *|
01899 |*      NONE                                                                  *|
01900 |*                                                                            *|
01901 |* Returns:                                                                   *|
01902 |*      NOTHING                                                               *|
01903 |*                                                                            *|
01904 \******************************************************************************/
01905 
01906 void print_sb_by_name (void)
01907 
01908 {
01909    int                  sb_idx;
01910    char                 name_string[MAX_ID_LEN + 1];
01911 
01912    printf("Enter common block or module name->");
01913    gets(name_string);
01914 
01915    if (strlen(name_string) > 0) {
01916       build_fake_token(name_string);
01917    }
01918    else {
01919       build_fake_token("//");
01920    }
01921 
01922    sb_idx = srch_stor_blk_tbl(TOKEN_STR(fake_token),
01923                               TOKEN_LEN(fake_token),
01924                               curr_scp_idx);
01925 
01926    if (sb_idx != NULL_IDX) {
01927       dump_sb_ntry(stderr, sb_idx);
01928    }
01929    else {
01930       fprintf(stderr,"\n*FE90-ERROR* No such common block or module name.\n");
01931    }
01932 
01933    return;
01934 
01935 }  /* print_sb_by_name */
01936 
01937 /******************************************************************************\
01938 |*                                                                            *|
01939 |* Description:                                                               *|
01940 |*      Prints an attr list to stderr.                                        *|
01941 |*                                                                            *|
01942 |* Input parameters:                                                          *|
01943 |*      Index of attribute list entry to start printing with.                 *|
01944 |*                                                                            *|
01945 |* Output parameters:                                                         *|
01946 |*      NONE                                                                  *|
01947 |*                                                                            *|
01948 |* Returns:                                                                   *|
01949 |*      NOTHING                                                               *|
01950 |*                                                                            *|
01951 \******************************************************************************/
01952 
01953 void print_al_list(FILE         *out_file,
01954                    int           al_idx)
01955 
01956 {
01957 
01958    while (al_idx != NULL_IDX) {
01959       dump_al_ntry(out_file, al_idx);
01960       al_idx = AL_NEXT_IDX(al_idx);
01961    }
01962 
01963    return;
01964 
01965 }  /* print_al_list */
01966 
01967 /******************************************************************************\
01968 |*                                                                            *|
01969 |* Description:                                                               *|
01970 |*      Prints the Secondary Name table entries that belong to the indexed    *|
01971 |*      entity to stderr.                                                     *|
01972 |*                                                                            *|
01973 |* Input parameters:                                                          *|
01974 |*      Index of Attribute entry that should have Secondary Name table        *|
01975 |*        entries associated with it.                                         *|
01976 |*                                                                            *|
01977 |* Output parameters:                                                         *|
01978 |*      NONE                                                                  *|
01979 |*                                                                            *|
01980 |* Returns:                                                                   *|
01981 |*      NOTHING                                                               *|
01982 |*                                                                            *|
01983 \******************************************************************************/
01984 
01985 void print_sn_list (int         attr_idx)
01986 
01987 {
01988    if (attr_idx > attr_tbl_idx) {
01989       fprintf(stderr, 
01990               "\n*FE90-ERROR* Attribute entry index [%d] is too large.\n",
01991               attr_idx);
01992     return;
01993    }
01994   
01995    /* Dummy arguments and keyword names for an explicit interface are in a  */
01996    /* in a contiguous grouping.  Procedure names in a generic or operator   */
01997    /* interface, namelist group members and component names are linked      */
01998    /* together (not necessarily contiguous).                                */
01999 
02000    if (AT_OBJ_CLASS(attr_idx) == Pgm_Unit  &&
02001        Pgm_Unknown < ATP_PGM_UNIT(attr_idx) < Program) {
02002       loop_thru_sn_ntries(stderr, attr_idx, FALSE);
02003    }
02004    else if (AT_OBJ_CLASS(attr_idx) == Interface ||
02005             AT_OBJ_CLASS(attr_idx) == Namelist_Grp ||
02006             AT_OBJ_CLASS(attr_idx) == Derived_Type) {
02007       chain_thru_sn_ntries(stderr, attr_idx, FALSE);
02008    }
02009    else {
02010       fprintf(stderr,
02011               "\n*FE90-ERROR* %s can not have Secondary Name table entries.\n",
02012               &name_pool[AT_NAME_IDX(attr_idx)].name_char);
02013    }
02014    return;
02015 
02016 }  /* print_sn_list */
02017     
02018 /******************************************************************************\
02019 |*                                                                            *|
02020 |* Description:                                                               *|
02021 |*      Prints just include entries from the file path table.                 *|
02022 |*                                                                            *|
02023 |* Input parameters:                                                          *|
02024 |*      NONE                                                                  *|
02025 |*                                                                            *|
02026 |* Output parameters:                                                         *|
02027 |*      NONE                                                                  *|
02028 |*                                                                            *|
02029 |* Returns:                                                                   *|
02030 |*      NOTHING                                                               *|
02031 |*                                                                            *|
02032 \******************************************************************************/
02033 
02034 void print_fp_includes (void)
02035 
02036 {
02037    int          fp_idx;
02038 
02039    fp_idx = include_path_idx;
02040 
02041    while (fp_idx != NULL_IDX) {
02042       fprintf(debug_file, "%4s%-s\n", " ", FP_NAME_PTR(fp_idx));
02043 
02044       fp_idx = FP_NEXT_FILE_IDX(fp_idx);
02045    }
02046 
02047    fflush(debug_file);
02048        
02049    return;
02050 
02051 }  /* print_fp_includes */
02052 
02053 
02054 /******************************************************************************\
02055 |*                                                                            *|
02056 |* Description:                                                               *|
02057 |*      Prints just the name field of an Attr entry.  Useful when you know    *|
02058 |*      the index of an Attr and you just want to know what identifier the    *|
02059 |*      Attr is for.                                                          *|
02060 |*                                                                            *|
02061 |* Input parameters:                                                          *|
02062 |*      idx : the Attr index                                                  *|
02063 |*                                                                            *|
02064 |* Output parameters:                                                         *|
02065 |*      NONE                                                                  *|
02066 |*                                                                            *|
02067 |* Returns:                                                                   *|
02068 |*      NOTHING                                                               *|
02069 |*                                                                            *|
02070 \******************************************************************************/
02071 void  print_name(int   idx)
02072 {
02073 
02074    fprintf(stderr, "%d is %s\n", idx, AT_OBJ_NAME_PTR(idx));
02075 
02076    return;
02077 
02078 } /* print_name */
02079 
02080 /******************************************************************************\
02081 |*                                                                            *|
02082 |* Description:                                                               *|
02083 |*      Loops through a contiguous set of Secondary Name table entries and    *|
02084 |*      writes them to stderr or a dump file.                                 *|
02085 |*                                                                            *|
02086 |* Input parameters:                                                          *|
02087 |*    - A pointer to the file to which the output is to be sent.              *|
02088 |*    - Index of Attribute entry that should have Secondary Name table        *|
02089 |*        entries associated with it.                                         *|
02090 |*    - A flag that indicates whether or not the Attribute entry for the      *|
02091 |*        Secondary Name table item should be output.                         *|
02092 |*                                                                            *|
02093 |* Output parameters:                                                         *|
02094 |*      NONE                                                                  *|
02095 |*                                                                            *|
02096 |* Returns:                                                                   *|
02097 |*      NOTHING                                                               *|
02098 |*                                                                            *|
02099 \******************************************************************************/
02100 
02101 static void loop_thru_sn_ntries (FILE           *out_file,
02102                                  int            attr_idx,
02103                                  boolean        output_attr)
02104 
02105 {
02106    int          count;
02107    int          first_idx;
02108    int          i;
02109 
02110 
02111    if (AT_OBJ_CLASS(attr_idx) == Pgm_Unit) {
02112       first_idx = ATP_FIRST_IDX(attr_idx);
02113       count     = ATP_NUM_DARGS(attr_idx);
02114 
02115       if (first_idx == NULL_IDX) {
02116          fprintf(out_file, "\n  %s\n",
02117                  "  ** No Dummy Arguments - ATP_FIRST_IDX = 0.");
02118          return;
02119       }
02120    }
02121    else {
02122       first_idx = ATP_FIRST_IDX(attr_idx);
02123       count     = ATP_NUM_DARGS(attr_idx);
02124 
02125       if (first_idx == NULL_IDX) {
02126          fprintf(out_file, "\n  %s\n",
02127                  "  ** No Dummy Arguments - ATP_FIRST_IDX = 0.");
02128          return;
02129       }
02130    }
02131 
02132    fprintf(out_file, "\n  %s %s:\n\n",
02133                      "Dummy Arguments for",
02134                      &name_pool[AT_NAME_IDX(attr_idx)].name_char);
02135 
02136    for (i = first_idx;
02137         i < (first_idx + count);
02138         i++) {
02139  
02140       dump_sn_ntry(out_file, i);
02141 
02142       if (output_attr) {
02143          putc('\n', out_file);
02144          dump_at_ntry(out_file, SN_ATTR_IDX(i), FALSE);
02145       }
02146       else if (AT_OBJ_CLASS(SN_ATTR_IDX(i)) == Data_Obj &&
02147                ATD_CLASS(SN_ATTR_IDX(i)) == Dummy_Argument) {
02148 
02149          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
02150                 "ATD_ARRAY_IDX", ATD_ARRAY_IDX(SN_ATTR_IDX(i)),
02151                 "ATD_POINTER", boolean_str[ATD_POINTER(SN_ATTR_IDX(i))],
02152                 "ATD_TYPE_IDX", ATD_TYPE_IDX(SN_ATTR_IDX(i)));
02153 
02154 # ifdef COARRAY_FORTRAN
02155          fprintf(out_file, "  %-16s= %-7d \n",
02156                 "ATD_PE_ARRAY_IDX", ATD_PE_ARRAY_IDX(SN_ATTR_IDX(i)));
02157 # endif
02158 
02159 
02160          putc('\n', out_file);
02161       }
02162       else if (AT_OBJ_CLASS(SN_ATTR_IDX(i)) == Pgm_Unit &&
02163                ATP_PROC(SN_ATTR_IDX(i)) == Dummy_Proc) {
02164          fprintf(out_file, "  %-25s\n", "Dummy_Proc");
02165          putc('\n', out_file);
02166       }
02167       else {
02168          putc('\n', out_file);
02169       }
02170    }
02171 
02172    fflush(out_file);
02173 
02174    return;
02175 
02176 }  /* loop_thru_sn_ntries */
02177 
02178 /******************************************************************************\
02179 |*                                                                            *|
02180 |* Description:                                                               *|
02181 |*      Chains through a set of Secondary Name table entries using            *|
02182 |*      SN_SIBLING_LINK and writes them to stderr or a dump file.             *|
02183 |*                                                                            *|
02184 |* Input parameters:                                                          *|
02185 |*    - A pointer to the file to which the output is to be sent.              *|
02186 |*    - Index of Attribute entry that should have Secondary Name table        *|
02187 |*        entries associated with it.                                         *|
02188 |*    - A flag that indicates whether or not the Attribute entry for the      *|
02189 |*        Secondary Name table item should be output.                         *|
02190 |*                                                                            *|
02191 |* Output parameters:                                                         *|
02192 |*      NONE                                                                  *|
02193 |*                                                                            *|
02194 |* Returns:                                                                   *|
02195 |*      NOTHING                                                               *|
02196 |*                                                                            *|
02197 \******************************************************************************/
02198 
02199 static void chain_thru_sn_ntries (FILE          *out_file,
02200                                   int            attr_idx,
02201                                   boolean        output_attr)
02202                                  
02203 {
02204    char         conv_str[80];
02205    int          first_idx;
02206    int          i;
02207    int          idx;
02208    char         str[80];
02209 
02210 
02211 
02212    if (AT_OBJ_CLASS(attr_idx) == Derived_Type) {
02213       first_idx = ATT_FIRST_CPNT_IDX(attr_idx);
02214 
02215       if (first_idx == NULL_IDX) {
02216          fprintf(out_file, "\n  %s\n",
02217                  "** No Secondary Name table entries - ATT_FIRST_CPNT_IDX = 0");
02218          return;
02219       }
02220       fprintf(out_file, "\n  %s %s:\n\n",
02221                         "Component entries for",
02222                         &name_pool[AT_NAME_IDX(attr_idx)].name_char);
02223    }
02224    else if (AT_OBJ_CLASS(attr_idx) == Interface) {
02225       first_idx = ATI_FIRST_SPECIFIC_IDX(attr_idx);
02226 
02227       if (first_idx == NULL_IDX) {
02228          fprintf(out_file, "\n  %s\n",
02229              "** No Secondary Name table entries - ATI_FIRST_SPECIFIC_IDX = 0");
02230          return;
02231       }
02232       fprintf(out_file, "\n  %s %s:\n\n",
02233                         "Interface bodies for",
02234                         &name_pool[AT_NAME_IDX(attr_idx)].name_char);
02235    }
02236    else if (AT_OBJ_CLASS(attr_idx) == Namelist_Grp) {
02237       first_idx = ATN_FIRST_NAMELIST_IDX(attr_idx);
02238 
02239       if (first_idx == NULL_IDX) {
02240          fprintf(out_file, "\n  %s\n",
02241             " ** No Secondary Name table entries - ATN_FIRST_NAMELIST_IDX = 0");
02242          return;
02243       }
02244       fprintf(out_file, "\n  %s %s:\n\n",
02245                         "Namelist objects for",
02246                         &name_pool[AT_NAME_IDX(attr_idx)].name_char);
02247    }
02248    else {
02249       fprintf(out_file, "\n  %s %s:\n\n",
02250                         "Invalid attribute entry ",
02251                         &name_pool[AT_NAME_IDX(attr_idx)].name_char);
02252       return;
02253    }
02254 
02255    for (i = first_idx;  i != NULL_IDX;  i = SN_SIBLING_LINK(i)) {
02256       dump_sn_ntry(out_file, i);
02257 
02258       if (output_attr) {
02259          putc('\n', out_file);
02260          dump_at_ntry(out_file, SN_ATTR_IDX(i), FALSE);
02261 
02262       }
02263       else if (AT_OBJ_CLASS(attr_idx) == Interface &&
02264                AT_OBJ_CLASS(SN_ATTR_IDX(i)) == Pgm_Unit) {
02265 
02266          fprintf(out_file, "  %-25s %-16s= %-7d %-16s= %-8d\n",
02267                 atp_pgm_unit_str[ATP_PGM_UNIT(SN_ATTR_IDX(i))],
02268                 "ATP_FIRST_IDX", ATP_FIRST_IDX(SN_ATTR_IDX(i)),
02269                 "ATP_NUM_DARGS", ATP_NUM_DARGS(SN_ATTR_IDX(i)));
02270 
02271          if (ATP_PGM_UNIT(SN_ATTR_IDX(i)) == Function) {
02272             idx = ATP_RSLT_IDX(SN_ATTR_IDX(i));
02273             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
02274                    "ATD_ARRAY_IDX", ATD_ARRAY_IDX(idx),
02275                    "ATD_POINTER", boolean_str[ATD_POINTER(idx)],
02276                    "ATD_TYPE_IDX", ATD_TYPE_IDX(idx));
02277          }
02278 
02279          if (ATP_FIRST_IDX(SN_ATTR_IDX(i)) != NULL_IDX) {
02280             loop_thru_sn_ntries(out_file, SN_ATTR_IDX(i), FALSE);
02281          }
02282 
02283          putc('\n', out_file);
02284       }
02285       else if (AT_OBJ_CLASS(SN_ATTR_IDX(i)) == Data_Obj &&
02286                ATD_CLASS(SN_ATTR_IDX(i)) == Struct_Component) {
02287 
02288          if (ATD_OFFSET_FLD(SN_ATTR_IDX(i)) == CN_Tbl_Idx ||
02289                 ATD_OFFSET_FLD(SN_ATTR_IDX(i)) == NO_Tbl_Idx) {
02290             sprintf(str, "(%10s)", convert_to_string(
02291                          &CN_CONST(ATD_CPNT_OFFSET_IDX(SN_ATTR_IDX(i))),
02292                          CN_TYPE_IDX(ATD_CPNT_OFFSET_IDX(SN_ATTR_IDX(i))),
02293                          conv_str));
02294          }
02295          else if (ATD_OFFSET_FLD(SN_ATTR_IDX(i)) == AT_Tbl_Idx) {
02296             sprintf(str, "(%10s)", 
02297                          AT_OBJ_NAME_PTR(ATD_CPNT_OFFSET_IDX(SN_ATTR_IDX(i))));
02298          }
02299          else {
02300             sprintf(str,"%12s", " ");
02301          }
02302 
02303 
02304          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-7s\n",
02305                  "ATD_ALIGNMENT", align_str[ATD_ALIGNMENT(SN_ATTR_IDX(i))],
02306                 "ATD_ARRAY_IDX", ATD_ARRAY_IDX(SN_ATTR_IDX(i)),
02307                 "AT_DCL_ERR", boolean_str[AT_DCL_ERR(SN_ATTR_IDX(i))]);
02308 
02309          print_fld_idx(out_file, "ATD_CPNT_OFFSET_",
02310                        ATD_OFFSET_FLD(SN_ATTR_IDX(i)),
02311                        ATD_CPNT_OFFSET_IDX(SN_ATTR_IDX(i)));
02312 
02313          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s \n",
02314                 "ATD_IM_A_DOPE", boolean_str[ATD_IM_A_DOPE(SN_ATTR_IDX(i))],
02315                 "ATD_POINTER", boolean_str[ATD_POINTER(SN_ATTR_IDX(i))]);
02316 
02317          fprintf(out_file, "  %-16s= %-7d %-s\n",
02318                      "ATD_TYPE_IDX", ATD_TYPE_IDX(SN_ATTR_IDX(i)),
02319                       print_type_f(ATD_TYPE_IDX(SN_ATTR_IDX(i))));
02320 
02321          if (ATD_CPNT_INIT_IDX(SN_ATTR_IDX(i)) != NULL_IDX) {
02322             print_fld_idx(out_file, "ATD_CPNT_INIT_ID",
02323                           (fld_type) ATD_FLD(SN_ATTR_IDX(i)),
02324                           ATD_CPNT_INIT_IDX(SN_ATTR_IDX(i)));
02325 
02326             if (ATD_FLD(SN_ATTR_IDX(i)) == IR_Tbl_Idx) {
02327                dump_ir_ntry(out_file, ATD_CPNT_INIT_IDX(SN_ATTR_IDX(i)), 5);
02328             }
02329             else if (ATD_FLD(SN_ATTR_IDX(i)) == CN_Tbl_Idx) {
02330                dump_cn_ntry(out_file, ATD_CPNT_INIT_IDX(SN_ATTR_IDX(i)));
02331             }
02332          }
02333 
02334 
02335          putc('\n', out_file);
02336       }
02337    }
02338 
02339    fflush(out_file);
02340 
02341    return;
02342 
02343 }  /* chain_thru_sn_ntries */
02344 
02345 
02346 /******************************************************************************\
02347 |*                                                                            *|
02348 |* Description:                                                               *|
02349 |*      This function builds a fake token which may be used as an actual      *|
02350 |*      argument to a symbol table search function.  This function is         *|
02351 |*      typically called by the routines that look up items in the symbol     *|
02352 |*      table by their names (rather than by an index into a table).          *|
02353 |*                                                                            *|
02354 |* Input parameters:                                                          *|
02355 |*      A string containing the name of the item to be found.                 *|
02356 |*                                                                            *|
02357 |* Output parameters:                                                         *|
02358 |*      NONE                                                                  *|
02359 |*                                                                            *|
02360 |* Returns:                                                                   *|
02361 |*      NOTHING                                                               *|
02362 |*                                                                            *|
02363 |* Note:  This function builds the fake token in the file-global structure    *|
02364 |*        fake_token.                                                         *|
02365 |*                                                                            *|
02366 \******************************************************************************/
02367 
02368 static void build_fake_token (char     *name_string)
02369 
02370 {
02371    int          i;
02372    int          len;
02373 
02374 
02375    /* Initialize the token string to all zeroes so the long word search  */
02376    /* used by the search routines will work correctly.                   */
02377 
02378    len  = strlen(name_string);
02379    CREATE_ID(TOKEN_ID(fake_token), name_string, len);
02380 
02381    TOKEN_LEN(fake_token) = len;
02382 
02383    for (i = 0;  i < len;  i++) {
02384       TOKEN_STR(fake_token)[i] = toupper(TOKEN_STR(fake_token)[i]);
02385    }
02386 
02387    return;
02388 
02389 }  /* build_fake_token */
02390 
02391 
02392 /******************************************************************************\
02393 |*                                                                            *|
02394 |* Description:                                                               *|
02395 |*      Used to trace entry and exit into a function.                         *|
02396 |*                                                                            *|
02397 |* Input parameters:                                                          *|
02398 |*      NONE                                                                  *|
02399 |*                                                                            *|
02400 |* Output parameters:                                                         *|
02401 |*      NONE                                                                  *|
02402 |*                                                                            *|
02403 |* Returns:                                                                   *|
02404 |*      NOTHING                                                               *|
02405 |*                                                                            *|
02406 \******************************************************************************/
02407 
02408 void dump_func_trace_info (trace_type    trace,
02409                            char         *func_name,
02410                            char         *info)
02411 {
02412 
02413    if (trace_file == NULL) {
02414       trace_file = fopen (trace_file_name, "w");
02415       
02416       if (trace_file == NULL) {
02417          PRINTMSG(1, 17, Error, 0, trace_file_name);
02418          exit_compiler(RC_USER_ERROR);
02419       }
02420 
02421       fprintf (trace_file, "\nTRACE DUMP OF PROGRAM %s:\n\n", src_file);
02422    }
02423 
02424    dump_trace_info(trace_file, trace, func_name, info);
02425 
02426    return;
02427 
02428 }  /* dump_func_trace_info */
02429 
02430 
02431 /******************************************************************************\
02432 |*                                                                            *|
02433 |* Description:                                                               *|
02434 |*      Used to output a variety of information to the screen, the dump file, *|
02435 |*      or the trace file.                                                    *|
02436 |*                                                                            *|
02437 |* Input parameters:                                                          *|
02438 |*      NONE                                                                  *|
02439 |*                                                                            *|
02440 |* Output parameters:                                                         *|
02441 |*      NONE                                                                  *|
02442 |*                                                                            *|
02443 |* Returns:                                                                   *|
02444 |*      NOTHING                                                               *|
02445 |*                                                                            *|
02446 \******************************************************************************/
02447 
02448 static void dump_trace_info (FILE         *out_file,
02449                              trace_type    trace,
02450                              char         *func_name,
02451                              char         *info)
02452 {
02453 
02454    int   idx;
02455    char *indent_str;
02456 
02457 
02458    switch (trace) {
02459 
02460       case Func_Entry:
02461       case Func_Exit:
02462          if (trace == Func_Exit) { 
02463             trace_indent -= trace_indent_len;
02464 
02465             if (trace_indent < 0) {
02466                trace_indent = 0;
02467             }
02468          }
02469 
02470          indent_str = (char *) malloc (trace_indent+1);
02471 
02472          for (idx = 0;  idx < trace_indent;  idx++) {
02473             indent_str[idx] = (idx % trace_indent_len  ==  0)  ?  '|'  :  BLANK;
02474          }
02475 
02476          indent_str[idx] = NULL_CHAR;
02477 
02478          if (trace == Func_Entry) { 
02479             fprintf (out_file, "%sIN  %s", indent_str, func_name);
02480             trace_indent += trace_indent_len;
02481          } 
02482          else { 
02483             fprintf (out_file, "%sOUT %s", indent_str, func_name);
02484          }
02485          if (info == NULL) {
02486             putc (NEWLINE, out_file);
02487          }
02488          else {
02489             fprintf (out_file, " (%s)\n", info);
02490          }
02491 
02492          free (indent_str);
02493          indent_str = NULL;
02494          break;
02495 
02496       case Syntax_Pass:
02497          fprintf(out_file, "\n> > > > > > > > > >   B e g i n   S y n t a x "
02498                            "  P a s s   < < < < < < < < < <\n\n");
02499          trace_indent = 0;
02500          break;
02501 
02502       case Semantics_Pass:
02503          fprintf(out_file, "\n> > > > > > > >   B e g i n   S e m a n t i c s"
02504                            "   P a s s   < < < < < < < <\n\n");
02505          trace_indent = 0;
02506          break;
02507 
02508       case PU_Start:
02509          if (info == NULL) {
02510             fprintf (out_file, "\n\n# NEW PROGRAM UNIT ########################"
02511                                "####################################\n");
02512          }
02513          else {
02514             fprintf (out_file, "\n\n# NEW PROGRAM UNIT # %s ##################"
02515                                "#######\n",
02516                                AT_OBJ_NAME_PTR(SCP_ATTR_IDX(curr_scp_idx)));
02517 
02518             if (SCP_IN_ERR(curr_scp_idx)) {
02519                fprintf (out_file,
02520                         "# # #  SCP entry is marked in error  # # #\n");
02521             }
02522          }
02523 
02524          break;
02525 
02526       case Stmt_Start:
02527          if (info == NULL) {
02528             fprintf (out_file, "\n- NEW STMT ---------------------------"
02529                                "-----------------------------------------\n");
02530          }
02531          else {
02532             fprintf (out_file, "\n- %s%s - %d %s-------------------------"
02533                                "-------------------------\n",
02534                                (SH_COMPILER_GEN(curr_stmt_sh_idx)) ? "CG " : "",
02535                                stmt_type_str[SH_STMT_TYPE(curr_stmt_sh_idx)],
02536                                SH_GLB_LINE(curr_stmt_sh_idx),
02537                                (SH_P2_SKIP_ME(curr_stmt_sh_idx)) ? "SKIP ME " :
02538                                                                    "--------");
02539 
02540             if (SH_ERR_FLG(curr_stmt_sh_idx)) {
02541                fprintf (out_file,
02542                         "\n* * *  Stmt Header is marked in error  * * *\n");
02543             }
02544          }
02545 
02546          break;
02547 
02548    }  /* switch */
02549 
02550    return;
02551 
02552 }  /* dump_trace_info */
02553 
02554 
02555 /******************************************************************************\
02556 |*                                                                            *|
02557 |* Description:                                                               *|
02558 |*      Used to trace memory usage.                                           *|
02559 |*                                                                            *|
02560 |* Input parameters:                                                          *|
02561 |*      NONE                                                                  *|
02562 |*                                                                            *|
02563 |* Output parameters:                                                         *|
02564 |*      NONE                                                                  *|
02565 |*                                                                            *|
02566 |* Returns:                                                                   *|
02567 |*      NOTHING                                                               *|
02568 |*                                                                            *|
02569 \******************************************************************************/
02570 
02571 void dump_mem_trace_info (trace_type     trace,
02572                           char          *struct_name,
02573                           void          *new_struct_ptr,
02574                           void          *old_struct_ptr,
02575                           long           struct_bsize_or_num_used,
02576                           int            num_entries)
02577 {
02578    int   idx;
02579    char *indent_str     = NULL;
02580 
02581 
02582    if (trace_file == NULL) {
02583       trace_file = fopen (trace_file_name, "w");
02584       
02585       if (trace_file == NULL) {
02586          PRINTMSG(1, 17, Error, 0, trace_file_name);
02587          exit_compiler(RC_USER_ERROR);
02588       }
02589 
02590       fprintf (trace_file, "\nTRACE DUMP OF PROGRAM %s:\n\n", src_file);
02591    }
02592 
02593    if (trace_indent > 0) {
02594       indent_str = (char *) malloc (trace_indent+1);
02595 
02596       for (idx = 0;  idx < trace_indent;  idx++) {
02597          indent_str[idx] = (idx % trace_indent_len  ==  0)  ?  '|'  :  BLANK;
02598       }
02599 
02600       indent_str[idx] = NULL_CHAR;
02601 
02602       fprintf (trace_file, "%s", indent_str);
02603    }
02604 
02605    switch (trace) {
02606       case Mem_Alloc:
02607          fprintf (trace_file, "ALLOC           %s (%#o) BSIZE=%ld(%d ENTRIES)\n",
02608                               struct_name, (uint) new_struct_ptr,
02609                               struct_bsize_or_num_used, num_entries);
02610          break;
02611 
02612       case Mem_Realloc:
02613          if (new_struct_ptr == old_struct_ptr) {
02614             fprintf (trace_file, "REALLOC      %s (%#o) BSIZE=%ld(%d ENTRIES)\n",
02615                                  struct_name, (uint) new_struct_ptr,
02616                                  struct_bsize_or_num_used, num_entries);
02617          }
02618          else {                 /* realloced with move */
02619             fprintf (trace_file, "REALLOC/MOVE %s (%#o->%#o) "
02620                                  "BSIZE=%ld(%d ENTRIES)\n",
02621                                  struct_name, (uint) old_struct_ptr, (uint) new_struct_ptr,
02622                                  struct_bsize_or_num_used, num_entries);
02623          }
02624          break;
02625 
02626       case Mem_Free:
02627          fprintf (trace_file, "FREE         %s (%#o) (%d ENTRIES) "
02628                               "(%ld USED ENTRIES)\n", 
02629                               struct_name,
02630                               (uint) new_struct_ptr,
02631                               num_entries,
02632                               struct_bsize_or_num_used);
02633          break;
02634 
02635       case Mem_Compress:
02636          fprintf (trace_file, "COMPRESS     %s (%ld BEFORE ENTRIES) "
02637                               "(%d AFTER ENTRIES)\n", 
02638                               struct_name,
02639                               struct_bsize_or_num_used,
02640                               num_entries);
02641          break;
02642    }  /* switch */
02643 
02644    if (indent_str != NULL) {
02645       free (indent_str);
02646       indent_str = NULL;
02647    }
02648 
02649    return;
02650 
02651 }  /* dump_mem_trace_info */
02652 
02653 /******************************************************************************\
02654 |*                                                                            *|
02655 |* Description:                                                               *|
02656 |*                                                                            *|
02657 |* Input parameters:                                                          *|
02658 |*      NONE                                                                  *|
02659 |*                                                                            *|
02660 |* Output parameters:                                                         *|
02661 |*      NONE                                                                  *|
02662 |*                                                                            *|
02663 |* Returns:                                                                   *|
02664 |*      NOTHING                                                               *|
02665 |*                                                                            *|
02666 \******************************************************************************/
02667 
02668 void    print_mem_usage_report(char     *name,
02669                                 int      final_size,
02670                                 int      largest_idx)
02671  
02672 {
02673 
02674    static       boolean         first_call      = TRUE;
02675 
02676    print_tbl_header("Memory Report");
02677 
02678    if (first_call == TRUE) {
02679       first_call = FALSE;
02680 
02681       /* Dump initial size and increment for each table. */
02682 
02683       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02684                            "attr_list_tbl",
02685                            "init size", attr_list_tbl_init_size,
02686                            "increment", attr_list_tbl_inc,
02687                            "num words", attr_list_tbl_num_wds);
02688       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02689                            "attr_tbl",
02690                            "init size", attr_tbl_init_size,
02691                            "increment", attr_tbl_inc,
02692                            "num words", attr_tbl_num_wds);
02693       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02694                            "blk_stk", 
02695                            "init size", blk_stk_init_size,
02696                            "increment", blk_stk_inc,
02697                            "num words", blk_stk_num_wds);
02698       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02699                            "bounds_tbl",
02700                            "init size", bounds_tbl_init_size,
02701                            "increment", bounds_tbl_inc,
02702                            "num words", bounds_tbl_num_wds);
02703       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02704                            "const_tbl",
02705                            "init size", const_tbl_init_size,
02706                            "increment", const_tbl_inc,
02707                            "num words", const_tbl_num_wds);
02708       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02709                            "const_pool",
02710                            "init size", const_pool_init_size,
02711                            "increment", const_pool_inc,
02712                            "num words", const_pool_num_wds);
02713       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02714                            "equiv_tbl",
02715                            "init size", equiv_tbl_init_size,
02716                            "increment", equiv_tbl_inc,
02717                            "num words", equiv_tbl_num_wds);
02718       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02719                            "file_path_tbl",
02720                            "init size", file_path_tbl_init_size,
02721                            "increment", file_path_tbl_inc,
02722                            "num words", file_path_tbl_num_wds);
02723       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02724                            "global_line_tbl",
02725                            "init size", global_line_tbl_init_size,
02726                            "increment", global_line_tbl_inc,
02727                            "num words", global_line_tbl_num_wds);
02728       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02729                            "global_name_tbl",
02730                            "init size", global_name_tbl_init_size,
02731                            "increment", global_name_tbl_inc,
02732                            "num words", global_name_tbl_num_wds);
02733       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02734                            "hidden_name_tbl",
02735                            "init size", hidden_name_tbl_init_size,
02736                            "increment", hidden_name_tbl_inc,
02737                            "num words", hidden_name_tbl_num_wds);
02738       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02739                            "ir_tbl",
02740                            "init size", ir_tbl_init_size,
02741                            "increment", ir_tbl_inc,
02742                            "num words", ir_tbl_num_wds);
02743       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02744                            "ir_list_tbl",
02745                            "init size", ir_list_tbl_init_size,
02746                            "increment", ir_list_tbl_inc,
02747                            "num words", ir_list_tbl_num_wds);
02748       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02749                            "loc_name_tbl",
02750                            "init size", loc_name_tbl_init_size,
02751                            "increment", loc_name_tbl_inc,
02752                            "num words", loc_name_tbl_num_wds);
02753       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02754                            "mod_link_tbl",
02755                            "init size", mod_link_tbl_init_size,
02756                            "increment", mod_link_tbl_inc,
02757                            "num words", mod_link_tbl_num_wds);
02758       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02759                            "name_pool",
02760                            "init size", name_pool_init_size,
02761                            "increment", name_pool_inc,
02762                            "num words", name_pool_num_wds);
02763       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02764                            "rename_only_tbl",
02765                            "init size", rename_only_tbl_init_size,
02766                            "increment", rename_only_tbl_inc,
02767                            "num words", rename_only_tbl_num_wds);
02768       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02769                            "scp_tbl",
02770                            "init size", scp_tbl_init_size,
02771                            "increment", scp_tbl_inc,
02772                            "num words", scp_tbl_num_wds);
02773       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02774                            "sec_name_tbl",
02775                            "init size", sec_name_tbl_init_size,
02776                            "increment", sec_name_tbl_inc,
02777                            "num words", sec_name_tbl_num_wds);
02778       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02779                            "sh_tbl",
02780                            "init size", sh_tbl_init_size,
02781                            "increment", sh_tbl_inc,
02782                            "num words", sh_tbl_num_wds);
02783       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02784                            "stor_blk_tbl",
02785                            "init size", stor_blk_tbl_init_size,
02786                            "increment", stor_blk_tbl_inc,
02787                            "num words", stor_blk_tbl_num_wds);
02788       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02789                            "str_pool",
02790                            "init size", str_pool_init_size,
02791                            "increment", str_pool_inc,
02792                            "num words", str_pool_num_wds);
02793       fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d  %-9s= %-7d\n",
02794                            "type_tbl",
02795                            "init size", type_tbl_init_size,
02796                            "increment", type_tbl_inc,
02797                            "num words", type_tbl_num_wds);
02798       print_src_input_tbls();
02799    }
02800 
02801 
02802    fprintf (debug_file, "%-20s  %-9s= %-8d  %-9s= %-6d\n",
02803                         name,
02804                         "finalsize", final_size,
02805                         "large idx", largest_idx);
02806 
02807    fflush (debug_file);
02808    return;
02809 
02810 }  /* print_mem_usage_report */
02811 
02812 
02813 /******************************************************************************\
02814 |*                                                                            *|
02815 |* Description:                                                               *|
02816 |*      Print the defines that are set in this compiler.                      *|
02817 |*                                                                            *|
02818 |* Input parameters:                                                          *|
02819 |*      NONE                                                                  *|
02820 |*                                                                            *|
02821 |* Output parameters:                                                         *|
02822 |*      NONE                                                                  *|
02823 |*                                                                            *|
02824 |* Returns:                                                                   *|
02825 |*      NOTHING                                                               *|
02826 |*                                                                            *|
02827 \******************************************************************************/
02828 
02829 void    print_defines(void)
02830 
02831 {
02832 
02833    print_tbl_header("Compiler Defines Dump");
02834 
02835 # ifdef _PVP_PVP
02836    fprintf(debug_file, "\t\t\t_PVP_PVP\n");
02837 # endif
02838 
02839 # ifdef _MPP_MPP
02840    fprintf(debug_file, "\t\t\t_MPP_MPP\n");
02841 # endif
02842 
02843 # ifdef _SOLARIS_SOLARIS
02844    fprintf(debug_file, "\t\t\t_SOLARIS_SOLARIS\n");
02845 # endif
02846 
02847 # ifdef _SOLARIS_MPP
02848    fprintf(debug_file, "\t\t\t_SOLARIS_MPP\n");
02849 # endif
02850 
02851 # ifdef _SOLARIS_PVP
02852    fprintf(debug_file, "\t\t\t_SOLARIS_PVP\n");
02853 # endif
02854 
02855 # ifdef _PVP_MPP
02856    fprintf(debug_file, "\t\t\t_PVP_MPP\n");
02857 # endif
02858 
02859    fprintf(debug_file, "\n");
02860 
02861 # ifdef _PDGCS
02862    fprintf(debug_file, "\t\t\t_PDGCS\n");
02863 # endif
02864 
02865 # ifdef _HOST32
02866    fprintf(debug_file, "\t\t\t_HOST32\n");
02867 # endif
02868 
02869 # ifdef _HOST64
02870    fprintf(debug_file, "\t\t\t_HOST64\n");
02871 # endif
02872 
02873 # ifdef _TARGET32
02874    fprintf(debug_file, "\t\t\t_TARGET32\n");
02875 # endif
02876 
02877 # ifdef _TARGET64
02878    fprintf(debug_file, "\t\t\t_TARGET64\n");
02879 # endif
02880 
02881 # if defined(_HOST_OS_IRIX)
02882    fprintf(debug_file, "\t\t\t_HOST_OS_IRIX\n");
02883 # endif
02884 
02885 # if defined(_HOST_OS_LINUX)
02886    fprintf(debug_file, "\t\t\t_HOST_OS_LINUX\n");
02887 # endif
02888 
02889 # ifdef _HOST_OS_MAX
02890    fprintf(debug_file, "\t\t\t_HOST_OS_MAX\n");
02891 # endif
02892 
02893 # ifdef _HOST_OS_SOLARIS
02894    fprintf(debug_file, "\t\t\t_HOST_OS_SOLARIS\n");
02895 # endif
02896 
02897 # ifdef _HOST_OS_UNICOS
02898    fprintf(debug_file, "\t\t\t_HOST_OS_UNICOS\n");
02899 # endif
02900 
02901 
02902 # if defined(_TARGET_OS_IRIX)
02903    fprintf(debug_file, "\t\t\t_TARGET_OS_IRIX\n");
02904 # endif
02905 
02906 # if defined(_TARGET_OS_LINUX)
02907    fprintf(debug_file, "\t\t\t_TARGET_OS_LINUX\n");
02908 # endif
02909 
02910 # ifdef _TARGET_OS_MAX
02911    fprintf(debug_file, "\t\t\t_TARGET_OS_MAX\n");
02912 # endif
02913 
02914 # ifdef _TARGET_OS_SOLARIS
02915    fprintf(debug_file, "\t\t\t_TARGET_OS_SOLARIS\n");
02916 # endif
02917 
02918 # ifdef _TARGET_OS_UNICOS
02919    fprintf(debug_file, "\t\t\t_TARGET_OS_UNICOS\n");
02920 # endif
02921 
02922 # ifdef _TARGET_SV2
02923    fprintf(debug_file, "\t\t\t_TARGET_SV2\n");
02924 # endif
02925 
02926 # ifdef _TARGET_IEEE
02927    fprintf(debug_file, "\t\t\t_TARGET_IEEE\n");
02928 # endif
02929 
02930 # ifdef _TARGET_BYTE_ADDRESS
02931    fprintf(debug_file, "\t\t\t_TARGET_BYTE_ADDRESS\n");
02932 # endif
02933 
02934 # ifdef _TARGET_WORD_ADDRESS
02935    fprintf(debug_file, "\t\t\t_TARGET_WORD_ADDRESS\n");
02936 # endif
02937 
02938 # ifdef _HEAP_REQUEST_IN_BYTES
02939    fprintf(debug_file, "\t\t\t_HEAP_REQUEST_IN_BYTES\n");
02940 # endif
02941 
02942 # ifdef _HEAP_REQUEST_IN_WORDS
02943    fprintf(debug_file, "\t\t\t_HEAP_REQUEST_IN_WORDS\n");
02944 # endif
02945 
02946 # ifdef _MODULE_DOT_TO_o
02947    fprintf(debug_file, "\t\t\t_MODULE_DOT_TO_o\n");
02948 # endif
02949 
02950 # ifdef _MODULE_DOT_TO_M
02951    fprintf(debug_file, "\t\t\t_MODULE_DOT_TO_M\n");
02952 # endif
02953 
02954 # ifdef _MODULE_DOT_TO_mod
02955    fprintf(debug_file, "\t\t\t_MODULE_DOT_TO_mod\n");
02956 # endif
02957 
02958 # ifdef _ARITH_INPUT_CONV
02959    fprintf(debug_file, "\t\t\t_ARITH_INPUT_CONV\n");
02960 # endif
02961 
02962 # ifdef _ARITH_H
02963    fprintf(debug_file, "\t\t\t_ARITH_H\n");
02964 # endif
02965 
02966 # ifdef _ALLOCATE_IS_CALL
02967    fprintf(debug_file, "\t\t\t_ALLOCATE_IS_CALL\n");
02968 # endif
02969 
02970 # ifdef _SEPARATE_FUNCTION_RETURNS
02971    fprintf(debug_file, "\t\t\t_SEPARATE_FUNCTION_RETURNS\n");
02972 # endif
02973 
02974 # ifdef _TARGET_DOUBLE_ALIGN
02975    fprintf(debug_file, "\t\t\t_TARGET_DOUBLE_ALIGN\n");
02976 # endif
02977 
02978 # ifdef _ERROR_DUPLICATE_GLOBALS
02979    fprintf(debug_file, "\t\t\t_ERROR_DUPLICATE_GLOBALS\n");
02980 # endif
02981 
02982 
02983    if (char_len_in_bytes) {
02984       fprintf(debug_file, "\t\t\t_CHAR_LEN_IN_BYTES\n");
02985    }
02986 # ifdef _NO_BINARY_OUTPUT
02987    fprintf(debug_file, "\t\t\t_NO_BINARY_OUTPUT\n");
02988 # endif
02989 
02990 # ifdef _CHECK_MAX_MEMORY
02991    fprintf(debug_file, "\t\t\t_CHECK_MAX_MEMORY\n");
02992 # endif
02993 
02994 # ifdef _TASK_COMMON_EXTENSION
02995    fprintf(debug_file, "\t\t\t_TASK_COMMON_EXTENSION\n");
02996 # endif
02997 
02998 # ifdef _TWO_WORD_FCD
02999    fprintf(debug_file, "\t\t\t_TWO_WORD_FCD\n");
03000 # endif
03001 
03002 # ifdef _TRANSFORM_CHAR_SEQUENCE
03003    fprintf(debug_file, "\t\t\t_TRANSFORM_CHAR_SEQUENCE\n");
03004 # endif
03005 
03006 # ifdef _TMP_GIVES_COMMON_LENGTH
03007    fprintf(debug_file, "\t\t\t_TMP_GIVES_COMMON_LENGTH\n");
03008 # endif
03009 
03010 # ifdef _SPLIT_STATIC_STORAGE_2
03011    fprintf(debug_file, "\t\t\t_SPLIT_STATIC_STORAGE_2\n");
03012 # endif
03013 
03014 # ifdef _SPLIT_STATIC_STORAGE_3
03015    fprintf(debug_file, "\t\t\t_SPLIT_STATIC_STORAGE_3\n");
03016 # endif
03017 
03018 # ifdef _ALLOW_DATA_INIT_OF_COMMON
03019    fprintf(debug_file, "\t\t\t_ALLOW_DATA_INIT_OF_COMMON\n");
03020 # endif
03021 
03022 # ifdef _FRONTEND_CONDITIONAL_COMP
03023    fprintf(debug_file, "\t\t\t_FRONTEND_CONDITIONAL_COMP\n");
03024 # endif
03025 
03026 
03027    fprintf(debug_file, "\n\n\t\t\tINTEGER_DEFAULT_TYPE\t%s\n",
03028                        lin_type_str[INTEGER_DEFAULT_TYPE]);
03029 
03030    fprintf(debug_file, "\t\t\tREAL_DEFAULT_TYPE\t%s\n",
03031                        lin_type_str[REAL_DEFAULT_TYPE]);
03032 
03033    fprintf(debug_file, "\t\t\tDOUBLE_DEFAULT_TYPE\t%s\n",
03034                        lin_type_str[DOUBLE_DEFAULT_TYPE]);
03035 
03036    fprintf(debug_file, "\t\t\tCOMPLEX_DEFAULT_TYPE\t%s\n",
03037                        lin_type_str[COMPLEX_DEFAULT_TYPE]);
03038 
03039    fprintf(debug_file, "\t\t\tLOGICAL_DEFAULT_TYPE\t%s\n",
03040                        lin_type_str[LOGICAL_DEFAULT_TYPE]);
03041 
03042    fprintf(debug_file, "\t\t\tTRUE_VALUE  = %d\n", TRUE_VALUE);
03043    fprintf(debug_file, "\t\t\tFALSE_VALUE = %d\n", FALSE_VALUE);
03044 
03045    if (target_triton) {
03046       fprintf(debug_file, "\n\t\t\ttarget_triton\n");
03047    }
03048 
03049    if (target_ieee) {
03050       fprintf(debug_file, "\n\t\t\ttarget_ieee\n");
03051    }
03052 
03053    if (char_len_in_bytes) {
03054       fprintf(debug_file, "\n\t\t\tchar_len_in_bytes\n");
03055    }
03056 
03057    putc ('\n', debug_file);
03058    fflush(debug_file);
03059 
03060    return;
03061 
03062 }  /* print_defines */
03063 
03064 
03065 /******************************************************************************\
03066 |*                                                                            *|
03067 |* Description:                                                               *|
03068 |*      <description>                                                         *|
03069 |*                                                                            *|
03070 |* Input parameters:                                                          *|
03071 |*      NONE                                                                  *|
03072 |*                                                                            *|
03073 |* Output parameters:                                                         *|
03074 |*      NONE                                                                  *|
03075 |*                                                                            *|
03076 |* Returns:                                                                   *|
03077 |*      NOTHING                                                               *|
03078 |*                                                                            *|
03079 \******************************************************************************/
03080 
03081 static void dump_dv(FILE                *out_file,
03082                     int_dope_type       *dv,
03083                     boolean             dump_it)
03084 
03085 {
03086    long *lptr;
03087    int  k;
03088    int  i;
03089    int  idx;
03090    int  dec_len = 0;
03091    int  dp_flag = 0;
03092    int  dv_type;
03093    int  int_len = 0;
03094    int  kind_star = 0;
03095    int  type_idx;
03096    int  num_chars;
03097    char *char_ptr;
03098 
03099 # if 0
03100    char str[80];
03101 # endif
03102 
03103 
03104    if (dv == NULL) {
03105       fprintf(out_file, "\nDOPE VECTOR ADDRESS IS NULL\n\n");
03106       return;
03107    }
03108 #if defined(_HOST32) && defined(_TARGET64)
03109    fprintf(out_file, "base_addr = 0x%x\n", dv->base_addr);
03110    fprintf(out_file, "el_len    = %d\n", dv->el_len);
03111 #else
03112    fprintf(out_file, "base_addr = 0x%" LONG_TYPE_X_FMT "\n", dv->base_addr);
03113    fprintf(out_file, "el_len    = %" LONG_TYPE_FMT "\n", dv->el_len);
03114 #endif
03115    fprintf(out_file, "assoc     = %d\n", dv->assoc);
03116    fprintf(out_file, "ptr_alloc = %d\n", dv->ptr_alloc);
03117    fprintf(out_file, "p_or_a    = %s\n", (dv->p_or_a == 2 ? "ALLOCATABLE" :
03118                                   (dv->p_or_a == 1 ? "POINTER" : "OTHER")));
03119    fprintf(out_file, "a_contig  = %s\n",
03120                           (dv->a_contig == 1 ? "TRUE" : "FALSE"));
03121    fprintf(out_file, "unused_1  = %d\n", dv->unused_1);
03122 # if defined(_TARGET64)
03123    fprintf(out_file, "unused_2  = %d\n", dv->unused_2);
03124 # endif
03125    fprintf(out_file, "num_dims  = %d\n", dv->num_dims);
03126 
03127 # if 0
03128    dump_io_type_code_ntry(out_file, (long_type *)&(dv->type_code), 0);
03129 # endif
03130 
03131 #if defined(_HOST32) && defined(_TARGET64)
03132    fprintf(out_file, "orig_base = 0x%x\n", dv->orig_base);
03133    fprintf(out_file, "orig_size = %d\n", dv->orig_size);
03134 
03135    for(k = 0; k < (int)(dv->num_dims); k++) {
03136       fprintf(out_file, "low_bound[%d]   = %d\n",k+1,
03137                                           dv->dim[k].low_bound);
03138       fprintf(out_file, "extent[%d]      = %d\n",
03139                                             k+1, dv->dim[k].extent);
03140       fprintf(out_file, "stride_mult[%d] = %d\n\n",k+1,
03141                                           dv->dim[k].stride_mult);
03142    }
03143 #else
03144    fprintf(out_file, "orig_base = 0x%" LONG_TYPE_X_FMT "\n", dv->orig_base);
03145    fprintf(out_file, "orig_size = %" LONG_TYPE_FMT "\n", dv->orig_size);
03146 
03147    for(k = 0; k < (int)(dv->num_dims); k++) {
03148       fprintf(out_file, "low_bound[%d]   = %" LONG_TYPE_FMT "\n",k+1,
03149                                           dv->dim[k].low_bound);
03150       fprintf(out_file, "extent[%d]      = %" LONG_TYPE_FMT "\n",
03151                                             k+1, dv->dim[k].extent);
03152       fprintf(out_file, "stride_mult[%d] = %" LONG_TYPE_FMT "\n\n",k+1,
03153                                           dv->dim[k].stride_mult);
03154    }
03155 #endif
03156 
03157 
03158 # if 0
03159    lptr = (long *)(dv->base_addr);
03160 
03161    if (lptr != NULL &&
03162        dv->num_dims == 1 &&
03163        dump_it) {
03164 
03165       /* this assumes that the array is contiguous */
03166 
03167       if (dv_type == DV_ASCII_CHAR) {
03168 
03169          char_ptr = (char *)(dv->base_addr);
03170 
03171          idx = 0;
03172 
03173          for (k = 0; k < dv->dim[0].extent; k++) {
03174             fprintf(out_file,"\"");
03175             for (i = 0; i < num_chars; i++) {
03176                fprintf(out_file, "%c", char_ptr[idx]);
03177                idx++;
03178             }
03179             fprintf(out_file,"\"  ");
03180          }
03181          fprintf(out_file, "\n");
03182       }
03183       else {
03184 
03185          for (k = 0; k < dv->dim[0].extent; k++) {
03186 #if 1
03187             fprintf(out_file, "  %x  ", 
03188                               lptr[num_host_wds[TYP_LINEAR(type_idx)] * k]);
03189 # else
03190 
03191             fprintf(out_file, "  %s  ",
03192              convert_to_string(&(lptr[num_host_wds[TYP_LINEAR(type_idx)] * k]),
03193                                type_idx,
03194                                str));
03195 # endif
03196          }
03197          fprintf(out_file, "\n");
03198       }
03199    }
03200 # endif
03201 
03202    return;
03203 
03204 }  /* dump_dv */
03205 
03206 /******************************************************************************\
03207 |*                                                                            *|
03208 |* Description:                                                               *|
03209 |*      <description>                                                         *|
03210 |*                                                                            *|
03211 |* Input parameters:                                                          *|
03212 |*      NONE                                                                  *|
03213 |*                                                                            *|
03214 |* Output parameters:                                                         *|
03215 |*      NONE                                                                  *|
03216 |*                                                                            *|
03217 |* Returns:                                                                   *|
03218 |*      NOTHING                                                               *|
03219 |*                                                                            *|
03220 \******************************************************************************/
03221 
03222 void print_so (size_offset_type so)
03223 
03224 {
03225    char         str[80];
03226 
03227    switch(so.fld) {
03228 
03229    case NO_Tbl_Idx:
03230       print_fld_idx(stderr, "Idx", (fld_type) so.fld, 0);
03231       fprintf(stderr, "Type = (%d)  %s",  so.type_idx, 
03232                                           print_type_f(so.type_idx));
03233 
03234       switch (TYP_TYPE(so.type_idx)) {
03235       case Typeless:
03236          convert_to_string_fmt = Hex_Fmt;
03237          fprintf(stderr,"0x%s", 
03238                  convert_to_string((long_type *)&(so.constant), 
03239                                      so.type_idx, str));
03240 
03241          if (TYP_BIT_LEN(so.type_idx) > TARGET_BITS_PER_WORD) {
03242             convert_to_string_fmt = Hex_Fmt;
03243             fprintf(stderr, "  %s",
03244                     convert_to_string((long_type *)&(so.constant[1]),
03245                                       so.type_idx, str));
03246          }
03247 
03248          break;
03249 
03250       case Integer:
03251          fprintf(stderr,"%s",
03252                  convert_to_string((long_type *)&(so.constant), 
03253                                     so.type_idx, str));
03254          break;
03255    
03256       case Real:
03257          fprintf(stderr, "%s",
03258                  convert_to_string((long_type *)&(so.constant), 
03259                                     so.type_idx, str));
03260          break;
03261          
03262       case Character:
03263          break;
03264          
03265       case Logical:
03266          fprintf(stderr, "%s",
03267                 (THIS_IS_TRUE((long_type *)&(so.constant), so.type_idx) ?
03268                                              ".TRUE." : ".FALSE."));
03269          break;
03270          
03271       case Complex:
03272          fprintf(stderr, "%s", 
03273                  convert_to_string((long_type *)&(so.constant),
03274                                    so.type_idx, str));
03275          break;
03276       }
03277 
03278       fprintf(stderr,"\n");
03279       break;
03280 
03281    case CN_Tbl_Idx:
03282       print_fld_idx(stderr, "Idx", (fld_type) so.fld, so.idx);
03283       fprintf(stderr, "Constant = *Unset*\n");
03284 
03285       print_const_entry(stderr, so.idx, 0);
03286       break;
03287 
03288    case AT_Tbl_Idx:
03289       print_fld_idx(stderr, "Idx", (fld_type) so.fld, so.idx);
03290       fprintf(stderr, "Constant = *Unset*\n");
03291       print_attr_name(stderr, so.idx, 0);
03292       break;
03293 
03294    case IR_Tbl_Idx:
03295       print_fld_idx(stderr, "Idx", (fld_type) so.fld, so.idx);
03296       fprintf(stderr, "Constant = *Unset*\n");
03297       dump_ir_ntry(stderr, so.idx, 0);
03298       break;
03299    }
03300 
03301    return;
03302 
03303 }  /* print_so */
03304 
03305 /******************************************************************************\
03306 |*                                                                            *|
03307 |* Description:                                                               *|
03308 |*      Makes a field/index printable into a character string.                *|
03309 |*                                                                            *|
03310 |* Input parameters:                                                          *|
03311 |*      fld  ->  Field describing index to print.                             *|
03312 |*      idx  ->  Index to print.                                              *|
03313 |*                                                                            *|
03314 |* Output parameters:                                                         *|
03315 |*      NONE                                                                  *|
03316 |*                                                                            *|
03317 |* Returns:                                                                   *|
03318 |*      Pointer to a character string of item to print.                       *|
03319 |*                                                                            *|
03320 |*      NOTE:  This reuses the same output character area, so each successive *|
03321 |*             call will clear out the previous returned value.               *|
03322 |*                                                                            *|
03323 \******************************************************************************/
03324 
03325 static void     print_fld_idx(FILE              *out_file,
03326                               char              *name,
03327                               fld_type           fld,
03328                               int                idx)
03329 
03330 {
03331    static       char            str[80];
03332                 char            conv_str[80];
03333 
03334    if (idx == NULL_IDX) {
03335       fprintf(out_file, "  %-16s= %-7d %-9s\n", name, idx, field_str[fld]);
03336    }
03337    else {
03338       switch (fld) {
03339 
03340       case CN_Tbl_Idx:
03341          sprintf(str,"( %-s )",
03342                  convert_to_string(&CN_CONST(idx), CN_TYPE_IDX(idx), conv_str));
03343          break;
03344 
03345       case AT_Tbl_Idx:
03346          sprintf(str,"( %-s )", AT_OBJ_NAME_PTR(idx));
03347          break;
03348 
03349       case IR_Tbl_Idx:
03350       case IL_Tbl_Idx:
03351       case SH_Tbl_Idx:
03352       case SB_Tbl_Idx:
03353          sprintf(str,"%s", " ");
03354          break;
03355 
03356       default:
03357          sprintf(str,"%s", " ");
03358          break;
03359       }
03360 
03361       fprintf(out_file, "  %-16s= %-7d %-9s%15s %-s\n",
03362              name, idx,
03363              field_str[fld], " ",
03364              str);
03365    }
03366 
03367    return;
03368 
03369 }  /* print_fld_idx */
03370 
03371 /******************************************************************************\
03372 |*                                                                            *|
03373 |* Description:                                                               *|
03374 |*      Should be inlined.  Returns the name for an attr or ** NONE **        *|
03375 |*                                                                            *|
03376 |* Input parameters:                                                          *|
03377 |*      idx  ->  Attr index of name                                           *|
03378 |*                                                                            *|
03379 |* Output parameters:                                                         *|
03380 |*      NONE                                                                  *|
03381 |*                                                                            *|
03382 |* Returns:                                                                   *|
03383 |*      Pointer to a character string of item to print.                       *|
03384 |*                                                                            *|
03385 |*      NOTE:  This reuses the same output character area, so each successive *|
03386 |*             call will clear out the previous returned value.               *|
03387 |*                                                                            *|
03388 \******************************************************************************/
03389 
03390 static char *print_at_name(int          idx)
03391 
03392 {
03393    static       char    str[1] = "0";
03394 
03395 
03396    if (idx == NULL_IDX) {
03397       return(str);
03398    }
03399    else {
03400       return(AT_OBJ_NAME_PTR(idx));
03401    }
03402 
03403 }  /* print_at_name */
03404     
03405 /******************************************************************************\
03406 |*                                                                            *|
03407 |* Description:                                                               *|
03408 |*      Prints header for a table in the debug output.                        *|
03409 |*                                                                            *|
03410 |* Input parameters:                                                          *|
03411 |*      Table name to print                                                   *|
03412 |*                                                                            *|
03413 \******************************************************************************/
03414 
03415 static  void print_tbl_header (char     *table_name)
03416 
03417 {
03418    init_debug_file();
03419 
03420    fprintf(debug_file, "****************************************"
03421                        "****************************************\n");
03422    fprintf(debug_file, "\n\t\t\t%s\n\n", table_name);
03423    fprintf(debug_file, "****************************************"
03424                        "****************************************\n");
03425    return;
03426 
03427 }  /* print_tbl_header */
03428 
03429 /******************************************************************************\
03430 |*                                                                            *|
03431 |* Description:                                                               *|
03432 |*      Print global type in a Fortran format.                                *|
03433 |*                                                                            *|
03434 |* Input parameters:                                                          *|
03435 |*      NONE                                                                  *|
03436 |*                                                                            *|
03437 |* Output parameters:                                                         *|
03438 |*      NONE                                                                  *|
03439 |*                                                                            *|
03440 |* Returns:                                                                   *|
03441 |*      NOTHING                                                               *|
03442 |*                                                                            *|
03443 \******************************************************************************/
03444 
03445 static  char  *print_global_type_f(int   gt_idx)
03446 
03447 {
03448                 int     kind;
03449    static       char    str[80];
03450                 char    str1[80];
03451 
03452 
03453    if (gt_idx == NULL_IDX) {
03454       sprintf(str, "NULL");
03455    }
03456    else if (GT_TYPE(gt_idx) <= Last_Linear_Type) {
03457 
03458       if (GT_DESC(gt_idx) == Star_Typed) {
03459          sprintf(str, "%s * %d", 
03460                        basic_type_str[GT_TYPE(gt_idx)],
03461                        GT_DCL_VALUE(gt_idx));
03462       }
03463       else if (GT_DESC(gt_idx) == Kind_Typed) {
03464          sprintf(str, "%s (kind=%d)", 
03465                        basic_type_str[GT_TYPE(gt_idx)],
03466                        GT_DCL_VALUE(gt_idx));
03467       }
03468       else {  /* Default Typed */
03469 
03470          /* Print a kind type, so we know exactly what we've got. */
03471 
03472          switch (GT_LINEAR_TYPE(gt_idx)) {
03473          case Integer_1:
03474          case Logical_1:
03475             kind        = 1;
03476             break;
03477          case Integer_2:
03478          case Logical_2:
03479             kind        = 2;
03480             break;
03481          case Integer_4:
03482          case Logical_4:
03483          case Real_4:
03484          case Complex_4:
03485             kind        = 4;
03486             break;
03487          case Integer_8:
03488          case Logical_8:
03489          case Real_8:
03490          case Complex_8:
03491             kind        = 8;
03492             break;
03493          case Real_16:
03494          case Complex_16:
03495             kind        = 16;
03496             break;
03497          default:
03498             kind        = 0;
03499             break;
03500          }
03501 
03502          if (kind == 0) {
03503             sprintf(str, "%s", basic_type_str[GT_TYPE(gt_idx)]);
03504          }
03505          else {
03506             sprintf(str, "%s (%d)", basic_type_str[GT_TYPE(gt_idx)], kind);
03507          }
03508       }
03509    }
03510    else if (GT_TYPE(gt_idx) == Typeless) {
03511       sprintf(str, "Typeless * %s", 
03512                     CONVERT_CVAL_TO_STR(&TYP_BIT_LEN(gt_idx), Integer_8, str1));
03513    }
03514    else if (GT_TYPE(gt_idx) != Character) {
03515       sprintf(str, "type(%s)", GA_OBJ_NAME_PTR(GT_STRUCT_IDX(gt_idx)));
03516    }
03517    else if (GT_CHAR_CLASS(gt_idx) == Assumed_Size_Char) {
03518       sprintf(str, "CHARACTER*(*)");
03519    }
03520    else if (GT_CHAR_CLASS(gt_idx) == Const_Len_Char) {
03521       sprintf(str, "CHARACTER*(Const_Len_Char)");
03522       /* 07Dec00[sos] next line aborts  (PV 802511)                       */
03523       /* sprintf(str, "CHARACTER*(%s)",                                   */
03524       /*         convert_to_string(GT_LENGTH(gt_idx), Integer_8, str1)"); */
03525    }
03526    else {  /* Variable or unknown length char - print (tmp_idx = idx) */
03527       sprintf(str, "CHARACTER*(tmp)");
03528    }
03529 
03530    return(str);
03531 
03532 } /* print_global_type_f */
03533 
03534 /******************************************************************************\
03535 |*                                                                            *|
03536 |*      Utility routines specifically for the IR/IL dump.                     *|
03537 |*                                                                            *|
03538 \******************************************************************************/
03539 
03540 /******************************************************************************\
03541 |*                                                                            *|
03542 |* Description:                                                               *|
03543 |*      Print all the statements and all their IR.                            *|
03544 |*                                                                            *|
03545 |* Input parameters:                                                          *|
03546 |*      NONE                                                                  *|
03547 |*                                                                            *|
03548 |* Output parameters:                                                         *|
03549 |*      NONE                                                                  *|
03550 |*                                                                            *|
03551 |* Returns:                                                                   *|
03552 |*      NOTHING                                                               *|
03553 |*                                                                            *|
03554 \******************************************************************************/
03555 
03556 static void  print_all_text (boolean    print_all_scps)
03557 
03558 {
03559    int  save_curr_scp_idx;
03560 
03561 
03562 PROCESS_SIBLING:
03563 
03564    init_debug_file();
03565 
03566    dump_trace_info (debug_file, PU_Start, NULL, "IR_dump");
03567 
03568    if (!SCP_IN_ERR(curr_scp_idx) ) {
03569 
03570       curr_stmt_sh_idx = SCP_FIRST_SH_IDX(curr_scp_idx);
03571 
03572       while (curr_stmt_sh_idx != NULL_IDX) {
03573 
03574          dump_stmt_ntry(debug_file, TRUE);
03575 
03576          if (SH_NEXT_IDX(curr_stmt_sh_idx) == curr_stmt_sh_idx) {
03577 
03578             /* Turn off ir table dump, so this doesn't loop forever */
03579 
03580             dump_flags.ir1_tbl  = FALSE;
03581             dump_flags.ir2_tbl  = FALSE;
03582             dump_flags.ir3_tbl  = FALSE;
03583             dump_flags.ir4_tbl  = FALSE;
03584             dump_flags.sytb     = FALSE;
03585 
03586             PRINTMSG(SH_GLB_LINE(curr_stmt_sh_idx), 871, Internal,
03587                      SH_COL_NUM(curr_stmt_sh_idx), "SH_NEXT_IDX",
03588                      curr_stmt_sh_idx);
03589          }
03590          else if (SH_PREV_IDX(curr_stmt_sh_idx) == curr_stmt_sh_idx) {
03591 
03592             /* Turn off ir table dump, so this doesn't loop forever */
03593 
03594             dump_flags.ir1_tbl  = FALSE;
03595             dump_flags.ir2_tbl  = FALSE;
03596             dump_flags.ir3_tbl  = FALSE;
03597             dump_flags.ir4_tbl  = FALSE;
03598             dump_flags.sytb     = FALSE;
03599 
03600             PRINTMSG(SH_GLB_LINE(curr_stmt_sh_idx), 871, Internal,
03601                      SH_COL_NUM(curr_stmt_sh_idx), "SH_PREV_IDX",
03602                      curr_stmt_sh_idx);
03603          }
03604 
03605          curr_stmt_sh_idx = SH_NEXT_IDX(curr_stmt_sh_idx);
03606       }
03607    }
03608 
03609    if (!print_all_scps) {
03610       return;
03611    }
03612 
03613    if (SCP_FIRST_CHILD_IDX(curr_scp_idx) != NULL_IDX) {
03614       save_curr_scp_idx = curr_scp_idx;
03615       curr_scp_idx = SCP_FIRST_CHILD_IDX(curr_scp_idx);
03616       print_all_text(TRUE);
03617       curr_scp_idx = save_curr_scp_idx;
03618    }
03619 
03620    if (SCP_SIBLING_IDX(curr_scp_idx) != NULL_IDX) {
03621       curr_scp_idx = SCP_SIBLING_IDX(curr_scp_idx);
03622       goto PROCESS_SIBLING;
03623    }
03624 
03625    return;
03626 
03627 } /* print_all_text */
03628 
03629 /******************************************************************************\
03630 |*                                                                            *|
03631 |* Description:                                                               *|
03632 |*      prints list texts and what they point to that are from a              *|
03633 |*      Dv_Whole_Def_Opr.                                                     *|
03634 |*      called by dump_ir_ntry                                                *|
03635 |*                                                                            *|
03636 |* Input parameters:                                                          *|
03637 |*      NONE                                                                  *|
03638 |*                                                                            *|
03639 |* Output parameters:                                                         *|
03640 |*      NONE                                                                  *|
03641 |*                                                                            *|
03642 |* Returns:                                                                   *|
03643 |*      NOTHING                                                               *|
03644 |*                                                                            *|
03645 \******************************************************************************/
03646 
03647 static void  print_Dv_Whole_Def_Opr(FILE    *out_file,
03648                                     int      idx,
03649                                     int      indent,
03650                                     int      cnt)
03651 
03652 {
03653    int  dim;
03654    char shift[80];
03655    char n_shift[INDENT_SIZE + 1];
03656    char str[16];
03657    int  i;
03658 
03659    for (i = 0; i < INDENT_SIZE * indent; i++) {
03660       shift[i] = ' ';
03661       if (i == 79)
03662          break;
03663    }
03664    shift[i] = '\0';
03665    for (i = 0; i < INDENT_SIZE; i++) {
03666       n_shift[i] = ' ';
03667    }
03668    n_shift[i] = '\0';
03669 
03670    dim = 0;
03671 
03672    for (i = 0; i < cnt; i++) {
03673 
03674       if (idx == NULL_IDX) {
03675          break;
03676       }
03677 
03678       if (i < 10) {
03679          strcpy(str, dv_whole_def_str[i]);
03680       }
03681       else {
03682          if ((i - 10)%3 == 0) {
03683             dim++;
03684          }
03685          sprintf(str, dv_whole_def_str[i], dim);
03686       }
03687 
03688       fprintf(out_file,"%s%-15s, idx = %d, %s",shift, str, idx,
03689                                          field_str[IL_FLD(idx)]);
03690 
03691       if (i == DEBUG_STR_TYPE_CODE) {
03692          convert_to_string_fmt = Hex_Fmt;
03693       }
03694 
03695       switch (IL_FLD(idx)) {
03696          case CN_Tbl_Idx :
03697          case AT_Tbl_Idx   :
03698                  fprintf(out_file," line = %d col = %d\n",IL_LINE_NUM(idx),
03699                                  IL_COL_NUM(idx));
03700                  break;
03701          case IL_Tbl_Idx  :
03702                  fprintf(out_file," list cnt = %d\n", IL_LIST_CNT(idx));
03703                  break;
03704          default         :
03705                  fprintf(out_file,"\n");
03706                  break;
03707       }
03708 
03709 
03710       switch (IL_FLD(idx)) {
03711          case NO_Tbl_Idx  :
03712                  break;
03713          case CN_Tbl_Idx :
03714                  print_const_entry(out_file, IL_IDX(idx), indent + 1);
03715                  break;
03716          case AT_Tbl_Idx   :
03717                  print_attr_name(out_file, IL_IDX(idx), indent + 1);
03718                  break;
03719          case IR_Tbl_Idx  :
03720                  dump_ir_ntry(out_file, IL_IDX(idx), indent + 1);
03721                  break;
03722          case IL_Tbl_Idx  :
03723                  print_list(out_file, IL_IDX(idx),
03724                             indent + 1, IL_LIST_CNT(idx), FALSE);
03725                  break;
03726          case SH_Tbl_Idx  :
03727                  fprintf(out_file, "%s%sstmt header idx = %d\n",shift,n_shift,
03728                          IL_IDX(idx));
03729                  break;
03730       }
03731       idx = IL_NEXT_LIST_IDX(idx);
03732    }
03733 
03734    return;
03735 
03736 } /* print_Dv_Whole_Def_Opr */
03737 
03738 /******************************************************************************\
03739 |*                                                                            *|
03740 |* Description:                                                               *|
03741 |*      prints list texts and what they point to that are from a              *|
03742 |*      mp directive opr.                                                     *|
03743 |*      called by dump_ir_ntry                                                *|
03744 |*                                                                            *|
03745 |* Input parameters:                                                          *|
03746 |*      NONE                                                                  *|
03747 |*                                                                            *|
03748 |* Output parameters:                                                         *|
03749 |*      NONE                                                                  *|
03750 |*                                                                            *|
03751 |* Returns:                                                                   *|
03752 |*      NOTHING                                                               *|
03753 |*                                                                            *|
03754 \******************************************************************************/
03755 
03756 static void  print_mp_dir_opr(FILE    *out_file,
03757                               int      idx,
03758                               int      indent,
03759                               int      cnt)
03760 
03761 {
03762    char shift[80];
03763    char n_shift[INDENT_SIZE + 1];
03764    char str[80];
03765    int  i;
03766 
03767 
03768    for (i = 0; i < INDENT_SIZE * indent; i++) {
03769       shift[i] = ' ';
03770       if (i == 79)
03771          break;
03772    }
03773    shift[i] = '\0';
03774    for (i = 0; i < INDENT_SIZE; i++) {
03775       n_shift[i] = ' ';
03776    }
03777    n_shift[i] = '\0';
03778 
03779 
03780    for (i = 0; i < cnt; i++) {
03781 
03782       if (idx == NULL_IDX) {
03783          break;
03784       }
03785 
03786       strcpy(str, mp_dir_opr_str[i]);
03787 
03788       fprintf(out_file,"%s%-15s, idx = %d, %s",shift, str, idx,
03789                                          field_str[IL_FLD(idx)]);
03790 
03791       switch (IL_FLD(idx)) {
03792          case CN_Tbl_Idx :
03793          case AT_Tbl_Idx   :
03794                  fprintf(out_file," line = %d col = %d\n",IL_LINE_NUM(idx),
03795                                  IL_COL_NUM(idx));
03796                  break;
03797          case IL_Tbl_Idx  :
03798                  fprintf(out_file," list cnt = %d\n", IL_LIST_CNT(idx));
03799                  break;
03800          default         :
03801                  fprintf(out_file,"\n");
03802                  break;
03803       }
03804 
03805 
03806       switch (IL_FLD(idx)) {
03807          case NO_Tbl_Idx  :
03808                  break;
03809          case CN_Tbl_Idx :
03810                  print_const_entry(out_file, IL_IDX(idx), indent + 1);
03811                  break;
03812          case AT_Tbl_Idx   :
03813                  print_attr_name(out_file, IL_IDX(idx), indent + 1);
03814                  break;
03815          case IR_Tbl_Idx  :
03816                  dump_ir_ntry(out_file, IL_IDX(idx), indent + 1);
03817                  break;
03818          case IL_Tbl_Idx  :
03819                  print_list(out_file, IL_IDX(idx),
03820                             indent + 1, IL_LIST_CNT(idx), FALSE);
03821                  break;
03822          case SH_Tbl_Idx  :
03823                  fprintf(out_file, "%s%sstmt header idx = %d\n",shift,n_shift,
03824                          IL_IDX(idx));
03825                  break;
03826       }
03827       idx = IL_NEXT_LIST_IDX(idx);
03828    }
03829 
03830    return;
03831 
03832 } /* print_mp_dir_opr */
03833 
03834 /******************************************************************************\
03835 |*                                                                            *|
03836 |* Description:                                                               *|
03837 |*      prints list texts and what they point to that are from a              *|
03838 |*      open mp directive opr.                                                *|
03839 |*      called by dump_ir_ntry                                                *|
03840 |*                                                                            *|
03841 |* Input parameters:                                                          *|
03842 |*      NONE                                                                  *|
03843 |*                                                                            *|
03844 |* Output parameters:                                                         *|
03845 |*      NONE                                                                  *|
03846 |*                                                                            *|
03847 |* Returns:                                                                   *|
03848 |*      NOTHING                                                               *|
03849 |*                                                                            *|
03850 \******************************************************************************/
03851 
03852 static void  print_open_mp_dir_opr(FILE    *out_file,
03853                                    int      idx,
03854                                    int      indent,
03855                                    int      cnt)
03856 
03857 {
03858    char shift[80];
03859    char n_shift[INDENT_SIZE + 1];
03860    char str[80];
03861    int  i;
03862 
03863 
03864    for (i = 0; i < INDENT_SIZE * indent; i++) {
03865       shift[i] = ' ';
03866       if (i == 79)
03867          break;
03868    }
03869    shift[i] = '\0';
03870    for (i = 0; i < INDENT_SIZE; i++) {
03871       n_shift[i] = ' ';
03872    }
03873    n_shift[i] = '\0';
03874 
03875    for (i = 0; i < cnt; i++) {
03876 
03877       if (idx == NULL_IDX) {
03878          break;
03879       }
03880 
03881       strcpy(str, open_mp_dir_opr_str[i]);
03882 
03883       fprintf(out_file,"%s%-15s, idx = %d, %s",shift, str, idx,
03884                                          field_str[IL_FLD(idx)]);
03885 
03886       switch (IL_FLD(idx)) {
03887          case CN_Tbl_Idx :
03888          case AT_Tbl_Idx   :
03889                  fprintf(out_file," line = %d col = %d\n",IL_LINE_NUM(idx),
03890                                  IL_COL_NUM(idx));
03891                  break;
03892          case IL_Tbl_Idx  :
03893                  fprintf(out_file," list cnt = %d\n", IL_LIST_CNT(idx));
03894                  break;
03895          default         :
03896                  fprintf(out_file,"\n");
03897                  break;
03898       }
03899 
03900 
03901       switch (IL_FLD(idx)) {
03902          case NO_Tbl_Idx  :
03903                  break;
03904          case CN_Tbl_Idx :
03905                  print_const_entry(out_file, IL_IDX(idx), indent + 1);
03906                  break;
03907          case AT_Tbl_Idx   :
03908                  print_attr_name(out_file, IL_IDX(idx), indent + 1);
03909                  break;
03910          case IR_Tbl_Idx  :
03911                  dump_ir_ntry(out_file, IL_IDX(idx), indent + 1);
03912                  break;
03913          case IL_Tbl_Idx  :
03914                  print_list(out_file, IL_IDX(idx),
03915                             indent + 1, IL_LIST_CNT(idx), FALSE);
03916                  break;
03917          case SH_Tbl_Idx  :
03918                  fprintf(out_file, "%s%sstmt header idx = %d\n",shift,n_shift,
03919                          IL_IDX(idx));
03920                  break;
03921       }
03922       idx = IL_NEXT_LIST_IDX(idx);
03923    }
03924 
03925    return;
03926 
03927 } /* print_open_mp_dir_opr */
03928 
03929 /******************************************************************************\
03930 |*                                                                            *|
03931 |* Description:                                                               *|
03932 |*      prints attr name and index.                                           *|
03933 |*      Used by dump_ir_ntry                                                  *|
03934 |*                                                                            *|
03935 |* Input parameters:                                                          *|
03936 |*      NONE                                                                  *|
03937 |*                                                                            *|
03938 |* Output parameters:                                                         *|
03939 |*      NONE                                                                  *|
03940 |*                                                                            *|
03941 |* Returns:                                                                   *|
03942 |*      NOTHING                                                               *|
03943 |*                                                                            *|
03944 \******************************************************************************/
03945 
03946 static void  print_attr_name(FILE       *out_file,
03947                              int         idx,
03948                              int         indent)
03949 
03950 {
03951    int  i;
03952    char shift[80];
03953    char str[80];
03954    int  type_idx;
03955 
03956 
03957    for (i = 0; i < INDENT_SIZE * indent; i++) {
03958       shift[i] = ' ';
03959       if (i == 79)
03960          break;
03961    }
03962 
03963    shift[i] = '\0';
03964 
03965    fprintf(out_file,"%s%s  idx = %d",shift, AT_OBJ_NAME_PTR(idx), idx);
03966 
03967    if (AT_OBJ_CLASS(idx) == Data_Obj) {
03968       type_idx  = ATD_TYPE_IDX(idx);
03969 
03970       if (type_idx == NULL_IDX && AT_ATTR_LINK(idx) == NULL_IDX) { 
03971 
03972          /* Turn off ir table dump, so this doesn't loop forever */
03973 
03974          dump_flags.ir1_tbl     = FALSE;
03975          dump_flags.ir2_tbl     = FALSE;
03976          dump_flags.ir3_tbl     = FALSE;
03977          dump_flags.ir4_tbl     = FALSE;
03978          dump_flags.sytb        = FALSE;
03979 
03980          PRINTMSG(AT_DEF_LINE(idx), 891, Internal, AT_DEF_COLUMN(idx),
03981                   idx, AT_OBJ_NAME_PTR(idx));
03982       }
03983 
03984       fprintf(out_file,"  %s * ", basic_type_str[TYP_TYPE(type_idx)]);
03985 
03986       if (TYP_TYPE(type_idx) <= Last_Linear_Type) {
03987          fprintf(out_file, "%s  ", lin_type_str[TYP_LINEAR(type_idx)]);
03988       }
03989       else if (TYP_TYPE(type_idx) == Typeless) {
03990          fprintf(out_file, "%s  ", CONVERT_CVAL_TO_STR(&TYP_BIT_LEN(type_idx),
03991                                                         Integer_8,
03992                                                         str));
03993       }
03994       else if (TYP_TYPE(type_idx) != Character) {
03995          fprintf(out_file, "%d  ", TYP_IDX(type_idx));
03996       }
03997       else if (TYP_CHAR_CLASS(type_idx) == Assumed_Size_Char) {
03998          fprintf(out_file, "(*)  ");
03999       }
04000       else if (TYP_CHAR_CLASS(type_idx) == Const_Len_Char) {
04001          fprintf(out_file, "%s  ",
04002                  convert_to_string(&CN_CONST(TYP_IDX(type_idx)),
04003                                     CN_TYPE_IDX(TYP_IDX(type_idx)),
04004                                     str));
04005       }
04006       else {  /* Variable or unknown length char - print (tmp_idx = idx) */
04007          fprintf(out_file, "(tmp_idx = %d)  ", TYP_IDX(type_idx));
04008       }
04009    }
04010 
04011    if (AT_ATTR_LINK(idx)) {
04012       fprintf(out_file,"  AT_ATTR_LINK = %d\n",AT_ATTR_LINK(idx));
04013    }
04014    else {
04015       fprintf(out_file,"\n");
04016    }
04017 
04018    return;
04019 } /* print_attr_name */
04020 
04021 
04022 /******************************************************************************\
04023 |*                                                                            *|
04024 |* Description:                                                               *|
04025 |*      prints list texts and what they point to.                             *|
04026 |*                                                                            *|
04027 |* Input parameters:                                                          *|
04028 |*      NONE                                                                  *|
04029 |*                                                                            *|
04030 |* Output parameters:                                                         *|
04031 |*      NONE                                                                  *|
04032 |*                                                                            *|
04033 |* Returns:                                                                   *|
04034 |*      NOTHING                                                               *|
04035 |*                                                                            *|
04036 \******************************************************************************/
04037 
04038 static void  print_list(FILE    *out_file,
04039                         int      idx,
04040                         int      indent,
04041                         int      cnt,
04042                         boolean  io_list)
04043 
04044 {
04045    char shift[80];
04046    char n_shift[INDENT_SIZE + 1];
04047    int  i;
04048 
04049    for (i = 0; i < INDENT_SIZE * indent; i++) {
04050       shift[i] = ' ';
04051       if (i == 79)
04052          break;
04053    }
04054    shift[i] = '\0';
04055    for (i = 0; i < INDENT_SIZE; i++) {
04056       n_shift[i] = ' ';
04057    }
04058    n_shift[i] = '\0';
04059 
04060    for (i = 0; i < cnt; i++) {
04061 
04062       if (idx == NULL_IDX) {
04063          break;
04064       }
04065 
04066       fprintf(out_file,"%slist item #%d, idx = %d, %s",shift, i + 1, idx,
04067                                          field_str[IL_FLD(idx)]);
04068 
04069       if (IL_ARG_DESC_VARIANT(idx)) {
04070          fprintf(out_file, "  IL_ARG_DESC_VARIANT ");
04071       }
04072    
04073       switch (IL_ARG_MULTI_FLAGS(idx)) {
04074           case 1:
04075              fprintf(out_file, "  PASS_ADDRESS ");
04076           break;
04077 
04078           case 2:
04079              fprintf(out_file, " PASS_ADDRESS_FROM_DV ");
04080           break;
04081 
04082           case 3:
04083              fprintf(out_file, " PASS_DV ");
04084           break;
04085 
04086           case 4:
04087              fprintf(out_file, " PASS_DV_COPY ");
04088           break;
04089 
04090           case 5:
04091              fprintf(out_file, " COPY_IN "); 
04092           break;
04093 
04094           case 6:
04095              fprintf(out_file, " COPY_IN_COPY_OUT ");
04096           break;
04097 
04098           case 7:
04099              fprintf(out_file, " MAKE_DV ");
04100           break;
04101 
04102           case 8:
04103               fprintf(out_file, " COPY_IN_MAKE_DV ");
04104           break;
04105 
04106           case 9:
04107               fprintf(out_file, "  MAKE_NEW_DV");
04108           break;
04109 
04110           case 10:
04111              fprintf(out_file, " PASS_SECTION_ADDRESS ");
04112           break;
04113 
04114           case 11:
04115              fprintf(out_file, " CHECK_CONTIG_FLAG ");
04116           break; 
04117  
04118           default:
04119       
04120           break;
04121       }          
04122 
04123 
04124       if (io_list) {
04125          if (IL_HAS_FUNCTIONS(idx)) {
04126             fprintf(out_file, "  IL_HAS_FUNCTIONS ");
04127          }
04128 
04129          if (IL_MUST_FLATTEN(idx)) {
04130             fprintf(out_file, "  IL_MUST_FLATTEN ");
04131          }
04132 
04133          if (IL_MUST_BE_LOOP(idx)) {
04134             fprintf(out_file, "  IL_MUST_BE_LOOP ");
04135          }
04136       }
04137       else {
04138          if (IL_VECTOR_SUBSCRIPT(idx)) {
04139             fprintf(out_file, "  IL_VECTOR_SUBSCRIPT ");
04140          }
04141 
04142          if (IL_CONSTANT_SUBSCRIPT(idx)) {
04143             fprintf(out_file, "  IL_CONSTANT_SUBSCRIPT ");
04144          }
04145 
04146          if (IL_PE_SUBSCRIPT(idx)) {
04147             fprintf(out_file, "  IL_PE_SUBSCRIPT ");
04148          }
04149       }
04150 
04151       if (IL_DISTRIBUTION_VARIANT(idx)) {
04152          fprintf(out_file, " %s ", distribution_str[IL_DISTRIBUTION(idx)]);
04153       }
04154 
04155       switch (IL_FLD(idx)) {
04156          case CN_Tbl_Idx :
04157          case AT_Tbl_Idx   :
04158          case SB_Tbl_Idx :
04159                  fprintf(out_file," line = %d col = %d\n",IL_LINE_NUM(idx),
04160                                  IL_COL_NUM(idx));
04161                  break;
04162          case IL_Tbl_Idx  :
04163                  fprintf(out_file," list cnt = %d\n", IL_LIST_CNT(idx));
04164                  break;
04165          default         :
04166                  fprintf(out_file,"\n");
04167                  break;
04168       }
04169 
04170 
04171       switch (IL_FLD(idx)) {
04172          case NO_Tbl_Idx  :
04173                  break;
04174          case CN_Tbl_Idx :
04175                  print_const_entry(out_file, IL_IDX(idx), indent + 1);
04176                  break;
04177          case AT_Tbl_Idx   :
04178                  print_attr_name(out_file, IL_IDX(idx), indent + 1);
04179                  break;
04180          case SB_Tbl_Idx :
04181                  fprintf(out_file,"%s%s%s\n", shift, n_shift,
04182                          SB_NAME_PTR(IL_IDX(idx)));
04183                  break;
04184          case IR_Tbl_Idx  :
04185                  dump_ir_ntry(out_file, IL_IDX(idx), indent + 1);
04186                  break;
04187          case IL_Tbl_Idx  :
04188                  print_list(out_file, IL_IDX(idx), 
04189                             indent + 1, IL_LIST_CNT(idx), io_list);
04190                  break;
04191          case SH_Tbl_Idx  :
04192                  fprintf(out_file, "%s%sstmt header idx = %d\n",shift,n_shift,
04193                          IL_IDX(idx));
04194                  break;
04195       }
04196       idx = IL_NEXT_LIST_IDX(idx);
04197    }
04198 
04199    if (idx != NULL_IDX) {
04200 
04201       /* Turn off symbol table dump, so this doesn't loop forever */
04202 
04203       dump_flags.sytb           = FALSE;
04204       dump_flags.ir1_tbl        = FALSE;
04205       dump_flags.ir2_tbl        = FALSE;
04206       dump_flags.ir3_tbl        = FALSE;
04207       dump_flags.ir4_tbl        = FALSE;
04208 
04209       PRINTMSG(1, 670, Internal, 0);
04210    }
04211 
04212    return;
04213   
04214 } /* print_list */
04215 
04216 /******************************************************************************\
04217 |*                                                                            *|
04218 |* Description:                                                               *|
04219 |*      prints constant table entry.                                          *|
04220 |*                                                                            *|
04221 |* Input parameters:                                                          *|
04222 |*      NONE                                                                  *|
04223 |*                                                                            *|
04224 |* Output parameters:                                                         *|
04225 |*      NONE                                                                  *|
04226 |*                                                                            *|
04227 |* Returns:                                                                   *|
04228 |*      NOTHING                                                               *|
04229 |*                                                                            *|
04230 \******************************************************************************/
04231 
04232 static void  print_const_entry(FILE     *out_file,
04233                                int       idx,
04234                                int      indent)
04235 
04236 {
04237    long         i;
04238    char         shift[80];
04239    int          type_idx;
04240    char         str[80];
04241 
04242 
04243    if (idx == 0 || idx > const_tbl_idx) {
04244       fprintf(out_file, "\n*FE90-ERROR* CN index value [%d] is out of range.\n",
04245               idx);
04246       return;
04247    }
04248 
04249    type_idx = CN_TYPE_IDX(idx);
04250 
04251    for (i = 0; i < INDENT_SIZE * indent; i++) {
04252       shift[i] = ' ';
04253       if (i == 79)
04254          break;
04255    }
04256 
04257    shift[i] = '\0';
04258    fprintf(out_file,"%s", shift);
04259    print_const_f(out_file, idx);
04260    fprintf(out_file, "  IDX = %d", idx);
04261 
04262    if (TYP_TYPE(type_idx) == Character) {
04263       fprintf(out_file, "   LEN = %s", 
04264               convert_to_string(&CN_CONST(TYP_IDX(type_idx)),
04265                                 CG_INTEGER_DEFAULT_TYPE,
04266                                 str));
04267 
04268    }
04269 
04270    if (TYP_TYPE(type_idx) == Typeless) {
04271       fprintf(out_file, "  %s  BIT LEN = %s\n",
04272                         basic_type_str[TYP_TYPE(type_idx)],
04273                         CONVERT_CVAL_TO_STR(&TYP_BIT_LEN(type_idx),
04274                                              Integer_8,
04275                                              str));
04276    }
04277    else if (TYP_TYPE(type_idx) <= Last_Linear_Type) {
04278       fprintf(out_file, "  %s * %s\n",
04279                         basic_type_str[TYP_TYPE(type_idx)],
04280                         lin_type_str[TYP_LINEAR(type_idx)]);
04281    }
04282    else {
04283       /* 27Nov00[sos} Was:                                                      */
04284       /* fprintf(out_file, "  %s*(%d)\n", basic_type_str[TYP_TYPE(type_idx)],   */
04285       /*                                  TYP_IDX(type_idx));                   */
04286       fprintf(out_file, "  %s\n", print_type_f(type_idx));
04287    }
04288 
04289    return;
04290 
04291 } /* print_const_entry */
04292 
04293 /******************************************************************************\
04294 |*                                                                            *|
04295 |*      This section contains routines to print an expanded IR/IL format.     *|
04296 |*      This format is FORTRAN like.                                          *|
04297 |*                                                                            *|
04298 \******************************************************************************/
04299 
04300 /******************************************************************************\
04301 |*                                                                            *|
04302 |* Description:                                                               *|
04303 |*      NEED DESCRIPTION                                                      *|
04304 |*                                                                            *|
04305 |* Input parameters:                                                          *|
04306 |*      NONE                                                                  *|
04307 |*                                                                            *|
04308 |* Output parameters:                                                         *|
04309 |*      NONE                                                                  *|
04310 |*                                                                            *|
04311 |* Returns:                                                                   *|
04312 |*      NOTHING                                                               *|
04313 |*                                                                            *|
04314 \******************************************************************************/
04315 
04316 void    print_expanded_stmt(void)
04317 {
04318    int  save_curr_scp_idx;
04319    int  save_curr_stmt_sh_idx;
04320 
04321    save_curr_scp_idx     = curr_scp_idx;
04322    curr_scp_idx          = 1;
04323    save_curr_stmt_sh_idx = curr_stmt_sh_idx;
04324 
04325    print_expanded_stmt_for_scp();
04326 
04327    curr_scp_idx     = save_curr_scp_idx;
04328    curr_stmt_sh_idx = save_curr_stmt_sh_idx;
04329 
04330    return;
04331 }
04332 
04333 
04334 /******************************************************************************\
04335 |*                                                                            *|
04336 |* Description:                                                               *|
04337 |*      NEED DESCRIPTION                                                      *|
04338 |*                                                                            *|
04339 |* Input parameters:                                                          *|
04340 |*      NONE                                                                  *|
04341 |*                                                                            *|
04342 |* Output parameters:                                                         *|
04343 |*      NONE                                                                  *|
04344 |*                                                                            *|
04345 |* Returns:                                                                   *|
04346 |*      NOTHING                                                               *|
04347 |*                                                                            *|
04348 \******************************************************************************/
04349 
04350 static void     print_expanded_stmt_for_scp(void)
04351 {
04352    int          sh_idx;
04353    int          save_curr_scp_idx;
04354 
04355    init_debug_file();
04356 
04357 PROCESS_SIBLING:
04358 
04359    fprintf(debug_file, "\n****************************************"
04360                       "****************************************\n");
04361    fprintf(debug_file, "\n\t\t\t EXPANDED IR FOR %s\n\n",
04362           AT_OBJ_NAME_PTR(SCP_ATTR_IDX(curr_scp_idx)));
04363    fprintf(debug_file, "****************************************"
04364                       "****************************************\n\n");
04365 
04366 
04367    sh_idx = SCP_FIRST_SH_IDX(curr_scp_idx);
04368 
04369    while (sh_idx != NULL_IDX) {
04370       print_expanded_ir(SH_IR_IDX(sh_idx));
04371       fprintf(debug_file, "\n");
04372       sh_idx    = SH_NEXT_IDX(sh_idx);
04373    }
04374 
04375    fprintf(debug_file, "\n****************************************"
04376                       "****************************************\n");
04377 
04378    if (SCP_FIRST_CHILD_IDX(curr_scp_idx) != NULL_IDX) {
04379       save_curr_scp_idx = curr_scp_idx;
04380       curr_scp_idx = SCP_FIRST_CHILD_IDX(curr_scp_idx);
04381       print_expanded_stmt_for_scp();
04382       curr_scp_idx = save_curr_scp_idx;
04383    }
04384 
04385    if (SCP_SIBLING_IDX(curr_scp_idx) != NULL_IDX) {
04386       curr_scp_idx = SCP_SIBLING_IDX(curr_scp_idx);
04387       goto PROCESS_SIBLING;
04388    }
04389 
04390    return;
04391 }
04392 
04393 
04394 /******************************************************************************\
04395 |*                                                                            *|
04396 |* Description:                                                               *|
04397 |*      NEED DESCRIPTION                                                      *|
04398 |*                                                                            *|
04399 |* Input parameters:                                                          *|
04400 |*      NONE                                                                  *|
04401 |*                                                                            *|
04402 |* Output parameters:                                                         *|
04403 |*      NONE                                                                  *|
04404 |*                                                                            *|
04405 |* Returns:                                                                   *|
04406 |*      NOTHING                                                               *|
04407 |*                                                                            *|
04408 \******************************************************************************/
04409 
04410 static void  print_expanded_const(int    idx)
04411 
04412 {
04413    long64       i;
04414    int          type_idx;
04415    char         str[80];
04416 
04417 
04418    type_idx = CN_TYPE_IDX(idx);
04419 
04420    switch (TYP_TYPE(type_idx)) {
04421    case Typeless:
04422       convert_to_string_fmt = Hex_Fmt;
04423       fprintf(debug_file,"0x%s",
04424               convert_to_string(&CN_CONST(idx), type_idx, str));
04425 
04426       if (TYP_BIT_LEN(type_idx) > TARGET_BITS_PER_WORD) {
04427 
04428          for (i = 1; 
04429               i < (TYP_BIT_LEN(type_idx) + TARGET_BITS_PER_WORD - 1) / 
04430                                            TARGET_BITS_PER_WORD;
04431               i++) {
04432             convert_to_string_fmt = Hex_Fmt;
04433             fprintf(debug_file, "%s",
04434                     convert_to_string(&CP_CONSTANT(CN_POOL_IDX(idx)+i),
04435                                        type_idx,
04436                                        str));
04437          }
04438       }
04439       break;
04440 
04441    case Integer:
04442       fprintf(debug_file, "%s", convert_to_string(&CN_CONST(idx), 
04443                                 type_idx, str));
04444       break;
04445 
04446    case Real:
04447       fprintf(debug_file, "%s", convert_to_string(&CN_CONST(idx), 
04448                                 type_idx, str));
04449       break;
04450 
04451    case Character:
04452       fprintf(debug_file,"\"%s\"", (char *) &CN_CONST(idx));
04453       break;
04454 
04455    case Logical:
04456       fprintf(debug_file, "%s", (THIS_IS_TRUE(&(CN_CONST(idx)),
04457                                               CN_TYPE_IDX(idx)) ? 
04458                                          ".TRUE." :  ".FALSE."));
04459       break;
04460 
04461    case Complex:
04462       fprintf(debug_file, "%s", convert_to_string(&CN_CONST(idx),
04463                                                    CN_TYPE_IDX(idx),
04464                                                    str));
04465       break;
04466    }
04467 
04468    fprintf(debug_file, " ");
04469 
04470    return;
04471 
04472 } /* print_expanded_const */
04473 
04474 /******************************************************************************\
04475 |*                                                                            *|
04476 |* Description:                                                               *|
04477 |*      NEED DESCRIPTION                                                      *|
04478 |*                                                                            *|
04479 |* Input parameters:                                                          *|
04480 |*      NONE                                                                  *|
04481 |*                                                                            *|
04482 |* Output parameters:                                                         *|
04483 |*      NONE                                                                  *|
04484 |*                                                                            *|
04485 |* Returns:                                                                   *|
04486 |*      NOTHING                                                               *|
04487 |*                                                                            *|
04488 \******************************************************************************/
04489 
04490 static  void    print_expanded_ir(int   ir_idx)
04491 
04492 {
04493    switch (IR_OPR(ir_idx)) {
04494       case Null_Opr:
04495       case Defined_Un_Opr:
04496       case Alloc_Opr:
04497       case SSD_Alloc_Opr:
04498       case Cvrt_Opr:
04499       case Dealloc_Opr:
04500          fprintf(debug_file, "%s ", opr_str[IR_OPR(ir_idx)]);
04501          break;
04502 
04503 /* Unary operators - Opr Left */
04504 
04505       case Uplus_Opr:       
04506       case Uminus_Opr:
04507       case Not_Opr:
04508          fprintf(debug_file, "%s ", opr_str[IR_OPR(ir_idx)]);
04509          print_expanded_opnd(IR_OPND_L(ir_idx));
04510          break;
04511 
04512 /* Binary operators - Left opr Right */
04513 
04514       case Power_Opr:
04515       case Mult_Opr:        
04516       case Div_Opr:
04517       case Plus_Opr:        
04518       case Minus_Opr:
04519       case Concat_Opr:
04520       case Eq_Opr:          
04521       case Ne_Opr:
04522       case Lt_Opr:          
04523       case Le_Opr:
04524       case Gt_Opr:          
04525       case Ge_Opr:
04526       case And_Opr:
04527       case Or_Opr:
04528       case Eqv_Opr:         
04529       case Neqv_Opr:       
04530       case Asg_Opr:
04531          print_expanded_opnd(IR_OPND_L(ir_idx));
04532          fprintf(debug_file, "%s ", opr_str[IR_OPR(ir_idx)]);
04533          print_expanded_opnd(IR_OPND_R(ir_idx));
04534          break;
04535 
04536 /* Call operators */
04537 
04538       case Bnot_Opr:
04539       case Bor_Opr:
04540       case Beqv_Opr:         
04541       case Bneqv_Opr:       
04542 
04543       case Abs_Opr:
04544       case Cos_Opr:
04545       case Sin_Opr:
04546       case Log_E_Opr:
04547       case Log_10_Opr:
04548       case Tan_Opr:
04549       case Tanh_Opr:
04550       case Sinh_Opr:
04551       case Acos_Opr:
04552       case Asin_Opr:
04553       case Atan_Opr:
04554       case Cosh_Opr:
04555       case Atan2_Opr:
04556       case Aimag_Opr:
04557       case Sqrt_Opr:
04558       case Cot_Opr:
04559       case Exp_Opr:
04560       case Int_Opr:
04561       case Band_Opr:
04562       case Mod_Opr:
04563       case Anint_Opr:
04564       case Nint_Opr:
04565       case Sign_Opr:
04566       case Modulo_Opr:
04567       case Shift_Opr:
04568       case Shiftl_Opr:
04569       case Shiftr_Opr:
04570       case Leadz_Opr:
04571       case Popcnt_Opr:
04572       case Poppar_Opr:
04573       case Aint_Opr:
04574       case Dim_Opr:
04575       case Ranget_Opr:
04576       case Ranset_Opr:
04577       case Ranf_Opr:
04578       case Real_Opr:
04579       case Dble_Opr:
04580       case Mask_Opr:
04581       case Conjg_Opr:
04582       case Dprod_Opr:
04583       case Length_Opr:
04584       case Getpos_Opr:
04585       case Unit_Opr:
04586       case Cmplx_Opr:
04587       case Ichar_Opr:
04588       case Char_Opr:
04589       case Index_Opr:
04590       case Lge_Opr:
04591       case Lgt_Opr:
04592       case Lle_Opr:
04593       case Llt_Opr:
04594       case Fcd_Opr:
04595       case Numarg_Opr:
04596       case Rtc_Opr:
04597       case Cvmgp_Opr:
04598       case Cvmgm_Opr:
04599       case Cvmgz_Opr:
04600       case Cvmgn_Opr:
04601       case Cvmgt_Opr:
04602       case Csmg_Opr:
04603       case Adjustl_Opr:
04604       case Adjustr_Opr:
04605       case Ceiling_Opr:
04606       case Exponent_Opr:
04607       case Floor_Opr:
04608       case Fraction_Opr:
04609       case Spacing_Opr:
04610       case Logical_Opr:
04611       case Nearest_Opr:
04612       case Rrspacing_Opr:
04613       case Scale_Opr:
04614       case Scan_Opr:
04615       case Set_Exponent_Opr:
04616       case Verify_Opr:
04617       case Len_Trim_Opr:
04618       case Dshiftl_Opr:
04619       case Dshiftr_Opr:
04620       case Mmx_Opr:
04621       case Mldmx_Opr:
04622       case Mld_Opr:
04623       case Mul_Opr:
04624       case Mcbl_Opr:
04625       case Cshift_Opr:
04626       case Dot_Product_Opr:
04627       case Matmul_Opr:
04628       case Spread_Opr:
04629       case Transpose_Opr:
04630       case All_Opr:
04631       case Any_Opr:
04632       case Count_Opr:
04633       case Product_Opr:
04634       case Sum_Opr:
04635       case Eoshift_Opr:
04636       case Maxval_Opr:
04637       case Minval_Opr:
04638       case Maxloc_Opr:
04639       case Minloc_Opr:
04640       case Reshape_Opr:
04641       case SRK_Opr:
04642       case SIK_Opr:
04643       case Repeat_Opr:
04644       case Trim_Opr:
04645       case Transfer_Opr:
04646 # ifdef _TARGET_OS_MAX
04647       case My_Pe_Opr:
04648 # endif
04649          fprintf(debug_file, "%s ", opr_str[IR_OPR(ir_idx)]);
04650          print_expanded_opnd(IR_OPND_L(ir_idx));
04651          print_expanded_opnd(IR_OPND_R(ir_idx));
04652          fprintf(debug_file, ")");
04653          break;
04654 
04655       case Call_Opr:
04656          fprintf(debug_file, "%s ", opr_str[IR_OPR(ir_idx)]);
04657          print_expanded_opnd(IR_OPND_L(ir_idx));
04658          fprintf(debug_file, "(");
04659          print_expanded_opnd(IR_OPND_R(ir_idx));
04660          fprintf(debug_file, ")");
04661          break;
04662 
04663       case Defined_Bin_Opr:
04664 
04665       case Alt_Return_Opr:
04666       case Case_Opr:
04667       case Allocate_Opr:
04668       case Deallocate_Opr:
04669       case End_Opr:
04670       case Entry_Opr:
04671       case Nullify_Opr:
04672       case Pause_Opr:
04673       case Ptr_Asg_Opr:
04674       case Flat_Array_Asg_Opr:
04675       case Return_Opr:
04676       case Select_Opr:
04677       case Stmt_Func_Call_Opr:
04678       case Stop_Opr:
04679       case Max_Opr:
04680       case Min_Opr:
04681       case Read_Formatted_Opr:
04682       case Read_Unformatted_Opr:
04683       case Read_Namelist_Opr:
04684       case Write_Formatted_Opr:
04685       case Write_Unformatted_Opr:
04686       case Write_Namelist_Opr:
04687       case Inquire_Iolength_Opr:
04688       case Dv_Whole_Copy_Opr:
04689       case Dv_Whole_Def_Opr:
04690       case Dv_Deref_Opr:
04691       case Dv_Access_Base_Addr:
04692       case Dv_Set_Base_Addr:
04693       case Dv_Access_El_Len:
04694       case Dv_Set_El_Len:
04695       case Dv_Access_Assoc:
04696       case Dv_Set_Assoc:
04697       case Dv_Access_Ptr_Alloc:
04698       case Dv_Set_Ptr_Alloc:
04699       case Dv_Access_P_Or_A:
04700       case Dv_Set_P_Or_A:
04701       case Dv_Access_A_Contig:
04702       case Dv_Set_A_Contig:
04703       case Dv_Access_N_Dim:
04704       case Dv_Set_N_Dim:
04705       case Dv_Access_Typ_Code:
04706       case Dv_Set_Typ_Code:
04707       case Dv_Access_Orig_Base:
04708       case Dv_Set_Orig_Base:
04709       case Dv_Access_Orig_Size:
04710       case Dv_Set_Orig_Size:
04711       case Dv_Access_Low_Bound:
04712       case Dv_Set_Low_Bound:
04713       case Dv_Access_Extent:
04714       case Dv_Set_Extent:
04715       case Dv_Access_Stride_Mult:
04716       case Dv_Set_Stride_Mult:
04717       case Br_Aif_Opr:
04718       case Br_Asg_Opr:
04719       case Br_Index_Opr:
04720       case Br_True_Opr:
04721       case Br_Uncond_Opr:
04722       case Case_Range_Opr:
04723       case Implied_Do_Opr:
04724       case Kwd_Opr:
04725       case Loc_Opr:
04726       case Aloc_Opr:
04727       case Const_Tmp_Loc_Opr:
04728       case Len_Opr:
04729       case Clen_Opr:
04730       case Paren_Opr:
04731       case Struct_Opr:
04732       case Struct_Construct_Opr:
04733       case Array_Construct_Opr:
04734       case Constant_Struct_Construct_Opr:
04735       case Constant_Array_Construct_Opr:
04736       case Subscript_Opr:
04737       case Whole_Subscript_Opr:
04738       case Section_Subscript_Opr:
04739       case Alloc_Obj_Opr:
04740       case Dealloc_Obj_Opr:
04741       case Substring_Opr:
04742       case Whole_Substring_Opr:
04743       case Triplet_Opr:
04744       case Label_Opr:
04745       case Loop_Info_Opr:
04746       case Loop_End_Opr:
04747       case Init_Opr:
04748       case Init_Reloc_Opr:
04749       case Use_Opr:
04750       case Where_Opr:
04751       case Real_Div_To_Int_Opr:
04752       case Suppress_Opr:
04753       case Cache_Bypass_Cdir_Opr:
04754       case Vector_Cdir_Opr:
04755       case Novector_Cdir_Opr:
04756       case Task_Cdir_Opr:
04757       case Notask_Cdir_Opr:
04758       case Bounds_Cdir_Opr:
04759       case Nobounds_Cdir_Opr:
04760       case Recurrence_Cdir_Opr:
04761       case Norecurrence_Cdir_Opr:
04762       case Vsearch_Cdir_Opr:
04763       case Novsearch_Cdir_Opr:
04764       case Bl_Cdir_Opr:
04765       case Nobl_Cdir_Opr:
04766       case Inline_Cdir_Opr:
04767       case Noinline_Cdir_Opr:
04768       case Ivdep_Cdir_Opr:
04769       case Nextscalar_Cdir_Opr:
04770       case Prefervector_Cdir_Opr:
04771       case Prefertask_Cdir_Opr:
04772       case Shortloop_Cdir_Opr:
04773       case Shortloop128_Cdir_Opr:
04774       case Cachealign_Cdir_Opr:
04775       case Nounroll_Cdir_Opr:
04776       case Unroll_Cdir_Opr:
04777       case Align_Cdir_Opr:
04778       case Case_Cmic_Opr:
04779       case Endcase_Cmic_Opr:
04780       case Continue_Cmic_Opr:
04781       case Cncall_Cmic_Opr:
04782       case Doall_Cmic_Opr:
04783       case Doparallel_Cmic_Opr:
04784       case Enddo_Cmic_Opr:
04785       case Guard_Cmic_Opr:
04786       case Endguard_Cmic_Opr:
04787       case Numcpus_Cmic_Opr:
04788       case Parallel_Cmic_Opr:
04789       case Endparallel_Cmic_Opr:
04790       case Permutation_Cmic_Opr:
04791       case Taskcommon_Cmic_Opr:
04792       case Wait_Cmic_Opr:
04793       case Send_Cmic_Opr:
04794       case The_Last_Opr:
04795          fprintf(debug_file, "%s ", opr_str[IR_OPR(ir_idx)]);
04796          print_expanded_opnd(IR_OPND_L(ir_idx));
04797          print_expanded_opnd(IR_OPND_R(ir_idx));
04798          break;
04799 
04800       }
04801    return;
04802 }
04803 
04804 
04805 /******************************************************************************\
04806 |*                                                                            *|
04807 |* Description:                                                               *|
04808 |*      NEED DESCRIPTION                                                      *|
04809 |*                                                                            *|
04810 |* Input parameters:                                                          *|
04811 |*      NONE                                                                  *|
04812 |*                                                                            *|
04813 |* Output parameters:                                                         *|
04814 |*      NONE                                                                  *|
04815 |*                                                                            *|
04816 |* Returns:                                                                   *|
04817 |*      NOTHING                                                               *|
04818 |*                                                                            *|
04819 \******************************************************************************/
04820 
04821 static  void    print_expanded_opnd(opnd_type   the_opnd)
04822 
04823 {
04824    switch(OPND_FLD(the_opnd)) {
04825 
04826    case AT_Tbl_Idx:
04827       fprintf(debug_file, "%s ", AT_OBJ_NAME_PTR(OPND_IDX(the_opnd)));
04828       break;
04829 
04830    case CN_Tbl_Idx:
04831       print_expanded_const(OPND_IDX(the_opnd));
04832       break;
04833 
04834    case IR_Tbl_Idx:
04835       print_expanded_ir(OPND_IDX(the_opnd));
04836       break;
04837 
04838    case IL_Tbl_Idx:
04839       print_expanded_il(OPND_IDX(the_opnd));
04840       break;
04841 
04842    }
04843 
04844    return;
04845 }
04846 
04847 
04848 /******************************************************************************\
04849 |*                                                                            *|
04850 |* Description:                                                               *|
04851 |*      NEED DESCRIPTION                                                      *|
04852 |*                                                                            *|
04853 |* Input parameters:                                                          *|
04854 |*      NONE                                                                  *|
04855 |*                                                                            *|
04856 |* Output parameters:                                                         *|
04857 |*      NONE                                                                  *|
04858 |*                                                                            *|
04859 |* Returns:                                                                   *|
04860 |*      NOTHING                                                               *|
04861 |*                                                                            *|
04862 \******************************************************************************/
04863 
04864 static  void    print_expanded_il(int   il_idx)
04865 
04866 {
04867    while (il_idx != NULL_IDX) {
04868       switch (IL_FLD(il_idx)) {
04869       case AT_Tbl_Idx:
04870          fprintf(debug_file, "%s ", AT_OBJ_NAME_PTR(IL_IDX(il_idx)));
04871          break;
04872 
04873       case CN_Tbl_Idx:
04874          print_expanded_const(IL_IDX(il_idx));
04875          break;
04876 
04877       case IR_Tbl_Idx:
04878          print_expanded_ir(IL_IDX(il_idx));
04879          break;
04880 
04881       case IL_Tbl_Idx:
04882          print_expanded_il(IL_IDX(il_idx));
04883          break;
04884 
04885       case SH_Tbl_Idx:
04886          break;
04887       }
04888       il_idx = IL_NEXT_LIST_IDX(il_idx);
04889 
04890       if (il_idx != NULL_IDX) {
04891          fprintf(debug_file, ", ");
04892       }
04893    }
04894 
04895    return;
04896 
04897 }  /* print_expanded_il */
04898 
04899 /******************************************************************************\
04900 |*                                                                            *|
04901 |* The following are the actual dump routines for each table.  Global variable*|
04902 |* full_debug_dump is used to control how much is dumped.  If it is TRUE, all *|
04903 |* fields are printed in whatever routine is being called.  If it is FALSE,   *|
04904 |* fields are printed except for index fields.  This is to allow for better   *|
04905 |* comparisons.  Default is FALSE.                                            *|
04906 |*                                                                            *|
04907 \******************************************************************************/
04908 
04909 /******************************************************************************\
04910 |*                                                                            *|
04911 |* Description:                                                               *|
04912 |*      Prints one attr list table entry to the specified output file.        *|
04913 |*                                                                            *|
04914 |* Input parameters:                                                          *|
04915 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
04916 |*      Index of attribute list entry to print.                               *|
04917 |*                                                                            *|
04918 |* Output parameters:                                                         *|
04919 |*      NONE                                                                  *|
04920 |*                                                                            *|
04921 |* Returns:                                                                   *|
04922 |*      NOTHING                                                               *|
04923 |*                                                                            *|
04924 \******************************************************************************/
04925 static void dump_al_ntry (FILE          *out_file,
04926                           int            al_idx)
04927 
04928 {
04929    if (al_idx > attr_list_tbl_idx) {
04930       fprintf(out_file, "\n*FE90-ERROR* AL index value [%d] is out of range.\n",
04931               al_idx);
04932       return;
04933    }
04934 
04935    if (AL_IDX_IS_EQ(al_idx)) {
04936       fprintf(out_file, " %-10s= %-6d  %-5s= %-6d\n",
04937               "AL_EQ_IDX", AL_EQ_IDX(al_idx),
04938               "NEXT", AL_NEXT_IDX(al_idx));
04939    }
04940    else if (AL_FREE(al_idx)) {
04941       fprintf(out_file, " %-10s= %-6s  %-5s= %-6d\n",
04942               "AL_FREE", boolean_str[AL_FREE(al_idx)],
04943               "NEXT", AL_NEXT_IDX(al_idx));
04944    }
04945    else {
04946       fprintf(out_file, " %-4s= %-6d %-4s= %-6d %-14s= %-6d %-s\n",
04947                         "ATTR", AL_ATTR_IDX(al_idx),
04948                         "NEXT", AL_NEXT_IDX(al_idx),
04949                         "Special field", AL_ENTRY_COUNT(al_idx),
04950                          AT_OBJ_NAME_PTR(AL_ATTR_IDX(al_idx)));
04951    }
04952 
04953    return;
04954 
04955 }  /* dump_al_ntry */
04956 
04957 /******************************************************************************\
04958 |*                                                                            *|
04959 |* Description:                                                               *|
04960 |*      Prints one attr table entry to the specified output file.             *|
04961 |*                                                                            *|
04962 |* Input parameters:                                                          *|
04963 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
04964 |*      Index of attribute entry to print.                                    *|
04965 |*                                                                            *|
04966 |* Output parameters:                                                         *|
04967 |*      NONE                                                                  *|
04968 |*                                                                            *|
04969 |* Returns:                                                                   *|
04970 |*      NOTHING                                                               *|
04971 |*                                                                            *|
04972 \******************************************************************************/
04973 
04974 static void dump_at_ntry (FILE          *out_file,
04975                           int            at_idx,
04976                           boolean        dump_all)
04977 
04978 {
04979    int          il_idx;
04980    int          ro_idx;
04981    char         str[80];
04982    char         conv_str[80];
04983 
04984 
04985    if (at_idx > attr_tbl_idx) {
04986       fprintf(out_file, "\n*FE90-ERROR* AT index value [%d] is out of range.\n",
04987               at_idx);
04988       return;
04989    }
04990 
04991    /* Note that the fields are displayed in alphabetical order.         */
04992 
04993    fprintf(out_file, "%-s\n", AT_OBJ_NAME_PTR(at_idx));
04994 
04995    fprintf(out_file, "  %-25s %-25s %-16s= %-8d\n",
04996                      obj_class_str[AT_OBJ_CLASS(at_idx)],
04997                      reference_str[AT_REFERENCED(at_idx)],
04998                      "IDX", at_idx);
04999 
05000    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05001                      "AT_ACCESS_SET", boolean_str[AT_ACCESS_SET(at_idx)],
05002                      "AT_ACTUAL_ARG", boolean_str[AT_ACTUAL_ARG(at_idx)],
05003                      "AT_ALT_DARG",   boolean_str[AT_ALT_DARG(at_idx)]);
05004 
05005    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05006                      "AT_ARG_TO_KIND",   boolean_str[AT_ARG_TO_KIND(at_idx)],
05007                      "AT_ATTR_LINK",     AT_ATTR_LINK(at_idx),
05008                      "AT_CIF_DONE",      boolean_str[AT_CIF_DONE(at_idx)]);
05009 
05010    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05011                     "AT_CIF_IN_USAGE_",boolean_str[AT_CIF_IN_USAGE_REC(at_idx)],
05012                     "AT_CIF_SYMBOL_ID", AT_CIF_SYMBOL_ID(at_idx),
05013                     "AT_CIF_USE_IN_BN", boolean_str[AT_CIF_USE_IN_BND(at_idx)]);
05014 
05015    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05016                      "AT_COMPILER_GEND", boolean_str[AT_COMPILER_GEND(at_idx)], 
05017                      "AT_DCL_ERR", boolean_str[AT_DCL_ERR(at_idx)],
05018                      "AT_DEF_COLUMN", AT_DEF_COLUMN(at_idx));
05019 
05020    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05021                      "AT_DEF_LINE", AT_DEF_LINE(at_idx),
05022                      "AT_DEF_IN_CHILD", boolean_str[AT_DEF_IN_CHILD(at_idx)],
05023                      "AT_DEFINED", boolean_str[AT_DEFINED(at_idx)]);
05024 
05025    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05026                    "AT_ELEMENTAL_INT", boolean_str[AT_ELEMENTAL_INTRIN(at_idx)],
05027                    "AT_HOST_ASSOCIAT",boolean_str[AT_HOST_ASSOCIATED(at_idx)],
05028                    "AT_IGNORE_ATTR_L",boolean_str[AT_IGNORE_ATTR_LINK(at_idx)]);
05029 
05030    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05031                      "AT_IS_DARG", boolean_str[AT_IS_DARG(at_idx)],
05032                      "AT_IS_INTRIN", boolean_str[AT_IS_INTRIN(at_idx)],
05033                      "AT_LOCKED_IN", boolean_str[AT_LOCKED_IN(at_idx)]);
05034 
05035    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
05036                      "AT_MODULE_IDX", AT_MODULE_IDX(at_idx),
05037                      "AT_MODULE_OBJECT", boolean_str[AT_MODULE_OBJECT(at_idx)],
05038                      "AT_NAME_LEN", AT_NAME_LEN(at_idx));
05039 
05040    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05041                      "AT_NAMELIST_OBJ", boolean_str[AT_NAMELIST_OBJ(at_idx)],
05042                      "AT_NOT_VISIBLE", boolean_str[AT_NOT_VISIBLE(at_idx)],
05043                      "AT_ORIG_MODULE_I", AT_ORIG_MODULE_IDX(at_idx));
05044 
05045    fprintf(out_file, "  %-16s= %-7d %-16s= %-s\n",
05046                      "AT_ORIG_NAME_LEN", AT_ORIG_NAME_LEN(at_idx),
05047                      "AT_ORIG_NAME_IDX", (AT_ORIG_NAME_IDX(at_idx) == NULL_IDX)
05048                                          ? "0": AT_ORIG_NAME_PTR(at_idx));
05049 
05050    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05051                      "AT_OPTIONAL", boolean_str[AT_OPTIONAL(at_idx)],
05052                      "AT_PRIVATE", access_str[AT_PRIVATE(at_idx)],
05053                      "AT_REF_IN_CHILD", boolean_str[AT_REF_IN_CHILD(at_idx)]);
05054 
05055    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05056                      "AT_SEMANTICS_DON", boolean_str[AT_SEMANTICS_DONE(at_idx)],
05057                      "AT_TYPED", boolean_str[AT_TYPED(at_idx)],
05058                      "AT_USE_ASSOCIATE",boolean_str[AT_USE_ASSOCIATED(at_idx)]);
05059 
05060    /* Note that the fields are displayed in alphabetical order.         */
05061 
05062    switch (AT_OBJ_CLASS(at_idx)) {
05063 
05064       case Data_Obj:
05065 
05066          fprintf(out_file, "  %-25s %-16s= %-7s %-16s= %-8s\n",
05067                  atd_class_str[ATD_CLASS(at_idx)],
05068                  "ATD_ALIGN_SYMBOL", boolean_str[ATD_ALIGN_SYMBOL(at_idx)],
05069                  "ATD_ALIGNMENT", align_str[ATD_ALIGNMENT(at_idx)]);
05070 
05071          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05072                  "ATD_ALLOCATABLE", boolean_str[ATD_ALLOCATABLE(at_idx)],
05073                  "ATD_ARRAY_IDX", ATD_ARRAY_IDX(at_idx),
05074                  "ATD_AUTOMATIC", boolean_str[ATD_AUTOMATIC(at_idx)]);
05075 
05076          if (ATD_AUTOMATIC(at_idx)) {
05077             fprintf(out_file, "  %-16s= %-7d %-33s\n",
05078                    "ATD_AUTO_BASE_ID", ATD_AUTO_BASE_IDX(at_idx),
05079                    print_at_name(ATD_AUTO_BASE_IDX(at_idx)));
05080          }
05081 
05082          if (ATD_CLASS(at_idx) == Variable) {
05083             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05084                     "ATD_ASSIGN_TMP_I", ATD_ASSIGN_TMP_IDX(at_idx),
05085                     "ATD_AUXILIARY", boolean_str[ATD_AUXILIARY(at_idx)],
05086                     "ATD_BOUNDS_CHECK", boolean_str[ATD_BOUNDS_CHECK(at_idx)]);
05087 
05088             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05089                 "ATD_CACHE_ALIGN", boolean_str[ATD_CACHE_ALIGN(at_idx)],
05090                 "ATD_CACHE_BYPASS", boolean_str[ATD_CACHE_BYPASS_ARRAY(at_idx)],
05091                 "ATD_CACHE_NOALLO", boolean_str[ATD_CACHE_NOALLOC(at_idx)]);
05092 
05093             fprintf(out_file, "  %-16s= %-7s\n",
05094                 "ATD_CHAR_LEN_IN_", boolean_str[ATD_CHAR_LEN_IN_DV(at_idx)]);
05095          }
05096          else {
05097             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05098                "ATD_AUXILIARY", boolean_str[ATD_AUXILIARY(at_idx)],
05099                "ATD_BOUNDS_CHECK", boolean_str[ATD_BOUNDS_CHECK(at_idx)],
05100                "ATD_CACHE_BYPASS", boolean_str[ATD_CACHE_BYPASS_ARRAY(at_idx)]);
05101 
05102             if (ATD_CLASS(at_idx) == Compiler_Tmp) {
05103                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05104                   "ATD_CACHE_NOALLO", boolean_str[ATD_CACHE_NOALLOC(at_idx)],
05105                   "ATD_CHAR_LEN_IN_", boolean_str[ATD_CHAR_LEN_IN_DV(at_idx)],
05106                   "ATD_DEFINING_ATT", ATD_DEFINING_ATTR_IDX(at_idx));
05107             }
05108             else {
05109                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s\n",
05110                   "ATD_CACHE_NOALLO", boolean_str[ATD_CACHE_NOALLOC(at_idx)],
05111                   "ATD_CHAR_LEN_IN_", boolean_str[ATD_CHAR_LEN_IN_DV(at_idx)]);
05112             }
05113          }
05114 
05115 
05116          if (ATD_CLASS(at_idx) == Struct_Component) {
05117            fprintf(out_file, "  %-16s= %-7d \n",
05118                    "ATD_DERIVED_TYPE", ATD_DERIVED_TYPE_IDX(at_idx));
05119 
05120             print_fld_idx(out_file, "ATD_CPNT_OFFSET_",
05121                           ATD_OFFSET_FLD(at_idx),
05122                           ATD_CPNT_OFFSET_IDX(at_idx));
05123 
05124             print_fld_idx(out_file, "ATD_CPNT_INIT_ID",
05125                           (fld_type) ATD_FLD(at_idx),
05126                           ATD_CPNT_INIT_IDX(at_idx));
05127 
05128             if (ATD_CPNT_INIT_IDX(at_idx) != NULL_IDX) { 
05129 
05130                if (ATD_FLD(at_idx) == IR_Tbl_Idx) {
05131                   dump_ir_ntry(out_file, ATD_CPNT_INIT_IDX(at_idx), 5);
05132                }
05133                else if (ATD_FLD(at_idx) == CN_Tbl_Idx) {
05134                   dump_cn_ntry(out_file, ATD_CPNT_INIT_IDX(at_idx));
05135                }
05136             }
05137          }
05138          else if (ATD_CLASS(at_idx) == Constant) {
05139              print_fld_idx(out_file, "ATD_CONST_IDX",
05140                            (fld_type) ATD_FLD(at_idx),
05141                            ATD_CONST_IDX(at_idx));
05142          }
05143 
05144          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05145                  "ATD_COPY_ASSUMED",boolean_str[ATD_COPY_ASSUMED_SHAPE(at_idx)],
05146                  "ATD_DATA_INIT", boolean_str[ATD_DATA_INIT(at_idx)],
05147                  "ATD_DCL_EQUIV", boolean_str[ATD_DCL_EQUIV(at_idx)]);
05148 
05149          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05150                  "ATD_DISTRIBUTION", ATD_DISTRIBUTION_IDX(at_idx),
05151                  "ATD_WAS_SCOPED", boolean_str[ATD_WAS_SCOPED(at_idx)],
05152                  "ATD_DYNAMIC", boolean_str[ATD_DYNAMIC(at_idx)]);
05153 
05154          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05155                  "ATD_EQUIV", boolean_str[ATD_EQUIV(at_idx)],
05156                  "ATD_EQUIV_IN_BND",boolean_str[ATD_EQUIV_IN_BNDS_EXPR(at_idx)],
05157                  "ATD_EQUIV_LIST", ATD_EQUIV_LIST(at_idx));
05158 
05159          if (ATD_EQUIV_LIST(at_idx) != NULL_IDX) {
05160             print_al_list(out_file, ATD_EQUIV_LIST(at_idx));
05161          }
05162 
05163 # if defined(_EXPRESSION_EVAL)
05164 
05165          if (cmd_line_flags.expression_eval_stmt || 
05166              cmd_line_flags.expression_eval_expr) {
05167             fprintf(out_file, "  %-16s= %-7s\n",
05168                    "ATD_EXPR_EVAL_TMP", boolean_str[ATD_EXPR_EVAL_TMP(at_idx)]);
05169          }
05170 # endif
05171 
05172          fprintf(out_file,"  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05173                  "ATD_FILL_SYMBOL", boolean_str[ATD_FILL_SYMBOL(at_idx)],
05174                  "ATD_FIRST_SEEN_I", ATD_FIRST_SEEN_IL_IDX(at_idx),
05175                  "ATD_FORALL_INDEX",boolean_str[ATD_FORALL_INDEX(at_idx)]);
05176 
05177          if (ATD_CLASS(at_idx) == Function_Result) {
05178             fprintf(out_file, "  %-16s= %-s\n",
05179                     "Function Name", print_at_name(ATD_FUNC_IDX(at_idx)));
05180          }
05181          else if (ATD_CLASS(at_idx) == Dummy_Argument) {
05182             fprintf(out_file,"  %-16s= %-7s %-16s= %-7s\n",
05183                     "ATD_INTENT",intent_str[ATD_INTENT(at_idx)],
05184                     "ATD_INTRIN_DARG", boolean_str[ATD_INTRIN_DARG(at_idx)]);
05185 
05186             if (ATD_INTRIN_DARG(at_idx)) {
05187                fprintf(out_file,"  %-20s= %-22o\n",
05188                        "ATD_INTRIN_DARG_TYPE", ATD_INTRIN_DARG_TYPE(at_idx));
05189             }
05190          }
05191 
05192          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05193                  "ATD_IGNORE_TKR", boolean_str[ATD_IGNORE_TKR(at_idx)],
05194                  "ATD_IM_A_DOPE", boolean_str[ATD_IM_A_DOPE(at_idx)],
05195                  "ATD_IMP_DO_LCV", boolean_str[ATD_IMP_DO_LCV(at_idx)]);
05196 
05197          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05198                  "ATD_IN_ASSIGN", boolean_str[ATD_IN_ASSIGN(at_idx)],
05199                  "ATD_IN_COMMON", boolean_str[ATD_IN_COMMON(at_idx)],
05200                  "ATD_LCV_IS_CONST", boolean_str[ATD_LCV_IS_CONST(at_idx)]);
05201 
05202          if (ATD_CLASS(at_idx) == Compiler_Tmp ||
05203              ATD_CLASS(at_idx) == Dummy_Argument) {
05204 
05205             if (ATD_NO_ENTRY_LIST(at_idx) != NULL_IDX) {
05206                fprintf(out_file,"\n");
05207                print_al_list(out_file, ATD_NO_ENTRY_LIST(at_idx));
05208             }
05209          }
05210 
05211          if ((ATD_CLASS(at_idx) == Variable ||
05212               ATD_CLASS(at_idx) == Compiler_Tmp) &&
05213               ATD_IN_COMMON(at_idx)) {
05214             fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05215                 "ATD_LIVE_DO_VAR", boolean_str[ATD_LIVE_DO_VAR(at_idx)],
05216                 "ATD_NEXT_MEMBER_", ATD_NEXT_MEMBER_IDX(at_idx),
05217                 "ATD_NOBOUNDS_CHE",boolean_str[ATD_NOBOUNDS_CHECK(at_idx)]);
05218 
05219             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s\n",
05220                 "ATD_NOT_PT_UNIQU", boolean_str[ATD_NOT_PT_UNIQUE_MEM(at_idx)],
05221                  "ATD_OFFSET_ASSIG",boolean_str[ATD_OFFSET_ASSIGNED(at_idx)]);
05222          }
05223          else {
05224             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-7s\n",
05225                 "ATD_LIVE_DO_VAR", boolean_str[ATD_LIVE_DO_VAR(at_idx)],
05226                 "ATD_NOBOUNDS_CHE",boolean_str[ATD_NOBOUNDS_CHECK(at_idx)],
05227                 "ATD_NOT_PT_UNIQU", boolean_str[ATD_NOT_PT_UNIQUE_MEM(at_idx)]);
05228 
05229             fprintf(out_file, "  %-16s= %-7s\n",
05230                 "ATD_OFFSET_ASSIG",boolean_str[ATD_OFFSET_ASSIGNED(at_idx)]);
05231          }
05232 
05233          if ((ATD_CLASS(at_idx) == Variable && !ATD_AUTOMATIC(at_idx)) ||
05234              ((ATD_CLASS(at_idx) == Dummy_Argument ||
05235                ATD_CLASS(at_idx) == Compiler_Tmp) && 
05236                ATD_OFFSET_ASSIGNED(at_idx)) ||
05237              ATD_CLASS(at_idx) == Function_Result) {
05238             print_fld_idx(out_file, "ATD_OFFSET_IDX",
05239                           ATD_OFFSET_FLD(at_idx),
05240                           ATD_OFFSET_IDX(at_idx));
05241          }
05242          else if (ATD_CLASS(at_idx) == CRI__Pointee) {
05243             fprintf(out_file,"  %-16s= %-7d %-s\n",
05244                    "Pointer Name", ATD_PTR_IDX(at_idx),
05245                    print_at_name(ATD_PTR_IDX(at_idx)));
05246          }
05247 
05248          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05249                  "ATD_PARENT_OBJEC",boolean_str[ATD_PARENT_OBJECT(at_idx)],
05250                  "ATD_PE_ARRAY_IDX", ATD_PE_ARRAY_IDX(at_idx),
05251                  "ATD_PERMUTATION", boolean_str[ATD_PERMUTATION(at_idx)]);
05252 
05253          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05254                  "ATD_POINTER", boolean_str[ATD_POINTER(at_idx)],
05255                  "ATD_PTR_ASSIGNED", boolean_str[ATD_PTR_ASSIGNED(at_idx)],
05256                  "ATD_PTR_HALF_WOR", boolean_str[ATD_PTR_HALF_WORD(at_idx)]);
05257 
05258          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05259                  "ATD_PTR_TYPE_SET",boolean_str[ATD_PTR_TYPE_SET(at_idx)],
05260                  "ATD_PURE",boolean_str[ATD_PURE(at_idx)],
05261                  "ATD_RESHAPE ARRA",boolean_str[ATD_RESHAPE_ARRAY_OPT(at_idx)]);
05262 
05263          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05264                  "ATD_RESHAPE_IDX", ATD_RESHAPE_ARRAY_IDX(at_idx),
05265                  "ATD_SAVED", boolean_str[ATD_SAVED(at_idx)],
05266                  "ATD_SECTION_GP", boolean_str[ATD_SECTION_GP(at_idx)]);
05267 
05268          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05269                  "ATD_SECTION_NON_", boolean_str[ATD_SECTION_NON_GP(at_idx)],
05270                  "ATD_SEEN_AS_LCV", boolean_str[ATD_SEEN_AS_LCV(at_idx)],
05271                  "ATD_SEEN_AS_IO_", boolean_str[ATD_SEEN_AS_IO_LCV(at_idx)]);
05272 
05273 
05274          if (ATD_CLASS(at_idx) == Dummy_Argument) {
05275 
05276             if (ATD_SF_DARG(at_idx)) {
05277                print_fld_idx(out_file, "ATD_SF_ARG_IDX",
05278                              (fld_type) ATD_FLD(at_idx),
05279                              ATD_SF_ARG_IDX(at_idx));
05280 
05281                fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05282                  "ATD_SF_LINK", ATD_SF_LINK(at_idx),
05283                  "ATD_SYMBOLIC_CON",boolean_str[ATD_SYMBOLIC_CONSTANT(at_idx)],
05284                  "ATD_SYMMETRIC", boolean_str[ATD_SYMMETRIC(at_idx)]);
05285             }
05286             else {
05287                 fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05288                   "ATD_SF_DARG", boolean_str[ATD_SF_DARG(at_idx)],
05289                   "ATD_SYMBOLIC_CON",boolean_str[ATD_SYMBOLIC_CONSTANT(at_idx)],
05290                   "ATD_SYMMETRIC", boolean_str[ATD_SYMMETRIC(at_idx)]);
05291             }
05292 
05293             fprintf(out_file, "  %-16s= %-7s\n",
05294                    "ATD_SEEN_IN_IMP", boolean_str[ATD_SEEN_IN_IMP_DO(at_idx)]);
05295          }
05296          else {
05297              fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05298                   "ATD_SEEN_IN_IMP", boolean_str[ATD_SEEN_IN_IMP_DO(at_idx)],
05299                   "ATD_SYMBOLIC_CON",boolean_str[ATD_SYMBOLIC_CONSTANT(at_idx)],
05300                   "ATD_SYMMETRIC", boolean_str[ATD_SYMMETRIC(at_idx)]);
05301          }
05302 
05303          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05304                  "ATD_SEEN_OUTSID",boolean_str[ATD_SEEN_OUTSIDE_IMP_DO(at_idx)],
05305                  "ATD_STACK", boolean_str[ATD_STACK(at_idx)],
05306                  "ATD_STOR_BLK_IDX", ATD_STOR_BLK_IDX(at_idx));
05307 
05308          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05309                  "ATD_TARGET", boolean_str[ATD_TARGET(at_idx)],
05310                  "ATD_TASK_COPYIN", boolean_str[ATD_TASK_COPYIN(at_idx)],
05311                  "ATD_TASK_FIRSTPR",boolean_str[ATD_TASK_FIRSTPRIVATE(at_idx)]);
05312 
05313          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05314                  "ATD_TASK_GETFIRS", boolean_str[ATD_TASK_GETFIRST(at_idx)],
05315                  "ATD_TASK_LASTLOC",boolean_str[ATD_TASK_LASTLOCAL(at_idx)],
05316                  "ATD_TASK_LASTPRI", boolean_str[ATD_TASK_LASTPRIVATE(at_idx)]);
05317 
05318          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05319                  "ATD_TASK_LASTTHR",boolean_str[ATD_TASK_LASTTHREAD(at_idx)],
05320                  "ATD_TASK_PRIVATE", boolean_str[ATD_TASK_PRIVATE(at_idx)],
05321                  "ATD_TASK_SHARED", boolean_str[ATD_TASK_SHARED(at_idx)]);
05322 
05323 
05324          if (ATD_CLASS(at_idx) == Compiler_Tmp) {
05325             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05326                  "ATD_TMP_GEN_ZERO", boolean_str[ATD_TMP_GEN_ZERO(at_idx)],
05327                  "ATD_TMP_HAS_CVRT", boolean_str[ATD_TMP_HAS_CVRT_OPR(at_idx)],
05328                  "ATD_TMP_INIT_NOT",boolean_str[ATD_TMP_INIT_NOT_DONE(at_idx)]);
05329 
05330             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s=%-7s\n",
05331                 "ATD_TMP_NEEDS_CI",boolean_str[ATD_TMP_NEEDS_CIF(at_idx)],
05332                 "ATD_TMP_SEMANTIC",boolean_str[ATD_TMP_SEMANTICS_DONE(at_idx)],
05333                 "ATD_TOO_BIG_FOR_",boolean_str[ATD_TOO_BIG_FOR_DV(at_idx)]);
05334 
05335             print_fld_idx(out_file, "ATD_TMP_IDX",
05336                           (fld_type) ATD_FLD(at_idx),
05337                           ATD_TMP_IDX(at_idx));
05338 
05339             if (ATD_SYMBOLIC_CONSTANT(at_idx) && ATD_FLD(at_idx) == IR_Tbl_Idx){
05340                dump_ir_ntry(out_file, ATD_TMP_IDX(at_idx), 4);
05341             }
05342 
05343             if (ATD_TMP_INIT_NOT_DONE(at_idx)) { /* dump tmp's constant */
05344                fprintf(out_file, "\nCONSTANT FOR INIT\n");
05345 
05346                if (ATD_FLD(at_idx) == CN_Tbl_Idx) {
05347                   dump_cn_ntry(out_file, ATD_TMP_IDX(at_idx));
05348                }
05349                else {
05350                   fprintf(out_file, "COUNT = \n");
05351                   dump_cn_ntry(out_file, IR_IDX_L(ATD_TMP_IDX(at_idx)));
05352                   fprintf(out_file, "VALUE = \n");
05353                   dump_cn_ntry(out_file, IR_IDX_R(ATD_TMP_IDX(at_idx)));
05354                }
05355 
05356             }
05357          }
05358          else {
05359             fprintf(out_file, "  %-16s= %-7s\n",
05360                 "ATD_TOO_BIG_FOR_",boolean_str[ATD_TOO_BIG_FOR_DV(at_idx)]);
05361          }
05362 
05363          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-s\n",
05364                            "ATD_VOLATILE",boolean_str[ATD_VOLATILE(at_idx)],
05365                            "ATD_TYPE_IDX",  ATD_TYPE_IDX(at_idx),
05366                             print_type_f(ATD_TYPE_IDX(at_idx)));
05367 
05368          if (ATD_CLASS(at_idx) == Variable) {  
05369             fprintf(out_file,"  %-16s= %-7d\n",
05370                     "ATD_VARIABLE_TMP", ATD_VARIABLE_TMP_IDX(at_idx));
05371          }
05372 
05373          if (dump_all && ATD_STOR_BLK_IDX(at_idx) != NULL_IDX) {
05374             fprintf(out_file, "\n");
05375             dump_sb_ntry(out_file, ATD_STOR_BLK_IDX(at_idx));
05376          }
05377 
05378          if (dump_all && ATD_ARRAY_IDX(at_idx) != NULL_IDX) {
05379             fprintf(out_file, "\n");
05380             dump_bd_ntry(out_file, ATD_ARRAY_IDX(at_idx));
05381          }
05382 
05383          if (dump_all && ATD_DISTRIBUTION_IDX(at_idx) != NULL_IDX) {
05384             fprintf(out_file, "\n");
05385             fprintf(out_file, "ATD_DISTRIBUTION_IDX bounds table dump\n");
05386             dump_bd_ntry(out_file, ATD_DISTRIBUTION_IDX(at_idx));
05387          }
05388 
05389 #ifdef COARRAY_FORTRAN
05390          if (dump_all && ATD_PE_ARRAY_IDX(at_idx) != NULL_IDX) {
05391             fprintf(out_file, "\n");
05392             fprintf(out_file, "ATD_PE_ARRAY_IDX bounds table dump\n");
05393             dump_bd_ntry(out_file, ATD_PE_ARRAY_IDX(at_idx));
05394          }
05395 # endif
05396 
05397          break;
05398 
05399 
05400       case Pgm_Unit:
05401          fprintf(out_file, "  %-25s %-25s %-16s= %-8s\n",
05402                  atp_pgm_unit_str[ATP_PGM_UNIT(at_idx)],
05403                  atp_proc_str[ATP_PROC(at_idx)],
05404                  "ATP_ALIGN", boolean_str[ATP_ALIGN(at_idx)]);
05405 
05406          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05407                  "ATP_ALL_INTENT_I", boolean_str[ATP_ALL_INTENT_IN(at_idx)],
05408                  "ATP_ALT_ENTRY", boolean_str[ATP_ALT_ENTRY(at_idx)],
05409                  "ATP_ARGCHCK_CALL", boolean_str[ATP_ARGCHCK_CALL(at_idx)]);
05410 
05411          if (ATP_PGM_UNIT(at_idx) != Module) {
05412             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05413                    "ATP_ARGCHCK_ENTR", boolean_str[ATP_ARGCHCK_ENTRY(at_idx)],
05414                    "ATP_DCL_EXTERNAL", boolean_str[ATP_DCL_EXTERNAL(at_idx)],
05415                    "ATP_DUPLICATE_IN", ATP_DUPLICATE_INTERFACE_IDX(at_idx));
05416 
05417             if (ATP_PROC(at_idx) == Dummy_Proc) {
05418                fprintf(out_file, "  %-16s= %-7s %-16s= %-7d\n",
05419                      "ATP_CIF_DARG_PRO", boolean_str[ATP_CIF_DARG_PROC(at_idx)],
05420                      "ATP_DUMMY_PROC_L", ATP_DUMMY_PROC_LINK(at_idx));
05421             }
05422 
05423             fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05424                     "ATP_ELEMENTAL", boolean_str[ATP_ELEMENTAL(at_idx)],
05425                     "ATP_ENTRY_LABEL_", ATP_ENTRY_LABEL_SH_IDX(at_idx),
05426                     "ATP_EXPL_ITRFC", boolean_str[ATP_EXPL_ITRFC(at_idx)]);
05427 
05428             fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-s\n",
05429                    "ATP_EXT_NAME_IDX", ATP_EXT_NAME_IDX(at_idx),
05430                    "ATP_EXT_NAME_LEN", ATP_EXT_NAME_LEN(at_idx),
05431                     ATP_EXT_NAME_PTR(at_idx));
05432 
05433             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05434                     "ATP_EXTERNAL_INT",boolean_str[ATP_EXTERNAL_INTRIN(at_idx)],
05435                     "ATP_EXTRA_DARG", boolean_str[ATP_EXTRA_DARG(at_idx)],
05436                     "ATP_FIRST_IDX", ATP_FIRST_IDX(at_idx));
05437 
05438             if (ATP_PROC(at_idx) == Extern_Proc) {
05439                fprintf(out_file, "  %-16s= %-7d %-16s= %-7d\n",
05440                        "ATP_FIRST_SH_IDX", ATP_FIRST_SH_IDX(at_idx),
05441                        "ATP_GLOBAL_ATTR_", ATP_GLOBAL_ATTR_IDX(at_idx));
05442             }
05443             else {
05444                fprintf(out_file, "  %-16s= %-7d\n",
05445                        "ATP_GLOBAL_ATTR_", ATP_GLOBAL_ATTR_IDX(at_idx));
05446             }
05447 
05448             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05449                "ATP_HAS_ALT_RET", boolean_str[ATP_HAS_ALT_RETURN(at_idx)],
05450                "ATP_HAS_OVER_IND",boolean_str[ATP_HAS_OVER_INDEXING(at_idx)],
05451                "ATP_HAS_TASK_DIR", boolean_str[ATP_HAS_TASK_DIRS(at_idx)]);
05452 
05453             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05454                "ATP_IN_INTERFACE",boolean_str[ATP_IN_INTERFACE_BLK(at_idx)],
05455                "ATP_IN_UNNAMED_I",boolean_str[ATP_IN_UNNAMED_INTERFACE(at_idx)],
05456                "ATP_INLINE_ALWAY",boolean_str[ATP_INLINE_ALWAYS(at_idx)]);
05457 
05458             if (ATP_PROC(at_idx) == Intrin_Proc) {
05459                fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05460                     "ATP_INLINE_NEVER",boolean_str[ATP_INLINE_NEVER(at_idx)],
05461                     "ATP_INTERFACE_ID", ATP_INTERFACE_IDX(at_idx),
05462                     "ATP_INTRIN_ENUM", intrin_str[ATP_INTRIN_ENUM(at_idx)]);
05463 
05464                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05465                      "ATP_MAY_INLINE", boolean_str[ATP_MAY_INLINE(at_idx)],
05466                      "ATP_NAME_IN_STON", boolean_str[ATP_NAME_IN_STONE(at_idx)],
05467                      "ATP_NO_ENTRY_LIS", ATP_NO_ENTRY_LIST(at_idx));
05468 
05469                if (ATP_NO_ENTRY_LIST(at_idx) != NULL_IDX) {
05470                   print_al_list(out_file, ATP_NO_ENTRY_LIST(at_idx));
05471                }
05472 
05473                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05474                     "ATP_NON_ANSI_INT",boolean_str[ATP_NON_ANSI_INTRIN(at_idx)],
05475                     "ATP_NOSIDE_EFFEC", boolean_str[ATP_NOSIDE_EFFECTS(at_idx)],
05476                     "ATP_NUM_DARGS", ATP_NUM_DARGS(at_idx));
05477 
05478                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05479                        "ATP_OPTIONAL_DIR",boolean_str[ATP_OPTIONAL_DIR(at_idx)],
05480                        "ATP_PURE", boolean_str[ATP_PURE(at_idx)],
05481                        "ATP_RECURSIVE", boolean_str[ATP_RECURSIVE(at_idx)]);
05482             }
05483             else {
05484                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05485                     "ATP_INLINE_NEVER",boolean_str[ATP_INLINE_NEVER(at_idx)],
05486                     "ATP_MAY_INLINE", boolean_str[ATP_MAY_INLINE(at_idx)],
05487                     "ATP_NAME_IN_STON", boolean_str[ATP_NAME_IN_STONE(at_idx)]);
05488 
05489                fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05490                    "ATP_NO_ENTRY_LIS", ATP_NO_ENTRY_LIST(at_idx),
05491                    "ATP_NON_ANSI_INT",boolean_str[ATP_NON_ANSI_INTRIN(at_idx)],
05492                    "ATP_NOSIDE_EFFEC", boolean_str[ATP_NOSIDE_EFFECTS(at_idx)]);
05493 
05494                if (ATP_NO_ENTRY_LIST(at_idx) != NULL_IDX) {
05495                   print_al_list(out_file, ATP_NO_ENTRY_LIST(at_idx));
05496                }
05497 
05498                fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
05499                        "ATP_NUM_DARGS", ATP_NUM_DARGS(at_idx),
05500                        "ATP_OPTIONAL_DIR",boolean_str[ATP_OPTIONAL_DIR(at_idx)],
05501                        "ATP_PARENT_IDX", ATP_PARENT_IDX(at_idx));
05502 
05503                fprintf(out_file, "  %-16s= %-7s %-16s= %-7s\n",
05504                        "ATP_PURE", boolean_str[ATP_PURE(at_idx)],
05505                        "ATP_RECURSIVE", boolean_str[ATP_RECURSIVE(at_idx)]);
05506             }
05507 
05508             if (ATP_RSLT_IDX(at_idx) != NULL_IDX) {
05509                fprintf(out_file, "  %-16s= %-7s %-s\n",
05510                        "ATP_RSLT_NAME", boolean_str[ATP_RSLT_NAME(at_idx)],
05511                         AT_OBJ_NAME_PTR(ATP_RSLT_IDX(at_idx)));
05512             }
05513 
05514             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05515                     "ATP_RSLT_IDX", ATP_RSLT_IDX(at_idx),
05516                     "ATP_SAVE_ALL", boolean_str[ATP_SAVE_ALL(at_idx)],
05517                     "ATP_SCP_ALIVE", boolean_str[ATP_SCP_ALIVE(at_idx)]);
05518 
05519             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05520                     "ATP_SCP_IDX", ATP_SCP_IDX(at_idx),
05521               "ATP_SGI_RTN_INL", boolean_str[ATP_SGI_ROUTINE_INLINE(at_idx)],
05522               "ATP_SGI_RTN_NOIN",boolean_str[ATP_SGI_ROUTINE_NOINLINE(at_idx)]);
05523 
05524             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05525                 "ATP_SGI_GLB_INL",boolean_str[ATP_SGI_GLOBAL_INLINE(at_idx)],
05526                 "ATP_SGI_GLB_NOIN",boolean_str[ATP_SGI_GLOBAL_NOINLINE(at_idx)],
05527                 "ATP_SGI_LOC_INL", boolean_str[ATP_SGI_LOCAL_INLINE(at_idx)]);
05528 
05529             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05530                  "ATP_SGI_LOC_NOIN",boolean_str[ATP_SGI_LOCAL_NOINLINE(at_idx)],
05531                  "ATP_STACK_DIR",boolean_str[ATP_STACK_DIR(at_idx)],
05532                  "ATP_SYMMETRIC",boolean_str[ATP_SYMMETRIC(at_idx)]);
05533 
05534             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05535                     "ATP_TASK_SHARED",boolean_str[ATP_TASK_SHARED(at_idx)],
05536                     "ATP_USES_EREGS",boolean_str[ATP_USES_EREGS(at_idx)],
05537                     "ATP_VFUNCTION",boolean_str[ATP_VFUNCTION(at_idx)]); 
05538 
05539              /* FMZ added for cosubroutine cofunction  */
05540              fprintf(out_file, "  %-22s= %-7s \n", "ATP_COARRAY_CONCURRENT",
05541                        boolean_str[ATP_COARRAY_CONCURRENT(at_idx)]); 
05542 
05543          }
05544          else {  /* MODULE */
05545 
05546             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05547                     "ATP_ARGCHCK_ENTR", boolean_str[ATP_ARGCHCK_ENTRY(at_idx)],
05548                     "ATP_DCL_EXTERNAL",boolean_str[ATP_DCL_EXTERNAL(at_idx)],
05549                     "ATP_ENTRY_LABEL_", ATP_ENTRY_LABEL_SH_IDX(at_idx));
05550 
05551             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05552                     "ATP_EXPL_ITRFC", boolean_str[ATP_EXPL_ITRFC(at_idx)],
05553                     "ATP_EXTERNAL_INT",boolean_str[ATP_EXTERNAL_INTRIN(at_idx)],
05554                     "ATP_EXTRA_DARG", boolean_str[ATP_EXTRA_DARG(at_idx)]);
05555 
05556             fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-s\n",
05557                    "ATP_EXT_NAME_IDX", ATP_EXT_NAME_IDX(at_idx),
05558                    "ATP_EXT_NAME_LEN", ATP_EXT_NAME_LEN(at_idx),
05559                     ATP_EXT_NAME_PTR(at_idx));
05560 
05561             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05562                 "ATP_GLOBAL_ATTR_", ATP_GLOBAL_ATTR_IDX(at_idx),
05563                 "ATP_HAS_ALT_RET", boolean_str[ATP_HAS_ALT_RETURN(at_idx)],
05564                 "ATP_HAS_OVER_IND", boolean_str[ATP_HAS_OVER_INDEXING(at_idx)]);
05565 
05566             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-7s\n",
05567                  "ATP_HAS_TASK_DIR", boolean_str[ATP_HAS_TASK_DIRS(at_idx)],
05568                "ATP_IMPLICIT_USE", boolean_str[ATP_IMPLICIT_USE_MODULE(at_idx)],
05569                "ATP_INDIRECT_MOD", boolean_str[ATP_INDIRECT_MODULE(at_idx)]);
05570 
05571             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05572                  "ATP_IN_CURRENT_", boolean_str[ATP_IN_CURRENT_COMPILE(at_idx)],
05573                  "ATP_IN_INTERFACE", boolean_str[ATP_IN_INTERFACE_BLK(at_idx)],
05574                  "ATP_INLINE_ALWAY", boolean_str[ATP_INLINE_ALWAYS(at_idx)]);
05575 
05576             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05577                    "ATP_INLINE_NEVER", boolean_str[ATP_INLINE_NEVER(at_idx)],
05578                    "ATP_MAY_INLINE", boolean_str[ATP_MAY_INLINE(at_idx)],
05579                    "ATP_MODULE_STR_I", ATP_MODULE_STR_IDX(at_idx));
05580 
05581             if (ATP_MOD_PATH_IDX(at_idx) != NULL_IDX) {
05582                fprintf(out_file,"  %-16s= %-7d %-16s= %-s\n",
05583                        "ATP_MOD_PATH_LEN", ATP_MOD_PATH_LEN(at_idx),
05584                        "ATP_MOD_PATH_IDX", ATP_MOD_PATH_NAME_PTR(at_idx));
05585             }
05586 
05587             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05588                     "ATP_NOSIDE_EFFEC", boolean_str[ATP_NOSIDE_EFFECTS(at_idx)],
05589                     "ATP_RECURSIVE", boolean_str[ATP_RECURSIVE(at_idx)],
05590                     "ATP_RSLT_NAME", boolean_str[ATP_RSLT_NAME(at_idx)]);
05591 
05592             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
05593                     "ATP_SAVE_ALL", boolean_str[ATP_SAVE_ALL(at_idx)],
05594                     "ATP_SCP_ALIVE", boolean_str[ATP_SCP_ALIVE(at_idx)],
05595                     "ATP_SCP_IDX", ATP_SCP_IDX(at_idx));
05596 
05597             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05598                     "ATP_STACK_DIR",boolean_str[ATP_STACK_DIR(at_idx)],
05599                     "ATP_SYSTEM_MODUL", boolean_str[ATP_SYSTEM_MODULE(at_idx)],
05600                     "ATP_TASK_SHARED",boolean_str[ATP_TASK_SHARED(at_idx)]);
05601 
05602             fprintf(out_file, "  %-16s= %-7d %-25s\n",
05603                     "ATP_USE_LIST", ATP_USE_LIST(at_idx),
05604                     use_type_str[ATP_USE_TYPE(at_idx)]);
05605 
05606             fprintf(out_file, "  %-16s= %-7s %-16s= %-7s\n",
05607                     "ATP_USES_EREGS",boolean_str[ATP_USES_EREGS(at_idx)],
05608                     "ATP_VFUNCTION",boolean_str[ATP_VFUNCTION(at_idx)]);
05609 
05610             if (ATP_USE_LIST(at_idx) != NULL_IDX) {
05611                ro_idx = ATP_USE_LIST(at_idx);
05612 
05613                while (ro_idx != NULL_IDX) {
05614                   dump_ro_ntry(out_file, ro_idx);
05615                   ro_idx = RO_NEXT_IDX(ro_idx);
05616                }
05617             }  
05618          }
05619 
05620          fprintf(out_file, "\n");
05621 
05622          if (dump_all) {
05623 
05624             /* Note that the output_attr flag is set to FALSE because it      */
05625             /* produces quite a bit of output.  The code is left in in case   */
05626             /* we find in future debugging sessions that also dumping the     */
05627             /* Attribute entry for the Secondary Name table item would be     */
05628             /* useful.                                                        */
05629 
05630             if (ATP_PGM_UNIT(at_idx) <= Subroutine) {
05631 
05632                if (ATP_RSLT_IDX(at_idx) != NULL_IDX) {
05633                   fprintf(out_file, "\n");
05634                   dump_at_ntry (out_file, ATP_RSLT_IDX(at_idx), dump_all);
05635                }
05636 
05637                if (ATP_FIRST_IDX(at_idx) != NULL_IDX) {
05638                   loop_thru_sn_ntries(out_file, at_idx, FALSE);
05639                }
05640             }
05641          }
05642 
05643          break;
05644 
05645       case Label:
05646          fprintf(out_file, "  %-25s %-16s= %-7s %-16s= %-8s\n",
05647                  atl_class_str[ATL_CLASS(at_idx)],
05648                  "ATL_ALIGN", boolean_str[ATL_ALIGN(at_idx)],
05649                  "ATL_AGGRESSIVEIN", 
05650                       boolean_str[ATL_AGGRESSIVEINNERLOOPFISSION(at_idx)]);
05651 
05652 
05653          if (ATL_CLASS(at_idx) <= Lbl_User) {
05654             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
05655                     "ATL_ASG_LBL_CHAI",ATL_ASG_LBL_CHAIN_START(at_idx),
05656                     "ATL_BL", boolean_str[ATL_BL(at_idx)],
05657                     "ATL_BLK_STMT_IDX", ATL_BLK_STMT_IDX(at_idx));
05658 
05659             fprintf(out_file, "  %-16s= %-7s %-16s= %-7d\n",
05660                     "ATL_CASE_LABEL", boolean_str[ATL_CASE_LABEL(at_idx)],
05661                     "ATL_CMIC_BLK_STM", ATL_CMIC_BLK_STMT_IDX(at_idx));
05662          }
05663          else {
05664             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05665                     "ATL_ASG_LBL_CHAI",ATL_ASG_LBL_CHAIN_START(at_idx),
05666                     "ATL_BL", boolean_str[ATL_BL(at_idx)],
05667                     "ATL_CASE_LABEL", boolean_str[ATL_CASE_LABEL(at_idx)]);
05668          }
05669 
05670          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05671                  "ATL_CNCALL", boolean_str[ATL_CNCALL(at_idx)],
05672                  "ATL_CONSTRUCTOR_", boolean_str[ATL_CONSTRUCTOR_LOOP(at_idx)],
05673                  "ATL_CYCLE_LBL", boolean_str[ATL_CYCLE_LBL(at_idx)]);
05674 
05675          fprintf(out_file, "  %-16s= %-33s %-16s= %-8d\n",
05676                 "ATL_DEBUG_CLASS", atl_debug_class_str[ATL_DEBUG_CLASS(at_idx)],
05677                 "ATL_DIRECTIVE_LI", ATL_DIRECTIVE_LIST(at_idx));
05678 
05679          if (ATL_DIRECTIVE_LIST(at_idx) != NULL_IDX) {
05680             il_idx = IL_IDX(ATL_DIRECTIVE_LIST(at_idx)) + Safevl_Dir_Idx;
05681 
05682             fprintf(out_file, "  %-16s= %-7s", "safevl",
05683                     (IL_FLD(il_idx) == CN_Tbl_Idx) ? convert_to_string(
05684                                                    &CN_CONST(IL_IDX(il_idx)),
05685                                                     CN_TYPE_IDX(IL_IDX(il_idx)),
05686                                                     conv_str) : "0");
05687 
05688             il_idx = IL_IDX(ATL_DIRECTIVE_LIST(at_idx)) + Unroll_Dir_Idx;
05689 
05690             fprintf(out_file, "  %-16s= %-7s", "unroll",
05691                     (IL_FLD(il_idx) == CN_Tbl_Idx) ? convert_to_string(
05692                                                     &CN_CONST(IL_IDX(il_idx)),
05693                                                     CN_TYPE_IDX(IL_IDX(il_idx)),
05694                                                     conv_str) : "0");
05695 
05696             il_idx = IL_IDX(ATL_DIRECTIVE_LIST(at_idx)) + Mark_Dir_Idx;
05697 
05698             fprintf(out_file, " %-16s= %-s\n", "mark",
05699                     (IL_FLD(il_idx) == CN_Tbl_Idx) ?
05700                                       (char *) &CN_CONST(IL_IDX(il_idx)) : " ");
05701 
05702             il_idx = IL_IDX(ATL_DIRECTIVE_LIST(at_idx)) + Maxcpus_Dir_Idx;
05703 
05704             fprintf(out_file, "  %-16s= %-7d %-16s= %-25s\n", 
05705                     "maxcpus idx", IL_IDX(il_idx),
05706                     "maxcpus fld", field_str[IL_FLD(il_idx)]);
05707 
05708             il_idx = IL_IDX(ATL_DIRECTIVE_LIST(at_idx)) + Cache_Bypass_Dir_Idx;
05709 
05710             if (IL_FLD(il_idx) == IL_Tbl_Idx) {  /* Cache bypass */
05711                il_idx                 = IL_IDX(il_idx);
05712 
05713                while (il_idx != NULL_IDX) {
05714                   fprintf(out_file, "  %-16s= %-25s \n", 
05715                   "cache_bypass", AT_OBJ_NAME_PTR(IL_IDX(il_idx)));
05716                   il_idx = IL_NEXT_LIST_IDX(il_idx);
05717                }
05718             }
05719          }
05720 
05721          if (AT_DEFINED(at_idx)) {
05722             fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05723                     "ATL_DEF_STMT_IDX", ATL_DEF_STMT_IDX(at_idx),
05724                     "ATL_EXECUTABLE", boolean_str[ATL_EXECUTABLE(at_idx)],
05725                     "ATL_FISSIONABLE", boolean_str[ATL_FISSIONABLE(at_idx)]);
05726          }
05727          else {
05728             fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
05729                     "ATL_EXECUTABLE", boolean_str[ATL_EXECUTABLE(at_idx)],
05730                     "ATL_FWD_REF_IDX", ATL_FWD_REF_IDX(at_idx),
05731                     "ATL_FISSIONABLE", boolean_str[ATL_FISSIONABLE(at_idx)]);
05732          }
05733 
05734          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-7s\n",
05735                  "ATL_FUSABLE", boolean_str[ATL_FUSABLE(at_idx)],
05736                  "ATL_FUSION", boolean_str[ATL_FUSION(at_idx)],
05737                  "ATL_IN_ASSIGN", boolean_str[ATL_IN_ASSIGN(at_idx)]);
05738 
05739          if (ATL_CLASS(at_idx) == Lbl_Format) {
05740 
05741             if (ATL_FORMAT_TMP(at_idx) == NULL_IDX)  {
05742                 fprintf(out_file,"  %-16s= %-7d\n",
05743                         "ATL_FORMAT_TM", ATL_FORMAT_TMP(at_idx));
05744             }
05745             else {
05746                 fprintf(out_file,"  %-16s= %-7d %-16s= \"%s\"\n\n",
05747                         "ATL_FORMAT_TM", ATL_FORMAT_TMP(at_idx),
05748                         "FORMAT CONSTANT",
05749                         (char *)&CN_CONST(ATD_TMP_IDX(ATL_FORMAT_TMP(at_idx))));
05750             }
05751          }
05752 
05753          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05754                 "ATL_IN_ASSIGN_LB",boolean_str[ATL_IN_ASSIGN_LBL_CHAIN(at_idx)],
05755                 "ATL_INFORM_ONLY",boolean_str[ATL_INFORM_ONLY(at_idx)],
05756                 "ATL_IVDEP",boolean_str[ATL_IVDEP(at_idx)]);
05757 
05758          if (ATL_CLASS(at_idx) == Lbl_Internal) {
05759             fprintf(out_file, "  %-16s= %-7d\n",
05760                    "ATL_NEW_LBL_IDX", ATL_NEW_LBL_IDX(at_idx));
05761          }
05762 
05763          fprintf(out_file, "  %-16s= %-7s %-16s  %-7d %-16s= %-8s\n",
05764                 "ATL_MAXCPUS",boolean_str[ATL_MAXCPUS(at_idx)],
05765                 "ATL_NEXT_ASG_LBL", ATL_NEXT_ASG_LBL_IDX(at_idx),
05766                 "ATL_NEXTSCALAR", boolean_str[ATL_NEXTSCALAR(at_idx)]);
05767 
05768          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05769                 "ATL_NOBLOCKING", boolean_str[ATL_NOBLOCKING(at_idx)],
05770                 "ATL_NOFISSION", boolean_str[ATL_NOFISSION(at_idx)],
05771                 "ATL_NOFUSION", boolean_str[ATL_NOFUSION(at_idx)]);
05772 
05773          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05774                 "ATL_NOINTERCHANG", boolean_str[ATL_NOINTERCHANGE(at_idx)],
05775                 "ATL_NORECURRENCE", boolean_str[ATL_NORECURRENCE(at_idx)],
05776                 "ATL_NOTASK",boolean_str[ATL_NOTASK(at_idx)]);
05777 
05778          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05779                 "ATL_NOVECTOR", boolean_str[ATL_NOVECTOR(at_idx)],
05780                 "ATL_NOVSEARCH", boolean_str[ATL_NOVSEARCH(at_idx)],
05781                 "ATL_PATTERN", boolean_str[ATL_PATTERN(at_idx)]);
05782 
05783          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05784               "ATL_PERMUTATION", boolean_str[ATL_PERMUTATION(at_idx)],
05785               "ATL_PREFERSTREAM", boolean_str[ATL_PREFERSTREAM(at_idx)],
05786               "ATL_PREFER_NOCIN", boolean_str[ATL_PREFERSTREAM_NOCINV(at_idx)]);
05787 
05788          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s\n",
05789                 "ATL_PREFERTASK", boolean_str[ATL_PREFERTASK(at_idx)],
05790                 "ATL_PREFERVECTOR", boolean_str[ATL_PREFERVECTOR(at_idx)]);
05791 
05792          if (ATL_CLASS(at_idx) == Lbl_Format) {
05793             fprintf(out_file, " %-16s= %-7d\n",
05794                     "ATL_PP_FORMAT_TM", ATL_PP_FORMAT_TMP(at_idx));
05795          }
05796 
05797          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05798                  "ATL_SHORTLOOP", boolean_str[ATL_SHORTLOOP(at_idx)],
05799                  "ATL_SHORTLOOP128", boolean_str[ATL_SHORTLOOP128(at_idx)],
05800                  "ATL_SPLIT", boolean_str[ATL_SPLIT(at_idx)]);
05801 
05802          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05803                  "ATL_STREAM",boolean_str[ATL_STREAM(at_idx)],
05804                  "ATL_TOP_OF_LOOP", boolean_str[ATL_TOP_OF_LOOP(at_idx)],
05805                  "ATL_UNROLL_DIR", boolean_str[ATL_UNROLL_DIR(at_idx)]);
05806 
05807          break;
05808 
05809       case Derived_Type:
05810 
05811          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05812                  "ATT_CHAR_CPNT", boolean_str[ATT_CHAR_CPNT(at_idx)],
05813                  "ATT_CHAR_SEQ", boolean_str[ATT_CHAR_SEQ(at_idx)],
05814                  "ATT_ALIGNMENT", align_str[ATT_ALIGNMENT(at_idx)]);
05815 
05816          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05817                  "ATT_CIF_DT_ID", ATT_CIF_DT_ID(at_idx),
05818                  "ATT_DALIGN_ME", boolean_str[ATT_DALIGN_ME(at_idx)],
05819                  "ATT_DCL_NUMERIC_", boolean_str[ATT_DCL_NUMERIC_SEQ(at_idx)]);
05820 
05821          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8d\n",
05822                "ATT_DEFAULT_INIT", boolean_str[ATT_DEFAULT_INITIALIZED(at_idx)],
05823                "ATT_FIRST_CPNT_I", ATT_FIRST_CPNT_IDX(at_idx),
05824                "ATT_GLOBAL_TYPE_", ATT_GLOBAL_TYPE_IDX(at_idx));
05825 
05826          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
05827                  "ATT_LABEL_LIST_I", ATT_LABEL_LIST_IDX(at_idx),
05828                  "ATT_NON_DEFAULT_", boolean_str[ATT_NON_DEFAULT_CPNT(at_idx)],
05829                  "ATT_NUM_CPNTS", ATT_NUM_CPNTS(at_idx));
05830 
05831          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05832                  "ATT_NUMERIC_CPNT", boolean_str[ATT_NUMERIC_CPNT(at_idx)],
05833                  "ATT_POINTER_CPNT", boolean_str[ATT_POINTER_CPNT(at_idx)],
05834                  "ATT_PRIVATE_CPNT", boolean_str[ATT_PRIVATE_CPNT(at_idx)]);
05835 
05836          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
05837                  "ATT_SCP_IDX", ATT_SCP_IDX(at_idx),
05838                  "ATT_SEQUENCE_SET", boolean_str[ATT_SEQUENCE_SET(at_idx)],
05839                  "ATT_UNIQUE_ID", ATT_UNIQUE_ID(at_idx));
05840 
05841          if (ATT_STRUCT_BIT_LEN_IDX(at_idx) != NULL_IDX) {
05842             sprintf(str, "(%10s)",
05843                  convert_to_string(&CN_CONST(ATT_STRUCT_BIT_LEN_IDX(at_idx)),
05844                                     CN_TYPE_IDX(ATT_STRUCT_BIT_LEN_IDX(at_idx)),
05845                                     conv_str));
05846          }
05847          else {
05848             sprintf(str,"%12s", " ");
05849          }
05850 
05851          fprintf(out_file, "  %-16s= %-7d %-25s %-26s\n",
05852                  "ATT_STRUCT_SIZE", ATT_STRUCT_BIT_LEN_IDX(at_idx),
05853                  field_str[CN_Tbl_Idx],
05854                  str);
05855 
05856          /* Note that the output_attr flag is set to FALSE because it   */
05857          /* produces quite a bit of output.  The code is left in in     */
05858          /* case we find in future debugging sessions that also dumping */
05859          /* the Attribute entry for the Secondary Name table item       */
05860          /* would be useful.                                            */
05861 
05862          if (dump_all) {
05863             chain_thru_sn_ntries(out_file, at_idx, FALSE);
05864          }
05865 
05866          break;
05867 
05868 
05869       case Interface:
05870 
05871          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
05872                 "ATI_CIF_SCOPE_ID", ATI_CIF_SCOPE_ID(at_idx),
05873                 "ATI_CIF_SEEN_IN_", boolean_str[ATI_CIF_SEEN_IN_CALL(at_idx)],
05874                 "ATI_DCL_INTRINSI", boolean_str[ATI_DCL_INTRINSIC(at_idx)]);
05875 
05876          fprintf(out_file, "  %-16s= %-33s %-16s= %-8d\n",
05877                 "ATI_DEFINED_OPR", operator_str[ATI_DEFINED_OPR(at_idx)],
05878                 "ATI_FIRST_SPECIF", ATI_FIRST_SPECIFIC_IDX(at_idx));
05879 
05880          fprintf(out_file, "  %-16s= %-7s %-16s= %-33s\n",
05881                 "ATI_HAS_NON_MOD_", boolean_str[ATI_HAS_NON_MOD_PROC(at_idx)],
05882                 "ATI_INTERFACE_CL", interface_str[ATI_INTERFACE_CLASS(at_idx)]);
05883 
05884          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05885                  "ATI_INLINE_ALWAY",boolean_str[ATI_INLINE_ALWAYS(at_idx)],
05886                  "ATI_INLINE_NEVER",boolean_str[ATI_INLINE_NEVER(at_idx)],
05887                  "ATI_INTRIN_PASSA", boolean_str[ATI_INTRIN_PASSABLE(at_idx)]);
05888 
05889          fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
05890                  "ATI_INTRIN_TBL_I", ATI_INTRIN_TBL_IDX(at_idx),
05891                  "ATI_IPA_DIR_SPEC",boolean_str[ATI_IPA_DIR_SPECIFIED(at_idx)],
05892                  "ATI_NUM_SPECIFIC", ATI_NUM_SPECIFICS(at_idx));
05893 
05894          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d\n",
05895                 "ATI_GENERIC_INT", boolean_str[ATI_GENERIC_INTRINSIC(at_idx)],
05896                 "ATI_PROC_IDX", ATI_PROC_IDX(at_idx));
05897 
05898          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
05899              "ATI_UNNAMED_INTE", boolean_str[ATI_UNNAMED_INTERFACE(at_idx)],
05900              "ATI_SGI_RTN_INLI", boolean_str[ATI_SGI_ROUTINE_INLINE(at_idx)],
05901              "ATI_SGI_RTN_NOIN", boolean_str[ATI_SGI_ROUTINE_NOINLINE(at_idx)]);
05902  
05903          if (ATD_TYPE_IDX(at_idx) != NULL_IDX) {
05904             fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-s\n",
05905                    "ATI_USER_SPECIFI", boolean_str[ATI_USER_SPECIFIED(at_idx)],
05906                    "ATD_TYPE_IDX", ATD_TYPE_IDX(at_idx),
05907                     print_type_f(ATD_TYPE_IDX(at_idx)));
05908          }
05909          else {
05910             fprintf(out_file, "  %-16s= %-7s %-16s= %-7d\n",
05911                    "ATI_USER_SPECIFI", boolean_str[ATI_USER_SPECIFIED(at_idx)],
05912                    "ATD_TYPE_IDX", ATD_TYPE_IDX(at_idx));
05913          }
05914 
05915          if (ATI_PROC_IDX(at_idx) != NULL_IDX) {
05916             fprintf(out_file, "\n");
05917             dump_at_ntry(out_file, ATI_PROC_IDX(at_idx), dump_all);
05918          }
05919 
05920          /* Note that the output_attr flag is set to FALSE because it   */
05921          /* produces quite a bit of output.  The code is left in in     */
05922          /* case we find in future debugging sessions that also dumping */
05923          /* the Attribute entry for the Secondary Name table item would */
05924          /* be useful.                                                  */
05925 
05926          if (dump_all) {
05927             chain_thru_sn_ntries(out_file, at_idx, FALSE);
05928          }
05929 
05930          break;
05931 
05932 
05933       case Namelist_Grp:
05934 
05935          fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8d\n",
05936                  "ATN_FIRST_NAMELI", ATN_FIRST_NAMELIST_IDX(at_idx),
05937                  "ATN_LAST_NAMELIS", ATN_LAST_NAMELIST_IDX(at_idx),
05938                  "ATN_NUM_NAMELIST", ATN_NUM_NAMELIST(at_idx));
05939 
05940          fprintf(out_file, "  %-16s= %-7d (%-s)\n",
05941                  "ATN_NAMELIST_DES", ATN_NAMELIST_DESC(at_idx),
05942                  ((ATN_NAMELIST_DESC(at_idx) == NULL_IDX) ? " " :
05943                   AT_OBJ_NAME_PTR(ATN_NAMELIST_DESC(at_idx))));
05944 
05945 
05946          /* Note that the output_attr flag is set to FALSE because it   */
05947          /* produces quite a bit of output.  The code is left in in     */
05948          /* case we find in future debugging sessions that also dumping */
05949          /* the Attribute entry for the Secondary Name table item would */
05950          /* be useful.                                                  */
05951 
05952          if (dump_all) {
05953             chain_thru_sn_ntries(out_file, at_idx, FALSE);
05954          }
05955          break;
05956 
05957 
05958       case Stmt_Func:
05959 
05960          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-s\n",
05961                  "ATS_SF_ACTIVE", boolean_str[ATS_SF_ACTIVE(at_idx)],
05962                  "ATP_FIRST_IDX", ATP_FIRST_IDX(at_idx),
05963                  field_str[ATS_SF_FLD(at_idx)]);
05964 
05965          fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8s\n",
05966                 "ATS_SF_IDX", ATS_SF_IDX(at_idx),
05967                 "ATP_NUM_DARGS", ATP_NUM_DARGS(at_idx),
05968                 "ATS_SF_SEMANTICS", boolean_str[ATS_SF_SEMANTICS_DONE(at_idx)]);
05969 
05970          fprintf(out_file, "  %-16s= %-7d %-s\n",
05971                            "ATD_TYPE_IDX", ATD_TYPE_IDX(at_idx),
05972                             print_type_f(ATD_TYPE_IDX(at_idx)));
05973 
05974          if (dump_all && ATP_FIRST_IDX(at_idx) != NULL_IDX) {
05975             loop_thru_sn_ntries(out_file, at_idx, FALSE);
05976          }
05977 
05978          if (ATS_SF_FLD(at_idx) == IR_Tbl_Idx) {
05979             dump_ir_ntry(out_file, ATS_SF_IDX(at_idx), 5);
05980          }
05981 
05982          break;
05983 
05984    }  /* End switch */
05985 
05986    putc ('\n', out_file);
05987    fflush (out_file);
05988 
05989    return;
05990 
05991 }  /* dump_at_ntry */
05992 
05993 /******************************************************************************\
05994 |*                                                                            *|
05995 |* Description:                                                               *|
05996 |*      Prints one bounds table entry to the specified output file.           *|
05997 |*                                                                            *|
05998 |* Input parameters:                                                          *|
05999 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
06000 |*      Index of bounds entry to print.                                       *|
06001 |*                                                                            *|
06002 |* Output parameters:                                                         *|
06003 |*      NONE                                                                  *|
06004 |*                                                                            *|
06005 |* Returns:                                                                   *|
06006 |*      NOTHING                                                               *|
06007 |*                                                                            *|
06008 \******************************************************************************/
06009 
06010 static void dump_bd_ntry (FILE  *out_file,
06011                           int    bd_idx)
06012 
06013 {
06014    int          i;
06015 
06016 
06017    if (bd_idx > bounds_tbl_idx) {
06018       fprintf(out_file, "\n*FE90-ERROR* BD index value [%d] is out of range.\n",
06019               bd_idx);
06020       goto EXIT;
06021    }
06022 
06023    if (BD_DIST_NTRY(bd_idx)) {
06024       fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8s\n",
06025                         "BD_RANK", BD_RANK(bd_idx),
06026                         "BD_COLUMN_NUM", BD_COLUMN_NUM(bd_idx),
06027                         "BD_DISTRIBUTE_RE",
06028                             boolean_str[BD_DISTRIBUTE_RESHAPE(bd_idx)]);
06029 
06030       fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
06031                         "BD_LINE_NUM", BD_LINE_NUM(bd_idx),
06032                         "BD_RESOLVED", boolean_str[BD_RESOLVED(bd_idx)],
06033                         "IDX", bd_idx);
06034 
06035       for (i = 1; i <=  BD_RANK(bd_idx); i++) {
06036          fprintf(out_file, "  %-16s= %-7d %-16s= %-25s\n",
06037                            "Dimension", i,
06038                            "Distribution", 
06039                               distribution_str[BD_DISTRIBUTION(bd_idx,i)]);
06040 
06041          if (BD_CYCLIC_FLD(bd_idx, i) != NO_Tbl_Idx) {
06042             print_fld_idx(out_file,
06043                           "   BD_CYCLIC_IDX",
06044                            BD_CYCLIC_FLD(bd_idx, i),
06045                            BD_CYCLIC_IDX(bd_idx, i));
06046          }
06047 
06048          if (BD_ONTO_FLD(bd_idx, i) != NO_Tbl_Idx) {
06049             print_fld_idx(out_file,
06050                           "   BD_ONTO_IDX",
06051                            BD_ONTO_FLD(bd_idx, i),
06052                            BD_ONTO_IDX(bd_idx, i));
06053          }
06054       }
06055       goto EXIT;
06056    }
06057 
06058    if (!BD_USED_NTRY(bd_idx)) {
06059       fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8d\n",
06060                         "IDX", bd_idx, 
06061                         "BD_NEXT_FREE_NTR", BD_NEXT_FREE_NTRY(bd_idx),
06062                         "BD_NTRY_SIZE", BD_NTRY_SIZE(bd_idx));
06063       goto EXIT;
06064    }
06065 
06066    fprintf(out_file, "  %-16s= %-7d %-25s %-26s\n",
06067                      "BD_RANK", BD_RANK(bd_idx),
06068                                 bd_array_class_str[BD_ARRAY_CLASS(bd_idx)],
06069                                 bd_array_size_str[BD_ARRAY_SIZE(bd_idx)]);
06070 
06071    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
06072                      "BD_COLUMN_NUM", BD_COLUMN_NUM(bd_idx),
06073                      "BD_DCL_ERR", boolean_str[BD_DCL_ERR(bd_idx)],
06074                      "BD_GLOBAL_IDX", BD_GLOBAL_IDX(bd_idx));
06075 
06076    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
06077                      "BD_LINE_NUM", BD_LINE_NUM(bd_idx),
06078                      "BD_RESOLVED", boolean_str[BD_RESOLVED(bd_idx)],
06079                      "IDX", bd_idx);
06080 
06081    print_fld_idx(out_file, "BD_LEN_IDX",
06082                  BD_LEN_FLD(bd_idx),
06083                  BD_LEN_IDX(bd_idx));
06084 
06085    if (BD_ARRAY_CLASS(bd_idx) != Deferred_Shape) {
06086 
06087       for (i = 1; i <=  BD_RANK(bd_idx); i++) {
06088          fprintf(out_file, "  %-16s= %-7d\n", "Dimension", i);
06089 
06090          print_fld_idx(out_file,
06091                        "   BD_LB_IDX",
06092                         BD_LB_FLD(bd_idx, i),
06093                         BD_LB_IDX(bd_idx, i));
06094 
06095          print_fld_idx(out_file,
06096                        "   BD_UB_IDX",
06097                         BD_UB_FLD(bd_idx, i),
06098                         BD_UB_IDX(bd_idx, i));
06099 
06100          print_fld_idx(out_file,
06101                        "   BD_XT_IDX",
06102                         BD_XT_FLD(bd_idx, i),
06103                         BD_XT_IDX(bd_idx, i));
06104 
06105          print_fld_idx(out_file,
06106                        "   BD_SM_IDX",
06107                         BD_SM_FLD(bd_idx, i),
06108                         BD_SM_IDX(bd_idx, i));
06109       }
06110    }
06111 
06112    EXIT:
06113 
06114    putc ('\n', out_file);
06115 
06116    fflush (out_file);
06117    return;
06118 
06119 }  /* dump_bd_ntry */
06120 
06121 
06122 /******************************************************************************\
06123 |*                                                                            *|
06124 |* Description:                                                               *|
06125 |*      Prints the actual block entry.                                        *|
06126 |*                                                                            *|
06127 |* Input parameters:                                                          *|
06128 |*      File to print entry to.                                               *|
06129 |*      Index of block entry to print.                                        *|
06130 |*                                                                            *|
06131 |* Output parameters:                                                         *|
06132 |*      NONE                                                                  *|
06133 |*                                                                            *|
06134 |* Returns:                                                                   *|
06135 |*      NOTHING                                                               *|
06136 |*                                                                            *|
06137 \******************************************************************************/
06138 
06139 static void dump_blk_ntry(FILE  *out_file,
06140                           int    blk_idx)
06141 {
06142 
06143    /* Sometimes when debugging, you really want to print a Block Stack        */
06144    /* entry that's been popped.  But print a warning in case that's not what  */
06145    /* was intended.                                                           */
06146 
06147    if (blk_idx > blk_stk_idx) {
06148       fprintf(stderr,
06149               "\n*FE90-WARNING* Blk index value [%d] is out of range.\n",
06150               blk_idx);
06151    }
06152 
06153 
06154    fprintf(out_file,"\n%-32.32s  ", blk_struct_str[BLK_TYPE(blk_idx)]);
06155    fprintf(out_file,"%-8s= %-7d", "IDX", blk_idx);
06156 
06157    if (blk_idx == blk_stk_idx) {
06158       fprintf(out_file,"%4s%-20.20s\n", " ", "CURRENT BLOCK");
06159       fprintf(out_file,"%4s%-19s= %-27s\n", " ", "curr_stmt_category",
06160                                           context_str[curr_stmt_category]);
06161    }
06162    else {
06163       fprintf(out_file,"\n");
06164    }
06165 
06166    if (BLK_NAME(blk_idx) != NULL_IDX) {
06167       fprintf(out_file,"%4s%-19s= (%d)  %-32.32s\n", " ",
06168               "BLK_NAME", BLK_NAME(blk_idx),AT_OBJ_NAME_PTR(BLK_NAME(blk_idx)));
06169    }
06170 
06171    fprintf(out_file, "%4s%-19s= %-29d  %-16s= %-7d\n", " ",
06172                      "BLK_DEF_LINE",   BLK_DEF_LINE(blk_idx),
06173                      "BLK_DEF_COLUMN", BLK_DEF_COLUMN(blk_idx));
06174 
06175    fprintf(out_file, "%4s%-19s= %-29d  %-16s= %-7d\n", " ",
06176                      "BLK_FIRST_SH_IDX", BLK_FIRST_SH_IDX(blk_idx),
06177                      "BLK_LABEL",        BLK_LABEL(blk_idx));
06178 
06179    fprintf(out_file, "%4s%-19s= %s     %-16s= %s      %-16s= %s\n", " ",
06180                      "BLK_ERR",          boolean_str[BLK_ERR(blk_idx)],
06181                      "BLK_FND_DEFAULT",  boolean_str[BLK_FND_DEFAULT(blk_idx)],
06182                      "BLK_NO_EXEC",      boolean_str[BLK_NO_EXEC(blk_idx)]);
06183 
06184    if (BLK_TYPE(blk_idx) == Do_Blk) {
06185 
06186       if (BLK_DO_TYPE(blk_idx) == Iterative_Loop) {
06187          fprintf(out_file, "%4sDO-var: Line= %-7d  Col= %-3d  Fld= %-10s\n",
06188                            " ",
06189                            BLK_DO_VAR_LINE_NUM(blk_idx),
06190                            BLK_DO_VAR_COL_NUM(blk_idx),
06191                            field_str[BLK_DO_VAR_FLD(blk_idx)]);
06192 
06193          print_attr_name(out_file, BLK_DO_VAR_IDX(blk_idx), 4);
06194       }
06195       else if (BLK_DO_TYPE(blk_idx) == While_Loop) {
06196          fprintf(out_file, "%4sWHILE expr: Line= %-7d  Col= %-3d  Fld= %-10s",
06197                            " ", 
06198                            BLK_DO_VAR_LINE_NUM(blk_idx),
06199                            BLK_DO_VAR_COL_NUM(blk_idx),
06200                            field_str[BLK_DO_VAR_FLD(blk_idx)]);
06201 
06202          if (BLK_DO_VAR_FLD(blk_idx) == AT_Tbl_Idx) {
06203             fputc('\n', out_file);
06204             print_attr_name(out_file, BLK_DO_VAR_IDX(blk_idx), 4);
06205          }
06206          else {
06207             fprintf(out_file, "  Idx= %d\n", BLK_DO_VAR_IDX(blk_idx));
06208          }
06209       }
06210 
06211       fprintf(out_file, "%4s%-18s= %-27s  %-16s= %-7d\n", " ",
06212                         "BLK_DO_TYPE",     do_type_str[BLK_DO_TYPE(blk_idx)],
06213                         "BLK_LOOP_NUM",    BLK_LOOP_NUM(blk_idx));
06214 
06215       fprintf(out_file, "%4s%-18s= %-27s  %-16s= %s\n", " ",
06216                         "BLK_CYCLE_STMT",  boolean_str[BLK_CYCLE_STMT(blk_idx)],
06217                         "BLK_EXIT_STMT",   boolean_str[BLK_EXIT_STMT(blk_idx)]);
06218                         
06219       fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06220                         "BLK_TOP_LBL_IDX",    BLK_TOP_LBL_IDX(blk_idx),
06221                         "BLK_SKIP_LBL_IDX",   BLK_SKIP_LBL_IDX(blk_idx));
06222 
06223       fprintf(out_file, "%4s%-19s= %s\n", " ",
06224                         "BLK_IS_PARALLEL_REG",     
06225                         boolean_str[BLK_IS_PARALLEL_REGION(blk_idx)]);
06226 
06227       if (BLK_DO_TYPE(blk_idx) == Iterative_Loop) { 
06228          fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06229                            "BLK_START_TEMP_IDX", BLK_START_TEMP_IDX(blk_idx),
06230                            "BLK_INC_TEMP_IDX",   BLK_INC_TEMP_IDX(blk_idx)); 
06231 
06232          fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06233                            "BLK_INDUC_TEMP_IDX", BLK_INDUC_TEMP_IDX(blk_idx),
06234                            "BLK_TC_TEMP_IDX",    BLK_TC_TEMP_IDX(blk_idx));
06235 
06236          fprintf(out_file, "%4s%-26s= %-14s  %-24s= %-9s\n", " ",
06237                            "BLK_HAS_NESTED_LOOP",
06238                               boolean_str[BLK_HAS_NESTED_LOOP(blk_idx)],
06239                            "BLK_BLOCKABLE_NEST_OK ",
06240                               boolean_str[BLK_BLOCKABLE_NEST_OK(blk_idx)]);
06241                            
06242          fprintf(out_file, "%4s%-26s= %-14d  %-24s= %-9d\n", " ",
06243                            "BLK_BLOCKABLE_DIR_SH_IDX",
06244                               BLK_BLOCKABLE_DIR_SH_IDX(blk_idx),
06245                            "BLK_BLOCKABLE_NUM_LCVS",
06246                               BLK_BLOCKABLE_NUM_LCVS(blk_idx));
06247                            
06248          fprintf(out_file, "%4s%-26s= %-14d  %-24s= %-9d\n", " ",
06249                            "BLK_INTERCHANGE_DIR_SH_IDX",
06250                               BLK_INTERCHANGE_DIR_SH_IDX(blk_idx),
06251                            "BLK_INTERCHANGE_NUM_LCVS",
06252                               BLK_INTERCHANGE_NUM_LCVS(blk_idx));
06253                            
06254          fprintf(out_file, "%4s%-26s= %-14d  %-24s= %-9d\n", " ",
06255                            "BLK_DIR_NEST_CHECK_SH_IDX",
06256                               BLK_DIR_NEST_CHECK_SH_IDX(blk_idx),
06257                            "BLK_DIR_NEST_CHECK_NUM_LCVS",
06258                               BLK_DIR_NEST_CHECK_NUM_LCVS(blk_idx));
06259       }
06260    }
06261    else if (BLK_TYPE(blk_idx) == Select_Blk) {
06262       fprintf(out_file, "%4s%-19s= %-29d\n", " ",
06263                         "BLK_NUM_CASES", BLK_NUM_CASES(blk_idx));
06264 
06265       fprintf(out_file, "%4s%s%-9d   %s%-3d   %s   %s%-7d\n", " ",
06266                         "BLK_CASE_DEFAULT_LBL_OPND:  line = ", 
06267                         BLK_CASE_DEFAULT_LBL_LINE_NUM(blk_idx),
06268                         "col = ",  BLK_CASE_DEFAULT_LBL_COL_NUM(blk_idx),
06269                         field_str[BLK_CASE_DEFAULT_LBL_FLD(blk_idx)],
06270                         "idx = ", BLK_CASE_DEFAULT_LBL_IDX(blk_idx));
06271    }
06272    else if (cif_flags & BASIC_RECS) {
06273       fprintf(out_file, "%4s%-19s= %d\n", " ",
06274                         "BLK_CIF_SCOPE_ID", BLK_CIF_SCOPE_ID(blk_idx));
06275    }
06276 
06277    if (BLK_TYPE(blk_idx) == Derived_Type_Blk) {
06278       fprintf(out_file, "%4s%-18s= %-27d  \n", " ",
06279                         "BLK_LAST_CPNT_IDX",   BLK_LAST_CPNT_IDX(blk_idx));
06280    }
06281    else if (BLK_TYPE(blk_idx) == Interface_Body_Blk) {
06282       fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06283                         "BLK_AT_IDX",   BLK_AT_IDX(blk_idx),
06284                         "BLK_BD_IDX",   BLK_BD_IDX(blk_idx));
06285       fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06286                         "BLK_CN_IDX",   BLK_CN_IDX(blk_idx),
06287                         "BLK_CP_IDX",   BLK_CP_IDX(blk_idx));
06288       fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06289                         "BLK_NP_IDX",   BLK_NP_IDX(blk_idx),
06290                         "BLK_SB_IDX",   BLK_SB_IDX(blk_idx));
06291       fprintf(out_file, "%4s%-18s= %-27d  %-16s= %-12d\n", " ",
06292                         "BLK_SN_IDX",   BLK_SN_IDX(blk_idx),
06293                         "BLK_TYP_IDX",   BLK_TYP_IDX(blk_idx));
06294    }
06295 
06296    fflush (out_file);
06297 
06298    return;
06299 
06300 }  /* dump_blk_ntry */
06301 
06302 
06303 /******************************************************************************\
06304 |*                                                                            *|
06305 |* Description:                                                               *|
06306 |*      Prints one constant table entry to the specified output file.         *|
06307 |*                                                                            *|
06308 |* Input parameters:                                                          *|
06309 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
06310 |*      Index of constant entry to print.                                     *|
06311 |*                                                                            *|
06312 |* Output parameters:                                                         *|
06313 |*      NONE                                                                  *|
06314 |*                                                                            *|
06315 |* Returns:                                                                   *|
06316 |*      NOTHING                                                               *|
06317 |*                                                                            *|
06318 \******************************************************************************/
06319 
06320 static void dump_cn_ntry (FILE  *out_file,
06321                           int    cn_idx)
06322 
06323 {
06324    int          type_idx;
06325 
06326 
06327    if (cn_idx > const_tbl_idx) {
06328       fprintf(out_file, "\n*FE90-ERROR* CN index value [%d] is out of range.\n",
06329               cn_idx);
06330       return;
06331    }
06332 
06333    type_idx = CN_TYPE_IDX(cn_idx);
06334 
06335    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
06336                    "CN_BOOLEAN_CONST", boolean_str[CN_BOOLEAN_CONSTANT(cn_idx)],
06337                    "CN_BOZ_CONSTANT", boolean_str[CN_BOZ_CONSTANT(cn_idx)],
06338                    "IDX", cn_idx);
06339                      
06340    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s\n",
06341                "CN_EXTRA_ZERO_WO", boolean_str[CN_EXTRA_ZERO_WORD(cn_idx)],
06342                "CN_POOL_IDX", CN_POOL_IDX(cn_idx),
06343                 cn_hollerith_str[CN_HOLLERITH_ENDIAN(cn_idx)]);
06344 
06345 # if defined(_TARGET_LITTLE_ENDIAN)
06346    fprintf(out_file, "  %-16s= %-2s\n",
06347                "CN_HOLLERITH_END", boolean_str[CN_HOLLERITH_ENDIAN(cn_idx)]);
06348 # endif
06349 
06350    fprintf(out_file, "  %s%d] = %-s\n",
06351                      "CN_TYPE_IDX[", CN_TYPE_IDX(cn_idx),
06352                      print_type_f(type_idx));
06353 
06354    /* The old call was     dump_typ_ntry(out_file, type_idx); */
06355 
06356    print_const_f(out_file, cn_idx);
06357    fprintf(out_file, "\n\n");
06358    fflush (out_file);
06359 
06360    return;
06361 
06362 }  /* dump_cn_ntry */
06363 
06364 /******************************************************************************\
06365 |*                                                                            *|
06366 |* Description:                                                               *|
06367 |*      Prints a single Equivalence table entry.                              *|
06368 |*                                                                            *|
06369 |* Input parameters:                                                          *|
06370 |*      Index of Equivalence table entry to print.                            *|
06371 |*                                                                            *|
06372 |* Output parameters:                                                         *|
06373 |*      NONE                                                                  *|
06374 |*                                                                            *|
06375 |* Returns:                                                                   *|
06376 |*      NOTHING                                                               *|
06377 |*                                                                            *|
06378 \******************************************************************************/
06379 
06380 static void dump_eq_ntry (FILE  *out_file,
06381                           int    eq_idx)
06382 
06383 {
06384 
06385    if (eq_idx > equiv_tbl_idx) {
06386       fprintf(out_file, "\n*FE90-ERROR* EQ index value [%d] is out of range.\n",
06387               eq_idx);
06388       return;
06389    }
06390 
06391    fprintf(out_file, "%-53.53s %-16s= %-8d\n",
06392                       AT_OBJ_NAME_PTR(EQ_ATTR_IDX(eq_idx)),
06393                      "IDX", eq_idx);
06394 
06395    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8s\n",
06396                      "EQ_ATTR_IDX", EQ_ATTR_IDX(eq_idx),
06397                      "EQ_COLUMN_NUM", EQ_COLUMN_NUM(eq_idx),
06398                      "EQ_DALIGN_ME", boolean_str[EQ_DALIGN_ME(eq_idx)]);
06399 
06400    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
06401                      "EQ_DALIGN_SHIFT", boolean_str[EQ_DALIGN_SHIFT(eq_idx)],
06402                      "EQ_DO_NOT_DALIGN", boolean_str[EQ_DO_NOT_DALIGN(eq_idx)],
06403                      "EQ_ERROR", boolean_str[EQ_ERROR(eq_idx)]);
06404 
06405    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8d\n",
06406                      "EQ_GRP_END_IDX", EQ_GRP_END_IDX(eq_idx),
06407                      "EQ_GRP_IDX", EQ_GRP_IDX(eq_idx),
06408                      "EQ_LINE_NUM", EQ_LINE_NUM(eq_idx));
06409 
06410 # if 0
06411    if (EQ_LIST_IDX(eq_idx) != NULL_IDX) {
06412       print_list(out_file, IL_IDX(EQ_LIST_IDX(eq_idx)), 4, 1, FALSE);
06413    }
06414 # endif
06415 
06416    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
06417                      "EQ_LIST_IDX", EQ_LIST_IDX(eq_idx),
06418                      "EQ_MERGED", boolean_str[EQ_MERGED(eq_idx)],
06419                      "EQ_NEXT_EQUIV_GR", EQ_NEXT_EQUIV_GRP(eq_idx));
06420 
06421    print_fld_idx(out_file, "EQ_OFFSET_IDX",
06422                  EQ_OFFSET_FLD(eq_idx),
06423                  EQ_OFFSET_IDX(eq_idx));
06424 
06425    print_fld_idx(out_file, "EQ_OPND_IDX",
06426                  EQ_OPND_FLD(eq_idx),
06427                  EQ_OPND_IDX(eq_idx));
06428 
06429    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
06430                      "EQ_NEXT_EQUIV_OB", EQ_NEXT_EQUIV_OBJ(eq_idx),
06431                      "EQ_SEARCH_DONE", boolean_str[EQ_SEARCH_DONE(eq_idx)],
06432                      "EQ_SUBSTRINGED", boolean_str[EQ_SUBSTRINGED(eq_idx)]);
06433 
06434    putc ('\n', out_file);
06435    fflush(out_file);
06436 
06437    return;
06438 
06439 }  /* dump_eq_ntry */
06440 
06441 
06442 /******************************************************************************\
06443 |*                                                                            *|
06444 |* Description:                                                               *|
06445 |*                                                                            *|
06446 |* Input parameters:                                                          *|
06447 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
06448 |*      Index of file path table entry to print.                              *|
06449 |*                                                                            *|
06450 |* Output parameters:                                                         *|
06451 |*      NONE                                                                  *|
06452 |*                                                                            *|
06453 |* Returns:                                                                   *|
06454 |*      NOTHING                                                               *|
06455 |*                                                                            *|
06456 \******************************************************************************/
06457 
06458 static void dump_fp_ntry(FILE   *out_file,
06459                          int     fp_idx,
06460                          boolean print_list)
06461  
06462 {
06463 
06464    if (fp_idx > file_path_tbl_idx) {
06465       fprintf(out_file, "\n*FE90-ERROR* FP index value [%d] is out of range.\n",
06466               fp_idx);
06467       return;
06468    }
06469 
06470    do {
06471       fprintf(out_file, "%-s\n\n", FP_NAME_PTR(fp_idx));
06472 
06473       fprintf(out_file, "  %-16s= %-6d  %-16s= %-s\n",
06474               "IDX", fp_idx,
06475               "FP_CLASS", file_path_str[FP_CLASS(fp_idx)]);
06476 
06477       if (FP_FILE_IDX(fp_idx) != NULL_IDX &&
06478            FP_NAME_IDX(FP_FILE_IDX(fp_idx)) != NULL_IDX) {
06479          fprintf(out_file, "  %-16s= %-s\n",
06480                  "FP_FILE_IDX", FP_NAME_PTR(FP_FILE_IDX(fp_idx)));
06481       }
06482       else {
06483          fprintf(out_file, "  %-16s= %-s\n", "FP_FILE_IDX", "0");
06484       }
06485 
06486       if (FP_MODULE_IDX(fp_idx) != NULL_IDX &&
06487            FP_NAME_IDX(FP_MODULE_IDX(fp_idx)) != NULL_IDX) {
06488          fprintf(out_file, "  %-16s= %-s\n",
06489                  "FP_MODULE_IDX", FP_NAME_PTR(FP_MODULE_IDX(fp_idx)));
06490       }
06491       else {
06492          fprintf(out_file, "  %-16s= %-s\n", "FP_MODULE_IDX", "0");
06493       }
06494 
06495       if (FP_NEXT_FILE_IDX(fp_idx) != NULL_IDX &&
06496            FP_NAME_IDX(FP_NEXT_FILE_IDX(fp_idx)) != NULL_IDX) {
06497          fprintf(out_file, "  %-16s= %-6d  (%-s)\n",
06498                  "FP_NEXT_FILE_IDX", FP_NEXT_FILE_IDX(fp_idx),
06499                                      FP_NAME_PTR(FP_NEXT_FILE_IDX(fp_idx)));
06500       }
06501       else {
06502          fprintf(out_file, "  %-16s= %-s\n", "FP_NEXT_FILE_IDX", "0");
06503       }
06504 
06505       fprintf(out_file, "  %-16s= %-6d  %-16s= %-7d  %-16s= %-7s\n",
06506               "FP_MODULE_INLINE", FP_MODULE_INLINE_IDX(fp_idx),
06507               "FP_NAME_LEN", FP_NAME_LEN(fp_idx),
06508               "FP_OUTPUT_TO_O", boolean_str[FP_OUTPUT_TO_O(fp_idx)]);
06509 #if defined(_HOST32) && defined(_TARGET64)
06510       fprintf(out_file, "  %-16s= %-20Ld \n",
06511               "FP_OFFSET", FP_OFFSET(fp_idx));
06512 #else
06513       fprintf(out_file, "  %-16s= %-20ld \n",
06514               "FP_OFFSET", FP_OFFSET(fp_idx));
06515 #endif
06516 
06517       fprintf(out_file, "  %-16s= %-6s  %-16s= %-7s  %-16s= %-7s\n",
06518               "FP_SRCH_THE_FILE", boolean_str[FP_SRCH_THE_FILE(fp_idx)],
06519               "FP_SYSTEM_FILE", boolean_str[FP_SYSTEM_FILE(fp_idx)],
06520               "FP_TMP_FILE", boolean_str[FP_TMP_FILE(fp_idx)]);
06521 
06522       fp_idx = FP_MODULE_IDX(fp_idx);
06523    }
06524    while (print_list && fp_idx != NULL_IDX);
06525 
06526    fprintf(out_file, "\n");
06527 
06528    fflush (out_file);
06529    return;
06530 
06531 }  /* dump_fp_ntry */
06532 
06533 /******************************************************************************\
06534 |*                                                                            *|
06535 |* Description:                                                               *|
06536 |*      Prints one global attr table entry to the specified output file.      *|
06537 |*                                                                            *|
06538 |* Input parameters:                                                          *|
06539 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
06540 |*      Index of global attr entry to print.                                  *|
06541 |*                                                                            *|
06542 |* Output parameters:                                                         *|
06543 |*      NONE                                                                  *|
06544 |*                                                                            *|
06545 |* Returns:                                                                   *|
06546 |*      NOTHING                                                               *|
06547 |*                                                                            *|
06548 \******************************************************************************/
06549 
06550 static void dump_ga_ntry (FILE          *out_file,
06551                           int            ga_idx)
06552 
06553 {
06554    char         conv_str[80];
06555    int          ga_idx2;
06556    int          i;
06557 
06558 
06559    if (ga_idx > global_attr_tbl_idx) {
06560       fprintf(out_file, "\n*FE90-ERROR* GA index value [%d] is out of range.\n",
06561               ga_idx);
06562       return;
06563    }
06564 
06565    /* Note that the fields are displayed in alphabetical order.         */
06566 
06567    fprintf(out_file, "%-s\n", GA_OBJ_NAME_PTR(ga_idx));
06568 
06569    if (GA_OBJ_CLASS(ga_idx) == Common_Block) {
06570       fprintf(out_file, "  %-25s %-16s= %-7d %-16s= %-8d\n",
06571                      "Common_Blk",
06572                      "IDX", ga_idx,
06573                      "GA_DEF_COLUMN", GA_DEF_COLUMN(ga_idx));
06574 
06575       fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-s\n",
06576                         "GA_DEF_LINE", GA_DEF_LINE(ga_idx),
06577                         "GA_MODULE_IDX", GA_MODULE_IDX(ga_idx),
06578                         (GA_MODULE_IDX(ga_idx) == NULL_IDX) ? " ":
06579                                        GA_OBJ_NAME_PTR(GA_MODULE_IDX(ga_idx)));
06580 
06581       fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
06582                       "GA_NAME_LEN", GA_NAME_LEN(ga_idx),
06583                       "GA_USE_ASSOCIATE",boolean_str[GA_USE_ASSOCIATED(ga_idx)],
06584                       "GAC_AUXILIARY", boolean_str[GAC_AUXILIARY(ga_idx)]);
06585 
06586       fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
06587                      "GAC_ALIGN_SYMBOL", boolean_str[GAC_ALIGN_SYMBOL(ga_idx)],
06588                      "GAC_CACHE_ALIGN", boolean_str[GAC_CACHE_ALIGN(ga_idx)],
06589                      "GAC_EQUIVALENCED", boolean_str[GAC_EQUIVALENCED(ga_idx)]);
06590 
06591       fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
06592                       "GAC_FILL_SYMBOL", boolean_str[GAC_FILL_SYMBOL(ga_idx)],
06593                       "GAC_FIRST_MEMBER", GAC_FIRST_MEMBER_IDX(ga_idx),
06594                       "GAC_FOUND_DIFFS", boolean_str[GAC_FOUND_DIFFS(ga_idx)]);
06595 
06596       fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
06597                     "GAC_SECTION_GP", boolean_str[GAC_SECTION_GP(ga_idx)],
06598                     "GAC_SECTION_NON_", boolean_str[GAC_SECTION_NON_GP(ga_idx)],
06599                     "GAC_TASK_COMMON", boolean_str[GAC_TASK_COMMON(ga_idx)]);
06600 
06601       ga_idx2   = GAC_FIRST_MEMBER_IDX(ga_idx);
06602 
06603       while (ga_idx2 != NULL_IDX) {
06604          dump_ga_ntry(out_file, ga_idx2);
06605          ga_idx2 = GAD_NEXT_IDX(ga_idx2);
06606       }
06607       return;
06608    }
06609 
06610 
06611    fprintf(out_file, "  %-25s %-16s= %-7s %-16s= %-8d\n",
06612                      obj_class_str[GA_OBJ_CLASS(ga_idx)],
06613                      "GA_REFERENCED", boolean_str[GA_REFERENCED(ga_idx)],
06614                      "IDX", ga_idx);
06615 
06616    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8d\n",
06617                      "GA_COMPILER_GEND", boolean_str[GA_COMPILER_GEND(ga_idx)],
06618                      "GA_DEF_COLUMN", GA_DEF_COLUMN(ga_idx),
06619                      "GA_DEF_LINE", GA_DEF_LINE(ga_idx));
06620 
06621    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-s\n",
06622                      "GA_DEFINED", boolean_str[GA_DEFINED(ga_idx)],
06623                      "GA_MODULE_IDX", GA_MODULE_IDX(ga_idx),
06624                      (GA_MODULE_IDX(ga_idx) == NULL_IDX) ? " ":
06625                                        GA_OBJ_NAME_PTR(GA_MODULE_IDX(ga_idx)));
06626 
06627    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
06628                      "GA_NAME_LEN", GA_NAME_LEN(ga_idx),
06629                      "GA_OPTIONAL", boolean_str[GA_OPTIONAL(ga_idx)],
06630                      "GA_ORIG_NAME_LEN", GA_ORIG_NAME_LEN(ga_idx));
06631 
06632    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-s\n",
06633                      "GA_USE_ASSOCIATE",boolean_str[GA_USE_ASSOCIATED(ga_idx)],
06634                      "GA_ORIG_NAME_IDX", GA_ORIG_NAME_IDX(ga_idx),
06635                               (GA_ORIG_NAME_IDX(ga_idx) == NULL_IDX)
06636                                          ? " ": GA_ORIG_NAME_PTR(ga_idx));
06637 
06638 
06639    switch (GA_OBJ_CLASS(ga_idx)) {
06640    case Data_Obj:
06641 
06642       fprintf(out_file, "  %-25s %-16s= %-7s %-16s= %-8d\n",
06643               atd_class_str[GAD_CLASS(ga_idx)],
06644               "GAD_ARRAY_ELEMEN", boolean_str[GAD_ARRAY_ELEMENT_REF(ga_idx)],
06645               "GAD_ARRAY_IDX", GAD_ARRAY_IDX(ga_idx));
06646 
06647       if (GAD_CLASS(ga_idx) == Dummy_Argument) {
06648          fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
06649                "GAD_ASSUMED_SHAP", boolean_str[GAD_ASSUMED_SHAPE_ARRAY(ga_idx)],
06650                "GAD_INTENT", intent_str[GAD_INTENT(ga_idx)],
06651                "GAD_NEXT_IDX", GAD_NEXT_IDX(ga_idx));
06652       }
06653       else if (GAD_CLASS(ga_idx) == Constant) {
06654          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-s\n",
06655                "GAD_ASSUMED_SHAP", boolean_str[GAD_ASSUMED_SHAPE_ARRAY(ga_idx)],
06656                "GAD_NEXT_IDX", GAD_NEXT_IDX(ga_idx),
06657                "GAD_HOLLERITH", cn_hollerith_str[GAD_HOLLERITH(ga_idx)]);
06658       }
06659       else {
06660          fprintf(out_file, "  %-16s= %-7s %-16s= %-7d\n",
06661                "GAD_ASSUMED_SHAP", boolean_str[GAD_ASSUMED_SHAPE_ARRAY(ga_idx)],
06662                "GAD_NEXT_IDX", GAD_NEXT_IDX(ga_idx));
06663       }
06664 
06665       fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
06666               "GAD_POINTER", boolean_str[GAD_POINTER(ga_idx)],
06667               "GAD_RANK", GAD_RANK(ga_idx),
06668               "GAD_TARGET", boolean_str[GAD_TARGET(ga_idx)]);
06669 
06670       fprintf(out_file, "  %-16s= %-7d %-s\n",
06671               "GAD_TYPE_IDX",  GAD_TYPE_IDX(ga_idx),
06672                print_global_type_f(GAD_TYPE_IDX(ga_idx)));
06673 
06674       if (GAD_ARRAY_IDX(ga_idx) != NULL_IDX) {
06675          dump_gb_ntry(out_file, GAD_ARRAY_IDX(ga_idx));
06676       }
06677 
06678       break;
06679 
06680 
06681    case Pgm_Unit:
06682 
06683       fprintf(out_file, "  %-25s %-16s= %-7s %-16s= %-8d\n",
06684               atp_pgm_unit_str[GAP_PGM_UNIT(ga_idx)],
06685               "GAP_ELEMENTAL", boolean_str[GAP_ELEMENTAL(ga_idx)],
06686               "GAP_FIRST_IDX", GAP_FIRST_IDX(ga_idx));
06687 
06688       fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
06689               "GAP_FP_IDX", GAP_FP_IDX(ga_idx),
06690               "GAP_GLOBAL_DIR", boolean_str[GAP_GLOBAL_DIR(ga_idx)],
06691               "GAP_IN_INTERFACE", boolean_str[GAP_IN_INTERFACE_BLK(ga_idx)]);
06692 
06693       fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
06694               "GAP_NEEDS_EXPL_I", boolean_str[GAP_NEEDS_EXPL_ITRFC(ga_idx)],
06695               "GAP_NEXT_PGM_IDX", GAP_NEXT_PGM_UNIT_IDX(ga_idx),
06696               "GAP_NOSIDE_EFFEC", boolean_str[GAP_NOSIDE_EFFECTS(ga_idx)]);
06697 
06698       fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8s\n",
06699               "GAP_NUM_DARGS", GAP_NUM_DARGS(ga_idx),
06700               "GAP_PGM_UNIT_DEF", boolean_str[GAP_PGM_UNIT_DEFINED(ga_idx)],
06701               "GAP_PURE", boolean_str[GAP_PURE(ga_idx)]);
06702 
06703       fprintf(out_file, "  %-16s= %-7s %-16s= %-7s\n",
06704               "GAP_RECURSIVE", boolean_str[GAP_RECURSIVE(ga_idx)],
06705               "GAP_VFUNCTION",boolean_str[GAP_VFUNCTION(ga_idx)]);
06706 
06707       if (GAP_RSLT_IDX(ga_idx) != NULL_IDX) {
06708          dump_ga_ntry(out_file, GAP_RSLT_IDX(ga_idx));
06709       }
06710 
06711       ga_idx2   = GAP_FIRST_IDX(ga_idx);
06712 
06713       for (i = GAP_NUM_DARGS(ga_idx); i > 0; i--) {
06714          dump_ga_ntry(out_file, ga_idx2);
06715          ga_idx2++;
06716       }
06717 
06718       break;
06719 
06720    case Derived_Type:
06721 
06722       fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8s\n",
06723               "GAT_FIRST_CPNT_I", GAT_FIRST_CPNT_IDX(ga_idx),
06724               "GAT_NUM_CPNTS", GAT_NUM_CPNTS(ga_idx),
06725               "GAT_PRIVATE_CPNT", boolean_str[GAT_PRIVATE_CPNT(ga_idx)]);
06726 
06727 #if ! (defined(_HOST32) && defined(_TARGET64))
06728       /* 31Jan01[sos]: Following call to convert_to_string gets SIGSEGV w/PV 761865 */
06729       /* fprintf(out_file, "  %-16s= %-7s %-16s= %-33s\n",                          */
06730       /*         "GAT_SEQUENCE_SET", boolean_str[GAT_SEQUENCE_SET(ga_idx)],         */
06731       /*         "GAT_STRUCT_BIT_L",                                                */
06732       /*              convert_to_string(GAT_STRUCT_BIT_LEN(ga_idx),                 */
06733       /*                                GAT_STRUCT_LIN_TYPE(ga_idx), conv_str));    */
06734       /* Fix follows...                                                             */
06735       fprintf(out_file, "  %-16s= %-7s %-16s= %-33ld\n",
06736               "GAT_SEQUENCE_SET", boolean_str[GAT_SEQUENCE_SET(ga_idx)],
06737               "GAT_STRUCT_BIT_L", *GAT_STRUCT_BIT_LEN(ga_idx));
06738 #else
06739       fprintf(out_file, "  %-16s= %-7s %-16s= %-33Ld\n",
06740               "GAT_SEQUENCE_SET", boolean_str[GAT_SEQUENCE_SET(ga_idx)],
06741               "GAT_STRUCT_BIT_L", *GAT_STRUCT_BIT_LEN(ga_idx));
06742 #endif
06743 
06744       ga_idx2   = GAT_FIRST_CPNT_IDX(ga_idx);
06745 
06746       for (i = GAT_NUM_CPNTS(ga_idx); i > 0; i--) {
06747          dump_ga_ntry(out_file, ga_idx2);
06748          ga_idx2++;
06749       }
06750 
06751       break;
06752 
06753 
06754    default:
06755       break;
06756 
06757    }  /* End switch */
06758 
06759    putc ('\n', out_file);
06760    fflush (out_file);
06761 
06762    return;
06763 
06764 }  /* dump_ga_ntry */
06765 
06766 /******************************************************************************\
06767 |*                                                                            *|
06768 |* Description:                                                               *|
06769 |*      Prints one global bounds table entry to the specified output file.    *|
06770 |*                                                                            *|
06771 |* Input parameters:                                                          *|
06772 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
06773 |*      Index of global bound entry to print.                                 *|
06774 |*                                                                            *|
06775 |* Output parameters:                                                         *|
06776 |*      NONE                                                                  *|
06777 |*                                                                            *|
06778 |* Returns:                                                                   *|
06779 |*      NOTHING                                                               *|
06780 |*                                                                            *|
06781 \******************************************************************************/
06782 
06783 static void dump_gb_ntry (FILE          *out_file,
06784                           int            gb_idx)
06785 
06786 {
06787    char         conv_str[80];
06788    char         conv_str2[80];
06789    int          i;
06790 
06791 
06792    if (gb_idx > global_bounds_tbl_idx) {
06793       fprintf(out_file, "\n*FE90-ERROR* GB index value [%d] is out of range.\n",
06794               gb_idx);
06795       goto EXIT;
06796    }
06797 
06798    fprintf(out_file, "  %-16s= %-7d %-15s %-25s %-4s= %d\n",
06799                      "GB_RANK", GB_RANK(gb_idx),
06800                                 bd_array_class_str[GB_ARRAY_CLASS(gb_idx)],
06801                                 bd_array_size_str[GB_ARRAY_SIZE(gb_idx)],
06802                      "IDX", gb_idx);
06803 
06804    if (GB_ARRAY_CLASS(gb_idx) == Explicit_Shape && 
06805        GB_ARRAY_SIZE(gb_idx) == Constant_Size) {
06806 
06807       for (i = 1; i <=  GB_RANK(gb_idx); i++) {
06808          fprintf(out_file, "  %-16s= %-7d %-15s %-15s %-15s %-15s\n",
06809                            "Dimension", i,
06810                             convert_to_string(GB_LOWER_BOUND(gb_idx,i),
06811                                        GT_LINEAR_TYPE(GB_LB_TYPE(gb_idx,i)),
06812                                        conv_str),
06813                             print_global_type_f(GB_LB_TYPE(gb_idx,i)),
06814                             convert_to_string(GB_UPPER_BOUND(gb_idx,i),
06815                                        GT_LINEAR_TYPE(GB_UB_TYPE(gb_idx,i)),
06816                                        conv_str2),
06817                             print_global_type_f(GB_UB_TYPE(gb_idx,i)));
06818       }
06819    }
06820 
06821    putc ('\n', out_file);
06822 
06823 EXIT:
06824 
06825    fflush (out_file);
06826    return;
06827 
06828 }  /* dump_gb_ntry */
06829 
06830 /******************************************************************************\
06831 |*                                                                            *|
06832 |* Description:                                                               *|
06833 |*      Prints a global line table entry.                                     *|
06834 |*                                                                            *|
06835 |* Input parameters:                                                          *|
06836 |*      Index of global line table entry to print.                            *|
06837 |*                                                                            *|
06838 \******************************************************************************/
06839 
06840 static  void dump_gl_ntry(FILE          *out_file,
06841                           int            gl_idx)
06842 
06843 {
06844    if (gl_idx > global_line_tbl_idx) {
06845       fprintf(out_file, "\n*FE90-ERROR* GL index value [%d] is out of range.\n",
06846               gl_idx);
06847       return;
06848    }
06849 
06850    fprintf(out_file,"%-s\n", GL_FILE_NAME_PTR(gl_idx));
06851    fprintf(out_file,"%-s\n", GL_PATH_NAME_PTR(gl_idx));
06852 
06853    if (full_debug_dump) {
06854       fprintf(out_file,"    %-22s= %-10d\n",
06855               "IDX", gl_idx);
06856 
06857       fprintf(out_file,"    %-22s= %-10d  %-20s= %-10d\n",
06858               "GL_PATH_NAME_IDX", GL_PATH_NAME_IDX(gl_idx),
06859               "GL_FILE_NAME_IDX", GL_FILE_NAME_IDX(gl_idx));
06860    }
06861 
06862    fprintf(out_file,"    %-22s= %-10d  %-20s= %-10d\n",
06863            "GL_CIF_FILE_ID", GL_CIF_FILE_ID(gl_idx),
06864            "GL_FILE_LINE",   GL_FILE_LINE(gl_idx));
06865 
06866    fprintf(out_file,"    %-22s= %-10d  %-20s= %-10d\n",
06867            "GL_FILE_NAME_LEN", GL_FILE_NAME_LEN(gl_idx),
06868            "GL_GLOBAL_LINE",   GL_GLOBAL_LINE(gl_idx));
06869 
06870    fprintf(out_file,"    %-22s= %-10d  %-20s= %-10d\n",
06871            "GL_INCLUDE_FILE_COL", GL_INCLUDE_FILE_COL(gl_idx),
06872            "GL_INCLUDE_FILE_LINE", GL_INCLUDE_FILE_LINE(gl_idx));
06873 
06874 
06875    fprintf(out_file,"    %-22s= %-10d  %-20s= %-10d\n",
06876            "GL_PATH_NAME_LEN", GL_PATH_NAME_LEN(gl_idx),
06877            "GL_SOURCE_LINES", GL_SOURCE_LINES(gl_idx));
06878 
06879    return;
06880 
06881 }  /* dump_gl_ntry */
06882 
06883 
06884 /******************************************************************************\
06885 |*                                                                            *|
06886 |* Description:                                                               *|
06887 |*      Prints a global name table entry.                                     *|
06888 |*                                                                            *|
06889 |* Input parameters:                                                          *|
06890 |*      Index of global name table entry to print.                            *|
06891 |*                                                                            *|
06892 \******************************************************************************/
06893 static  void dump_gn_ntry(FILE          *out_file,
06894                           int            gn_idx)
06895 
06896 {
06897    if (gn_idx > global_name_tbl_idx) {
06898       fprintf(out_file, "\n*FE90-ERROR* GN index value [%d] is out of range.\n",
06899               gn_idx);
06900       return;
06901    }
06902 
06903    fprintf(out_file, "%-s\n", GN_NAME_PTR(gn_idx));
06904 
06905    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d \n",
06906            "IDX", gn_idx,
06907            "GN_ATTR_IDX", GN_ATTR_IDX(gn_idx));
06908 
06909    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d\n",
06910            "GN_NAME_IDX", GN_NAME_IDX(gn_idx),
06911            "GN_NAME_LEN", GN_NAME_LEN(gn_idx));
06912    return;
06913 
06914 }  /* dump_gn_ntry */
06915 
06916 
06917 /******************************************************************************\
06918 |*                                                                            *|
06919 |* Description:                                                               *|
06920 |*                                                                            *|
06921 |* Input parameters:                                                          *|
06922 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
06923 |*      Index of type table entry to print.                                   *|
06924 |*                                                                            *|
06925 |* Output parameters:                                                         *|
06926 |*      NONE                                                                  *|
06927 |*                                                                            *|
06928 |* Returns:                                                                   *|
06929 |*      NOTHING                                                               *|
06930 |*                                                                            *|
06931 \******************************************************************************/
06932 
06933 static void dump_gt_ntry(FILE   *out_file,
06934                          int     gt_idx)
06935  
06936 {
06937    char         conv_str[80];
06938 
06939 
06940    if (gt_idx > global_type_tbl_idx) {
06941       fprintf(out_file,"\n*FE90-ERROR* GT index value [%d] is out of range.\n",
06942               gt_idx);
06943       return;
06944    }
06945 
06946    fprintf(out_file,"  %-25s %-25s %-26s\n",
06947            basic_type_str[GT_TYPE(gt_idx)],
06948            lin_type_str[GT_LINEAR_TYPE(gt_idx)],
06949            type_desc_str[GT_DESC(gt_idx)]);
06950 
06951    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d",
06952            "GT_DCL_VALUE", GT_DCL_VALUE(gt_idx),
06953            "IDX", gt_idx);
06954 
06955    if (GT_TYPE(gt_idx) == Character) {
06956       fprintf(out_file," %-25s \n  %-16s= %-s\n",
06957               type_char_class_str[GT_CHAR_CLASS(gt_idx)],
06958               "GT_LENGTH",
06959               convert_to_string(GT_LENGTH(gt_idx),
06960                                 GT_LENGTH_LIN_TYPE(gt_idx),
06961                                 conv_str));
06962    }
06963    else if (GT_TYPE(gt_idx) == CRI_Ptr) {
06964 #if defined(_HOST32) && defined(_TARGET64)
06965       fprintf(out_file, " %-16s= %-7Ld\n",
06966            "GT_PTR_INCREMENT", GT_PTR_INCREMENT(gt_idx));
06967 #else
06968       fprintf(out_file, " %-16s= %-7ld\n",
06969            "GT_PTR_INCREMENT", GT_PTR_INCREMENT(gt_idx));
06970 #endif
06971    }
06972    else if (GT_TYPE(gt_idx) == Structure) {
06973       fprintf(out_file, " %-16s= %-7d\n",
06974                         "GT_STRUCT_IDX", GT_STRUCT_IDX(gt_idx));
06975 
06976       dump_ga_ntry(out_file, GT_STRUCT_IDX(gt_idx));
06977    }
06978    else {
06979       fprintf(out_file, " %-16s= %-33s\n",
06980               "GT_BIT_LEN", CONVERT_CVAL_TO_STR(&GT_BIT_LEN(gt_idx),
06981                                                  Integer_8,
06982                                                  conv_str));
06983    }
06984 
06985    putc ('\n', out_file);
06986 
06987    fflush (out_file);
06988    return;
06989 
06990 }  /* dump_gt_ntry */
06991 
06992 
06993 /******************************************************************************\
06994 |*                                                                            *|
06995 |* Description:                                                               *|
06996 |*      Dumps a single Hidden Name Table entry to the specified file.         *|
06997 |*                                                                            *|
06998 |* Input parameters:                                                          *|
06999 |*      Pointer to dump file.                                                 *|
07000 |*      Index of Hidden Name Table entry to print.                            *|
07001 |*      Flag to indicate whether to print the attr entry or not.  If the attr *|
07002 |*         entry is printed, it is a full attr entry dump.                    *|
07003 |*                                                                            *|
07004 |* Output parameters:                                                         *|
07005 |*      NONE                                                                  *|
07006 |*                                                                            *|
07007 |* Returns:                                                                   *|
07008 |*      NOTHING                                                               *|
07009 |*                                                                            *|
07010 \******************************************************************************/
07011 
07012 static void dump_hn_ntry(FILE           *out_file,
07013                          int            idx,
07014                          boolean        print_the_attr)
07015 
07016 {
07017 
07018    if (idx > hidden_name_tbl_idx) {
07019       fprintf(out_file, "\n*FE90-ERROR* HN index value [%d] is out of range.\n",
07020               idx);
07021       return;
07022    }
07023 
07024    if (HN_ATTR_IDX(idx) != NULL_IDX) {
07025 
07026       if (HN_NAME_IDX(idx) != NULL_IDX) {
07027          fprintf(out_file, "%-32.32s  ",&name_pool[HN_NAME_IDX(idx)].name_char);
07028       }
07029       else {
07030          fprintf(out_file, "%-32.32s  ", "**No name - HN_NAME_IDX is 0**");
07031       }
07032    }
07033    else {
07034       fprintf(out_file, "%-32.32s  ", "**Error** - HN_ATTR_IDX = 0**");
07035    }
07036 
07037    fprintf(out_file, "%-8s= %-7d %-16s= %-8d\n",
07038            "IDX", idx, 
07039            "HN_ATTR_IDX", HN_ATTR_IDX(idx));
07040 
07041    fprintf(out_file, "  %-16s= %-7d %-16s= %-8d\n",
07042            "HN_NAME_IDX", HN_NAME_IDX(idx),
07043            "HN_NAME_LEN", HN_NAME_LEN(idx));
07044 
07045    if (print_the_attr && HN_ATTR_IDX(idx) != NULL_IDX) {
07046       putc ('\n', out_file);
07047       dump_at_ntry(out_file, HN_ATTR_IDX(idx), TRUE);
07048    }
07049 
07050    putc ('\n', out_file);
07051 
07052    return;
07053 
07054 }  /* dump_hn_ntry */
07055 
07056 /******************************************************************************\
07057 |*                                                                            *|
07058 |* Description:                                                               *|
07059 |*      Dumps a single List Table entry to the specified file.                *|
07060 |*      See also print_list (used to dump a chain of List entries when the    *|
07061 |*        length of the chain is known).                                      *|
07062 |*                                                                            *|
07063 |* Input parameters:                                                          *|
07064 |*      Pointer to dump file.                                                 *|
07065 |*      Index of List Table entry to print.                                   *|
07066 |*                                                                            *|
07067 |* Output parameters:                                                         *|
07068 |*      NONE                                                                  *|
07069 |*                                                                            *|
07070 |* Returns:                                                                   *|
07071 |*      NOTHING                                                               *|
07072 |*                                                                            *|
07073 \******************************************************************************/
07074 
07075 static void dump_il_ntry(FILE         *out_file,
07076                          int          idx)
07077 
07078 {
07079    if (idx > ir_list_tbl_idx) {
07080       fprintf(out_file, "\n*FE90-ERROR* IL index value [%d] is out of range.\n",
07081               idx);
07082       return;
07083    }
07084 
07085    fprintf(out_file, "%s= %-8d",
07086            "IL_NEXT_LIST_IDX", IL_NEXT_LIST_IDX(idx));
07087 
07088    if (! IL_ARG_DESC_VARIANT(idx)) {
07089       fprintf(out_file, "    %s= %-8d\n",
07090               "IL_PREV_LIST_IDX", IL_PREV_LIST_IDX(idx));
07091    }
07092    else {
07093       fprintf(out_file, "    %s= %-8d\n",
07094               "IL_ARG_DESC_IDX", IL_ARG_DESC_IDX(idx));
07095       putc('\n', out_file);
07096    }
07097 
07098    if (IL_FLD(idx) == IL_Tbl_Idx) {
07099       fprintf(out_file, "%s= %-8d   ",
07100               "IL_LIST_CNT", IL_LIST_CNT(idx));
07101    }
07102    else {
07103       fprintf(out_file, "%s= %-8d   %s= %-3d   ",
07104               "IL_LINE_NUM", IL_LINE_NUM(idx),
07105               "IL_COL_NUM",  IL_COL_NUM(idx));
07106    }
07107 
07108    fprintf(out_file, "%s= %s   %s= ",
07109            "IL_FLD", field_str[IL_FLD(idx)], "IL_IDX");
07110 
07111    if (IL_IDX(idx) != NULL_IDX) {
07112       fprintf(out_file, "%-8d\n", IL_IDX(idx));
07113    }
07114    else {
07115       fprintf(out_file, "%s\n", "*NULL_IDX*");
07116    }
07117 
07118    putc ('\n', out_file);
07119 
07120 }  /* dump_il_ntry */
07121 
07122 /******************************************************************************\
07123 |*                                                                            *|
07124 |* Description:                                                               *|
07125 |*      recursively prints ir text. Not intended for stmt headers.            *|
07126 |*                                                                            *|
07127 |* Input parameters:                                                          *|
07128 |*      NONE                                                                  *|
07129 |*                                                                            *|
07130 |* Output parameters:                                                         *|
07131 |*      NONE                                                                  *|
07132 |*                                                                            *|
07133 |* Returns:                                                                   *|
07134 |*      NOTHING                                                               *|
07135 |*                                                                            *|
07136 \******************************************************************************/
07137 
07138 static void dump_ir_ntry(FILE   *out_file,
07139                          int     idx,
07140                          int     indent)
07141 
07142 {
07143    int          i;
07144    boolean      io_list = FALSE;
07145    char         n_shift[INDENT_SIZE + 1];
07146    char         shift[80];
07147    int          type_idx;
07148    long_type    io_type_code[2];
07149 
07150 
07151    if (idx > ir_tbl_idx) {
07152       fprintf(out_file, "\n*FE90-ERROR* IR index value [%d] is out of range.\n",
07153               idx);
07154       return;
07155    }
07156 
07157    for (i = 0; i < INDENT_SIZE * indent; i++) {
07158       shift[i] = ' ';
07159       if (i == 79)
07160          break;
07161    }
07162    shift[i] = '\0';
07163    for (i = 0; i < INDENT_SIZE; i++) {
07164       n_shift[i] = ' ';
07165    }
07166 
07167    n_shift[i]   = '\0';
07168    type_idx     = IR_TYPE_IDX(idx);
07169 
07170    fprintf(out_file, "%s%s  idx = %d", shift, operator_str[IR_OPR(idx)], idx);
07171 
07172    if (type_idx == NULL_IDX) {
07173       fprintf(out_file, "  %s  ", "NO TYPE");
07174    }
07175    else {
07176       fprintf(out_file, "  %s  ", print_type_f(type_idx));
07177    }
07178 
07179    if (IR_OPR(idx) >= Dv_Whole_Copy_Opr && 
07180        IR_OPR(idx) <= Dv_Set_Stride_Mult) {
07181       fprintf(out_file, " dim = %d", IR_DV_DIM(idx));
07182    }
07183 # if defined(GENERATE_WHIRL)
07184    else if (IR_OPR(idx) == Call_Opr) {
07185       if (IR_INLINE_STATE(idx) == Inline_Sgi) {
07186          fprintf(out_file, " INLINE ");
07187       }
07188       else if (IR_INLINE_STATE(idx) == Noinline_Sgi) {
07189          fprintf(out_file, " NOINLINE ");
07190       }
07191    }
07192 # endif
07193 
07194    if ((IR_OPR(idx) == Subscript_Opr ||
07195         IR_OPR(idx) == Section_Subscript_Opr ||
07196         IR_OPR(idx) == Substring_Opr) &&
07197        IR_BOUNDS_DONE(idx)) {
07198 
07199       fprintf(out_file, " BOUNDS DONE ");
07200    }
07201 
07202    if (IR_OPR(idx) == Whole_Subscript_Opr &&
07203        IR_CONTIG_ARRAY(idx)) {
07204 
07205      fprintf(out_file, " CONTIGUOUS ARRAY ");
07206    }
07207 
07208    if (IR_OPR(idx) == Subscript_Opr &&
07209        IR_WHOLE_ARRAY(idx)) {
07210 
07211      fprintf(out_file, " WHOLE ARRAY ");
07212    }
07213 
07214    if (IR_OPR(idx) == Read_Formatted_Opr ||
07215        IR_OPR(idx) == Read_Unformatted_Opr ||
07216        IR_OPR(idx) == Read_Namelist_Opr ||
07217        IR_OPR(idx) == Write_Formatted_Opr ||
07218        IR_OPR(idx) == Write_Unformatted_Opr ||
07219        IR_OPR(idx) == Write_Namelist_Opr ||
07220        IR_OPR(idx) == Inquire_Iolength_Opr) {
07221 
07222       io_list = TRUE;
07223    }
07224 
07225    fprintf(out_file, " rank = %d;", IR_RANK(idx));
07226    fprintf(out_file, " line = %d, col = %d\n", IR_LINE_NUM(idx),
07227                                                 IR_COL_NUM(idx));
07228 
07229    if (IR_OPR(idx) == Dv_Whole_Def_Opr) {
07230 
07231       fprintf(out_file, "%sLeft opnd is %s;", shift, field_str[IR_FLD_L(idx)]);
07232 
07233       switch (IR_FLD_L(idx)) {
07234          case CN_Tbl_Idx :
07235          case AT_Tbl_Idx   :
07236                  fprintf(out_file,"  line = %d, col = %d\n",IR_LINE_NUM_L(idx),
07237                                  IR_COL_NUM_L(idx));
07238                  break;
07239          case IL_Tbl_Idx  :
07240                  fprintf(out_file,"  list cnt = %d\n", IR_LIST_CNT_L(idx));
07241                  break;
07242          default         :
07243                  fprintf(out_file,"\n");
07244                  break;
07245       }
07246 
07247       print_Dv_Whole_Def_Opr(out_file, IR_IDX_L(idx),
07248                             indent + 1, IR_LIST_CNT_L(idx));
07249    }
07250    else if (IR_OPR(idx) == Doacross_Dollar_Opr ||
07251             IR_OPR(idx) == Psection_Par_Opr ||
07252             IR_OPR(idx) == Singleprocess_Par_Opr ||
07253             IR_OPR(idx) == Parallel_Do_Par_Opr ||
07254             IR_OPR(idx) == Parallel_Par_Opr ||
07255             IR_OPR(idx) == Pdo_Par_Opr) {
07256 
07257 
07258       fprintf(out_file, "%sLeft opnd is %s;", shift, field_str[IR_FLD_L(idx)]);
07259 
07260       switch (IR_FLD_L(idx)) {
07261          case CN_Tbl_Idx :
07262          case AT_Tbl_Idx   :
07263                  fprintf(out_file,"  line = %d, col = %d\n",IR_LINE_NUM_L(idx),
07264                                  IR_COL_NUM_L(idx));
07265                  break;
07266          case IL_Tbl_Idx  :
07267                  fprintf(out_file,"  list cnt = %d\n", IR_LIST_CNT_L(idx));
07268                  break;
07269          default         :
07270                  fprintf(out_file,"\n");
07271                  break;
07272       }
07273 
07274       print_mp_dir_opr(out_file, IR_IDX_L(idx),
07275                             indent + 1, IR_LIST_CNT_L(idx));
07276    }
07277    else if (IR_OPR(idx) == Do_Open_Mp_Opr ||
07278             IR_OPR(idx) == Parallel_Open_Mp_Opr ||
07279             IR_OPR(idx) == Paralleldo_Open_Mp_Opr ||
07280             IR_OPR(idx) == Parallelsections_Open_Mp_Opr ||
07281             IR_OPR(idx) == Sections_Open_Mp_Opr ||
07282             IR_OPR(idx) == Single_Open_Mp_Opr) {
07283 
07284 
07285       fprintf(out_file, "%sLeft opnd is %s;", shift, field_str[IR_FLD_L(idx)]);
07286 
07287       switch (IR_FLD_L(idx)) {
07288          case CN_Tbl_Idx :
07289          case AT_Tbl_Idx   :
07290                  fprintf(out_file,"  line = %d, col = %d\n",IR_LINE_NUM_L(idx),
07291                                  IR_COL_NUM_L(idx));
07292                  break;
07293          case IL_Tbl_Idx  :
07294                  fprintf(out_file,"  list cnt = %d\n", IR_LIST_CNT_L(idx));
07295                  break;
07296          default         :
07297                  fprintf(out_file,"\n");
07298                  break;
07299       }
07300 
07301       print_open_mp_dir_opr(out_file, IR_IDX_L(idx),
07302                             indent + 1, IR_LIST_CNT_L(idx));
07303    }
07304    else {
07305 
07306       if (IR_OPR(idx) == Io_Item_Type_Code_Opr) {
07307          make_io_type_code(IR_TYPE_IDX(idx), io_type_code);
07308          dump_io_type_code_ntry(out_file, io_type_code, indent + 1);
07309       }
07310 
07311       fprintf(out_file, "%sLeft opnd is %s;", shift, field_str[IR_FLD_L(idx)]);
07312 
07313       switch (IR_FLD_L(idx)) {
07314          case CN_Tbl_Idx :
07315          case AT_Tbl_Idx   :
07316          case SB_Tbl_Idx   :
07317                  fprintf(out_file,"  line = %d, col = %d\n",IR_LINE_NUM_L(idx),
07318                                  IR_COL_NUM_L(idx));
07319                  break;
07320          case IL_Tbl_Idx  :
07321                  fprintf(out_file,"  list cnt = %d\n", IR_LIST_CNT_L(idx));
07322                  break;
07323          default         :
07324                  fprintf(out_file,"\n");
07325                  break;
07326       }
07327 
07328       switch (IR_FLD_L(idx)) {
07329          case NO_Tbl_Idx :
07330                  break;
07331          case CN_Tbl_Idx : 
07332                  print_const_entry(out_file, IR_IDX_L(idx), indent + 1);
07333                  break;
07334          case AT_Tbl_Idx : 
07335                  print_attr_name(out_file, IR_IDX_L(idx), indent + 1);
07336                  break;
07337          case SB_Tbl_Idx : 
07338                  fprintf(out_file,"%s\n", SB_NAME_PTR(IR_IDX_L(idx)));
07339                  break;
07340          case IR_Tbl_Idx :
07341                  dump_ir_ntry(out_file, IR_IDX_L(idx), indent + 1);
07342                  break;
07343          case IL_Tbl_Idx :
07344                  if (IR_IDX_L(idx) != NULL_IDX && IR_LIST_CNT_L(idx) > 0) {
07345                     print_list(out_file, IR_IDX_L(idx), 
07346                             indent + 1, IR_LIST_CNT_L(idx), io_list);
07347                  }
07348                  break;
07349          case SH_Tbl_Idx :
07350                  fprintf(out_file, "%s%sStmt Header idx = %d\n", shift, 
07351                          n_shift, IR_IDX_L(idx));
07352                  break;
07353       }
07354    
07355       fprintf(out_file,"%sRight operand is %s;", shift,
07356                                                  field_str[IR_FLD_R(idx)]);
07357    
07358       switch (IR_FLD_R(idx)) {
07359          case CN_Tbl_Idx :
07360          case AT_Tbl_Idx :
07361          case SB_Tbl_Idx :
07362                  fprintf(out_file,"  line = %d, col = %d\n",
07363                          IR_LINE_NUM_R(idx), IR_COL_NUM_R(idx));
07364                  break;
07365          case IL_Tbl_Idx  :
07366                  fprintf(out_file,"  list cnt = %d\n", IR_LIST_CNT_R(idx));
07367                  break;
07368          default         :
07369                  fprintf(out_file,"\n");
07370                  break;
07371       }
07372    
07373    
07374       switch (IR_FLD_R(idx)) {
07375          case NO_Tbl_Idx  :
07376                  break;
07377          case CN_Tbl_Idx :
07378                  print_const_entry(out_file, IR_IDX_R(idx), indent + 1);
07379                  break;
07380          case AT_Tbl_Idx   :
07381                  print_attr_name(out_file, IR_IDX_R(idx), indent + 1);
07382                  break;
07383          case SB_Tbl_Idx : 
07384                  fprintf(out_file,"%s\n", SB_NAME_PTR(IR_IDX_R(idx)));
07385                  break;
07386          case IR_Tbl_Idx  :
07387                  dump_ir_ntry(out_file, IR_IDX_R(idx), indent + 1);
07388                  break;
07389          case IL_Tbl_Idx  :
07390                  if (IR_IDX_R(idx) != NULL_IDX && IR_LIST_CNT_R(idx) > 0) {
07391                     print_list(out_file, IR_IDX_R(idx),
07392                             indent + 1, IR_LIST_CNT_R(idx), io_list);
07393                  }
07394                  break;
07395          case SH_Tbl_Idx  :
07396                  fprintf(out_file, "%s%sStmt Header idx = %d\n", shift, 
07397                          n_shift, IR_IDX_R(idx));
07398                  break;
07399       }
07400    }
07401 
07402    return;
07403 
07404 } /* dump_ir_ntry */
07405 
07406 
07407 /******************************************************************************\
07408 |*                                                                            *|
07409 |* Description:                                                               *|
07410 |*      Dumps a single Local Name Table entry to the specified file.          *|
07411 |*                                                                            *|
07412 |* Input parameters:                                                          *|
07413 |*      Pointer to dump file.                                                 *|
07414 |*      Index of Local Name Table entry to print.                             *|
07415 |*      Flag to indicate whether to print the attr entry or not.  If the attr *|
07416 |*         entry is printed, it is a full attr entry dump.                    *|
07417 |*                                                                            *|
07418 |* Output parameters:                                                         *|
07419 |*      NONE                                                                  *|
07420 |*                                                                            *|
07421 |* Returns:                                                                   *|
07422 |*      NOTHING                                                               *|
07423 |*                                                                            *|
07424 \******************************************************************************/
07425 
07426 static void dump_ln_ntry(FILE           *out_file,
07427                          int            idx,
07428                          boolean        print_the_attr)
07429 
07430 {
07431 
07432    if (idx > loc_name_tbl_idx) {
07433       fprintf(out_file, "\n*FE90-ERROR* LN index value [%d] is out of range.\n",
07434               idx);
07435       return;
07436    }
07437 
07438    if (LN_ATTR_IDX(idx) != NULL_IDX) {
07439 
07440       if (LN_NAME_IDX(idx) != NULL_IDX) {
07441          fprintf(out_file, "%-32.32s  ",&name_pool[LN_NAME_IDX(idx)].name_char);
07442       }
07443       else {
07444          fprintf(out_file, "%-32.32s  ", "**No name - LN_NAME_IDX is 0**");
07445       }
07446    }
07447    else {
07448       fprintf(out_file, "%-32.32s  ", "**Error** - LN_ATTR_IDX = 0**");
07449    }
07450 
07451    fprintf(out_file, "%-10s= %-7d %-16s= %-8d\n",
07452            "IDX", idx, 
07453            "LN_ATTR_IDX", LN_ATTR_IDX(idx));
07454    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8d\n",
07455            "LN_DEF_LOC", boolean_str[LN_DEF_LOC(idx)],
07456            "LN_NAME_LEN", LN_NAME_LEN(idx),
07457            "LN_NAME_IDX", LN_NAME_IDX(idx));
07458    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
07459            "LN_IN_ONLY_LIST", boolean_str[LN_IN_ONLY_LIST(idx)],
07460            "LN_NEW_NAME", boolean_str[LN_NEW_NAME(idx)],
07461            "LN_RENAMED", boolean_str[LN_RENAMED(idx)]);
07462 
07463    if (print_the_attr && LN_ATTR_IDX(idx) != NULL_IDX) {
07464       putc ('\n', out_file);
07465       dump_at_ntry(out_file, LN_ATTR_IDX(idx), TRUE);
07466    }
07467 
07468    putc ('\n', out_file);
07469 
07470    return;
07471 
07472 }  /* dump_ln_ntry */
07473 
07474 
07475 /******************************************************************************\
07476 |*                                                                            *|
07477 |* Description:                                                               *|
07478 |*      Dumps a single module link table entry to the specified file.         *|
07479 |*                                                                            *|
07480 |* Input parameters:                                                          *|
07481 |*      Pointer to dump file.                                                 *|
07482 |*      Index of module link table entry to print.                            *|
07483 |*                                                                            *|
07484 |* Output parameters:                                                         *|
07485 |*      NONE                                                                  *|
07486 |*                                                                            *|
07487 |* Returns:                                                                   *|
07488 |*      NOTHING                                                               *|
07489 |*                                                                            *|
07490 \******************************************************************************/
07491 
07492 static void dump_ml_ntry(FILE           *out_file,
07493                          int            idx)
07494 
07495 {
07496    if (idx > mod_link_tbl_idx) {
07497       fprintf(out_file, "\n*FE90-ERROR* ML index value [%d] is out of range.\n",
07498               idx);
07499       return;
07500    }
07501 
07502    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d  %-16s= %-9d\n", " ",
07503            "ML_AT_COMPRESSED_IDX", boolean_str[ML_AT_COMPRESSED_IDX(idx)],
07504            "ML_AT_IDX", ML_AT_IDX(idx),
07505            "IDX",       idx);
07506 
07507    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8s  %-16s= %-9s\n", " ",
07508            "ML_AT_KEEP_ME", boolean_str[ML_AT_KEEP_ME(idx)],
07509            "ML_AT_LN_NAME", boolean_str[ML_AT_LN_NAME(idx)],
07510            "ML_AT_SEARCHED", boolean_str[ML_AT_SEARCHED(idx)]);
07511 
07512    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07513            "ML_BD_KEEP_ME", boolean_str[ML_BD_KEEP_ME(idx)],
07514            "ML_BD_IDX", ML_BD_IDX(idx));
07515 
07516    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d  %-16s= %-9s\n", " ",
07517            "ML_CN_KEEP_ME", boolean_str[ML_CN_KEEP_ME(idx)],
07518            "ML_CN_IDX", ML_CN_IDX(idx),
07519            "ML_CP_DALIGN_ME", boolean_str[ML_CP_DALIGN_ME(idx)]);
07520 
07521    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d  %-16s= %-9d\n", " ",
07522            "ML_CP_KEEP_ME", boolean_str[ML_CP_KEEP_ME(idx)],
07523            "ML_CP_IDX", ML_CP_IDX(idx),
07524            "ML_CP_LEN", ML_CP_LEN(idx));
07525 
07526    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07527            "ML_IL_KEEP_ME", boolean_str[ML_IL_KEEP_ME(idx)],
07528            "ML_IL_IDX", ML_IL_IDX(idx));
07529 
07530    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07531            "ML_IR_KEEP_ME", boolean_str[ML_IR_KEEP_ME(idx)],
07532            "ML_IR_IDX", ML_IR_IDX(idx));
07533 
07534    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07535            "ML_LN_KEEP_ME", boolean_str[ML_LN_KEEP_ME(idx)],
07536            "ML_LN_IDX", ML_LN_IDX(idx));
07537 
07538    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d  %-16s= %-9d\n", " ",
07539            "ML_NP_KEEP_ME", boolean_str[ML_NP_KEEP_ME(idx)],
07540            "ML_NP_IDX", ML_NP_IDX(idx),
07541            "ML_NP_LEN", ML_NP_LEN(idx));
07542 
07543    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07544            "ML_SB_KEEP_ME", boolean_str[ML_SB_KEEP_ME(idx)],
07545            "ML_SB_IDX", ML_SB_IDX(idx));
07546 
07547    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07548            "ML_SH_KEEP_ME", boolean_str[ML_SH_KEEP_ME(idx)],
07549            "ML_SH_IDX", ML_SH_IDX(idx));
07550 
07551    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07552            "ML_SN_KEEP_ME", boolean_str[ML_SN_KEEP_ME(idx)],
07553            "ML_SN_IDX", ML_SN_IDX(idx));
07554 
07555    fprintf(out_file, "%4s%-15s= %-2s  %-15s= %-8d\n", " ",
07556            "ML_TYP_KEEP_ME", boolean_str[ML_TYP_KEEP_ME(idx)],
07557            "ML_TYP_IDX", ML_TYP_IDX(idx));
07558 
07559    putc ('\n', out_file);
07560 
07561    return;
07562 
07563 }  /* dump_ml_ntry */
07564 
07565 /******************************************************************************\
07566 |*                                                                            *|
07567 |* Description:                                                               *|
07568 |*      Prints one Rename Only Table entry to the specified output file.      *|
07569 |*                                                                            *|
07570 |* Input parameters:                                                          *|
07571 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
07572 |*      Index of Rename Only Table entry to print.                            *|
07573 |*                                                                            *|
07574 |* Output parameters:                                                         *|
07575 |*      NONE                                                                  *|
07576 |*                                                                            *|
07577 |* Returns:                                                                   *|
07578 |*      NOTHING                                                               *|
07579 |*                                                                            *|
07580 \******************************************************************************/
07581 
07582 static void dump_ro_ntry(FILE   *out_file,
07583                          int     ro_idx)
07584  
07585 {
07586 
07587    if (ro_idx > rename_only_tbl_idx) {
07588       fprintf(out_file, "\n*FE90-ERROR* ML index value [%d] is out of range.\n",
07589               ro_idx);
07590       return;
07591    }
07592 
07593    fprintf(out_file, "%4s%-32.32s", " ", RO_NAME_PTR(ro_idx));
07594 
07595    if (full_debug_dump) {
07596       fprintf(out_file, "  %-4s= %-7d  %-16s= %-9d\n",
07597               "IDX", ro_idx,
07598               "RO_NEXT_IDX", RO_NEXT_IDX(ro_idx));
07599    }
07600    else {
07601       fprintf(out_file, "\n");
07602    }
07603   
07604    fprintf(out_file, "%4s%-16s= %-2d\n"," ",
07605              "RO_NAME_ATTR",RO_NAME_ATTR(ro_idx));  
07606 
07607 
07608    fprintf(out_file, "%4s%-16s= %-2d  %-16s= %-7d  %-16s= %-9d\n", " ",
07609            "RO_COLUMN_NUM", RO_COLUMN_NUM(ro_idx),
07610            "RO_LINE_NUM", RO_LINE_NUM(ro_idx),
07611            "RO_NAME_LEN", RO_NAME_LEN(ro_idx));
07612 
07613    if (RO_RENAME_IDX(ro_idx) != NULL_IDX) {
07614       ro_idx = RO_RENAME_IDX(ro_idx);
07615 
07616       fprintf(out_file, "%4s%-16s  %-2s  %-16s= %-s\n", " ",
07617               "RENAMED", " ",
07618               "RO_NAME_PTR", RO_NAME_PTR(ro_idx));
07619 
07620       fprintf(out_file, "%4s%-16s= %-2d  %-16s= %-7d  %-16s= %-9d\n", " ",
07621               "RO_COLUMN_NUM", RO_COLUMN_NUM(ro_idx),
07622               "RO_LINE_NUM", RO_LINE_NUM(ro_idx),
07623               "RO_NAME_LEN", RO_NAME_LEN(ro_idx));
07624 
07625 
07626       fprintf(out_file, "%4s%-16s= %-2s  %-16s= %-7s\n", " ",
07627               "RO_RENAME_NAME", boolean_str[RO_RENAME_NAME(ro_idx)],
07628               "RO_DUPLICATE_REN", boolean_str[RO_DUPLICATE_RENAME(ro_idx)]);
07629    }
07630 
07631    fflush (out_file);
07632    return;
07633 
07634 }  /* dump_ro_ntry */
07635 
07636 /******************************************************************************\
07637 |*                                                                            *|
07638 |* Description:                                                               *|
07639 |*      Prints one Storage Block Table entry to the specified output file.    *|
07640 |*                                                                            *|
07641 |* Input parameters:                                                          *|
07642 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
07643 |*      Index of Storage Block Table entry to print.                          *|
07644 |*                                                                            *|
07645 |* Output parameters:                                                         *|
07646 |*      NONE                                                                  *|
07647 |*                                                                            *|
07648 |* Returns:                                                                   *|
07649 |*      NOTHING                                                               *|
07650 |*                                                                            *|
07651 \******************************************************************************/
07652 
07653 static void dump_sb_ntry(FILE   *out_file,
07654                          int     sb_idx)
07655  
07656 {
07657 
07658 
07659    if (sb_idx > stor_blk_tbl_idx) {
07660       fprintf(out_file, "\n*FE90-ERROR* SB index value [%d] is out of range.\n",
07661               sb_idx);
07662       return;
07663    }
07664 
07665    if (SB_NAME_IDX(sb_idx) != NULL_IDX) {
07666       fprintf(out_file, "  %s\n", SB_NAME_PTR(sb_idx));
07667    }
07668 
07669    fprintf(out_file, "  %-16s= %-33s %-16s= %-8d\n",
07670            "SB_BLK_TYPE", sb_blk_type_str[SB_BLK_TYPE(sb_idx)],
07671            "IDX", sb_idx);
07672 
07673    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-7s\n",
07674            "SB_ALIGN_SYMBOL", boolean_str[SB_ALIGN_SYMBOL(sb_idx)],
07675            "SB_AUXILIARY", boolean_str[SB_AUXILIARY(sb_idx)],
07676            "SB_BLANK_COMMON", boolean_str[SB_BLANK_COMMON(sb_idx)]);
07677 
07678    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
07679            "SB_CACHE_ALIGN", boolean_str[SB_COMMON_NEEDS_OFFSET(sb_idx)],
07680            "SB_CIF_SYMBOL_ID", SB_CIF_SYMBOL_ID(sb_idx),
07681            "SB_COMMON_NEEDS_", boolean_str[SB_COMMON_NEEDS_OFFSET(sb_idx)]);
07682 
07683    fprintf(out_file, "  %-16s  %-7s %-16s= %-7s %-16s= %-8s\n",
07684            " ", " ",
07685            "SB_DCL_COMMON_DI", boolean_str[SB_DCL_COMMON_DIR(sb_idx)],
07686            "SB_DCL_ERR", boolean_str[SB_DCL_ERR(sb_idx)]);
07687 
07688    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8s\n",
07689            "SB_DEF_COLUMN", SB_DEF_COLUMN(sb_idx),
07690            "SB_DEF_LINE", SB_DEF_LINE(sb_idx),
07691            "SB_DEF_MULT_SCPS", boolean_str[SB_DEF_MULT_SCPS(sb_idx)]);
07692 
07693    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8d\n",
07694            "SB_DUPLICATE_COM", boolean_str[SB_DUPLICATE_COMMON(sb_idx)],
07695            "SB_EQUIVALENCED", boolean_str[SB_EQUIVALENCED(sb_idx)],
07696            "SB_FIRST_ATTR_ID", SB_FIRST_ATTR_IDX(sb_idx));
07697 
07698    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
07699            "SB_HAS_RENAMES", boolean_str[SB_HAS_RENAMES(sb_idx)],
07700            "SB_HIDDEN", boolean_str[SB_HIDDEN(sb_idx)],
07701            "SB_HOST_ASSOCIAT", boolean_str[SB_HOST_ASSOCIATED(sb_idx)]);
07702 
07703    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
07704            "SB_HOSTED_STACK", boolean_str[SB_HOSTED_STACK(sb_idx)],
07705            "SB_HOSTED_STATIC", boolean_str[SB_HOSTED_STATIC(sb_idx)],
07706            "SB_IS_COMMON", boolean_str[SB_IS_COMMON(sb_idx)]);
07707 
07708    print_fld_idx(out_file, "SB_LEN_IDX",
07709                  SB_LEN_FLD(sb_idx), SB_LEN_IDX(sb_idx));
07710 
07711    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8s\n",
07712            "SB_LAST_ATTR_LIS", SB_LAST_ATTR_LIST(sb_idx),
07713            "SB_MERGED_BLK_ID", SB_MERGED_BLK_IDX(sb_idx),
07714            "SB_MODULE", boolean_str[SB_MODULE(sb_idx)]);
07715 
07716    if (SB_MODULE(sb_idx)) {
07717 
07718       if (SB_MODULE_IDX(sb_idx) == NULL_IDX) {
07719          fprintf(out_file, "  %-16s= %-7d\n",
07720                  "SB_MODULE_IDX", SB_MODULE_IDX(sb_idx));
07721       }
07722       else {
07723          fprintf(out_file, "  %-16s= %-7d %-33s\n",
07724                  "SB_MODULE_IDX", SB_MODULE_IDX(sb_idx),
07725                  print_at_name(SB_MODULE_IDX(sb_idx)));
07726       }
07727    }
07728 
07729    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8d\n",
07730            "SB_NAME_LEN", SB_NAME_LEN(sb_idx),
07731            "SB_ORIG_SCP_IDX", SB_ORIG_SCP_IDX(sb_idx),
07732            "SB_PAD_AMOUNT", SB_PAD_AMOUNT(sb_idx));
07733 
07734    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
07735            "SB_PAD_AMOUNT_SE", boolean_str[SB_PAD_AMOUNT_SET(sb_idx)],
07736            "SB_PAD_BLK", boolean_str[SB_PAD_BLK(sb_idx)],
07737            "SB_RUNTIME_INIT", boolean_str[SB_RUNTIME_INIT(sb_idx)]);
07738 
07739    fprintf(out_file, "  %-16s= %-7s %-16s= %-7d %-16s= %-8s\n",
07740            "SB_SAVED", boolean_str[SB_SAVED(sb_idx)],
07741            "SB_SCP_IDX", SB_SCP_IDX(sb_idx),
07742            "SB_SECTION_GP", boolean_str[SB_SECTION_GP(sb_idx)]);
07743 
07744    fprintf(out_file, "  %-16s= %-7s %-16s= %-7s %-16s= %-8s\n",
07745            "SB_SECTION_NON_", boolean_str[SB_SECTION_NON_GP(sb_idx)],
07746            "SB_SYMMETRIC", boolean_str[SB_SYMMETRIC(sb_idx)],
07747            "SB_USE_ASSOCIATE", boolean_str[SB_USE_ASSOCIATED(sb_idx)]);
07748 
07749    fprintf(out_file, "  %-16s= %-7s\n",
07750            "SB_VOLATILE", boolean_str[SB_VOLATILE(sb_idx)]);
07751 
07752    putc ('\n', out_file);
07753 
07754    fflush (out_file);
07755    return;
07756 
07757 }  /* dump_sb_ntry */
07758 
07759 
07760 /******************************************************************************\
07761 |*                                                                            *|
07762 |* Description:                                                               *|
07763 |*      Prints one scope stack entry to the specified output file.            *|
07764 |*                                                                            *|
07765 |* Input parameters:                                                          *|
07766 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
07767 |*      Index of scope stack entry to print.                                  *|
07768 |*                                                                            *|
07769 |* Output parameters:                                                         *|
07770 |*      NONE                                                                  *|
07771 |*                                                                            *|
07772 |* Returns:                                                                   *|
07773 |*      NOTHING                                                               *|
07774 |*                                                                            *|
07775 \******************************************************************************/
07776 
07777 static void dump_scp_ntry (FILE         *out_file,
07778                            int          scp_idx,
07779                            int          shift_cnt,
07780                            boolean      print_impl_tbl,
07781                            boolean      print_all_children)
07782 
07783 {
07784    char         ch;
07785    int          idx;
07786    int          save_scp_idx;
07787    char         shift[80];
07788 
07789 
07790 PROCESS_SIBLING:
07791 
07792    if (scp_idx > scp_tbl_idx) {
07793       fprintf(out_file,"\n*FE90-ERROR* SCP index value [%d] is out of range.\n",
07794               scp_idx);
07795       return;
07796    }
07797 
07798    if (shift_cnt > 45) {
07799       fprintf(out_file, "\nFE90 - NESTING is too DEEP\n");
07800       shift_cnt = 45;
07801    }
07802 
07803    for (idx = 0; idx < shift_cnt; idx++) {
07804       shift[idx] = ' ';
07805    }
07806    shift[shift_cnt] = '\0';
07807 
07808    if (SCP_ATTR_IDX(scp_idx) != NULL_IDX) {
07809       fprintf(out_file, "%s%-32.32s", shift,
07810               AT_OBJ_NAME_PTR(SCP_ATTR_IDX(scp_idx)));
07811    }
07812    else if (scp_idx == INTRINSIC_SCP_IDX) {
07813       fprintf(out_file, "%s%-32.32s", shift, "*** INTRINSIC SCOPE ***");
07814    }
07815    else {
07816       fprintf(out_file, "%s%-32.32s", shift, "*** scope has no name ***");
07817    }
07818 
07819    if (SCP_IN_ERR(scp_idx)) {
07820       fprintf(out_file, "%5s%s", " ", "*** SCOPE IN ERROR ***");
07821    }
07822 
07823    fprintf(out_file,"\n%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07824            "IDX", scp_idx,
07825            "SCP_ALT_ENTRY_CNT", SCP_ALT_ENTRY_CNT(scp_idx));
07826 
07827    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07828            "SCP_ASSIGN_LBL_CHAIN", SCP_ASSIGN_LBL_CHAIN(scp_idx),
07829            "SCP_ATTR_IDX", SCP_ATTR_IDX(scp_idx));
07830 
07831    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07832            "SCP_ATTR_LIST", SCP_ATTR_LIST(scp_idx),
07833            "SCP_ATTR_LIST_EN", SCP_ATTR_LIST_END(scp_idx));
07834 
07835    fprintf(out_file,"%18s%-20s= %-7d\n", " ",
07836            "SCP_CIF_ERR_LIST", SCP_CIF_ERR_LIST(scp_idx));
07837 
07838    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9s\n", " ",
07839            "SCP_CIF_ID", SCP_CIF_ID(scp_idx),
07840            "SCP_COPY_ASSUMED_SHA",boolean_str[SCP_COPY_ASSUMED_SHAPE(scp_idx)]);
07841 
07842    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07843            "SCP_COPY_ASSUMED_LIS", SCP_COPY_ASSUMED_LIST(scp_idx),
07844            "SCP_DARG_LIST", SCP_DARG_LIST(scp_idx));
07845 
07846 # if 0
07847    fprintf(out_file,"%18s%-20s= %-7s  %-20s= %-9s\n", " ",
07848            "SCP_DBG_PRINT_STMT", boolean_str[SCP_DBG_PRINT_STMT(scp_idx)],
07849            "SCP_DBG_PRINT_SYTB", boolean_str[SCP_DBG_PRINT_SYTB(scp_idx)]);
07850 # endif
07851 
07852    fprintf(out_file,"%18s%-20s= %-27s\n", " ",
07853            "SCP_DEFAULT_STORAGE", 
07854            sb_blk_type_str[SCP_DBG_PRINT_SYTB(scp_idx)]);
07855 
07856    fprintf(out_file,"%18s%-20s= %-7s  %-20s= %-9d\n", " ",
07857            "SCP_DOES_IO", boolean_str[SCP_DOES_IO(scp_idx)],
07858            "SCP_ENTRY_IDX", SCP_ENTRY_IDX(scp_idx));
07859 
07860    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07861            "SCP_EXIT_IR_SH_IDX", SCP_EXIT_IR_SH_IDX(scp_idx),
07862            "SCP_FILE_PATH_IDX", SCP_FILE_PATH_IDX(scp_idx));
07863 
07864    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07865            "SCP_FIRST_CHILD_IDX", SCP_FIRST_CHILD_IDX(scp_idx),
07866            "SCP_FIRST_EQUIV_GRP", SCP_FIRST_EQUIV_GRP(scp_idx));
07867 
07868    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9s\n", " ",
07869            "SCP_FIRST_SH_IDX", SCP_FIRST_SH_IDX(scp_idx),
07870            "SCP_HAS_CALLS", boolean_str[SCP_HAS_CALLS(scp_idx)]);
07871 
07872    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07873            "SCP_HN_FW_IDX", SCP_HN_FW_IDX(scp_idx),
07874            "SCP_HN_LW_IDX", SCP_HN_LW_IDX(scp_idx));
07875 
07876    fprintf(out_file,"%18s%-20s= %-7s  %-20s= %-9s\n", " ",
07877            "SCP_IGNORE_TKR", boolean_str[SCP_IGNORE_TKR(scp_idx)],
07878            "SCP_IMPL_NONE", boolean_str[SCP_IMPL_NONE(scp_idx)]);
07879 
07880    fprintf(out_file,"%18s%-20s= %-7s  %-20s= %-9s\n", " ",
07881            "SCP_IN_ERR", boolean_str[SCP_IN_ERR(scp_idx)],
07882            "SCP_IS_INTERFACE", boolean_str[SCP_IS_INTERFACE(scp_idx)]);
07883 
07884    fprintf(out_file,"%18s%-20s= %-7s  %-20s= %-9d\n", " ",
07885            "SCP_IS_USED_PROC", boolean_str[SCP_IS_USED_PROC(scp_idx)],
07886            "SCP_LAST_CHILD_IDX", SCP_LAST_CHILD_IDX(scp_idx));
07887 
07888    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07889            "SCP_LAST_SH_IDX", SCP_LAST_SH_IDX(scp_idx),
07890            "SCP_LEVEL", SCP_LEVEL(scp_idx));
07891 
07892    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07893            "SCP_LN_FW_IDX", SCP_LN_FW_IDX(scp_idx),
07894            "SCP_LN_LW_IDX", SCP_LN_LW_IDX(scp_idx));
07895 
07896    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07897            "SCP_NUM_CHILDREN", SCP_NUM_CHILDREN(scp_idx),
07898            "SCP_OPTIONAL_CHAR_TM", SCP_OPTIONAL_CHAR_TMP(scp_idx));
07899 
07900    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9s\n", " ",
07901            "SCP_PARENT_IDX", SCP_PARENT_IDX(scp_idx),
07902            "SCP_PARENT_NONE", boolean_str[SCP_PARENT_NONE(scp_idx)]);
07903 
07904    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07905            "SCP_RETURN_LABEL", SCP_RETURN_LABEL(scp_idx),
07906            "SCP_SB_BASED_IDX", SCP_SB_BASED_IDX(scp_idx));
07907 
07908 
07909    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07910            "SCP_SB_HOSTED_DATA", SCP_SB_HOSTED_DATA_IDX(scp_idx),
07911            "SCP_SB_HOSTED_STAC", SCP_SB_HOSTED_STACK_IDX(scp_idx));
07912 
07913    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07914            "SCP_SB_HOSTED_STAT", SCP_SB_HOSTED_STATIC_IDX(scp_idx),
07915            "SCP_SB_STACK_IDX", SCP_SB_STACK_IDX(scp_idx));
07916 
07917    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07918            "SCP_SB_STATIC_IDX", SCP_SB_STATIC_IDX(scp_idx),
07919            "SCP_SB_STATIC_INIT", SCP_SB_STATIC_INIT_IDX(scp_idx));
07920 
07921    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07922            "SCP_SB_STATIC_UNINIT", SCP_SB_STATIC_UNINIT_IDX(scp_idx),
07923            "SCP_SB_SYMMETRIC", SCP_SB_SYMMETRIC_IDX(scp_idx));
07924 
07925    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07926            "SCP_SIBLING_IDX", SCP_SIBLING_IDX(scp_idx),
07927            "SCP_RESHAPE_ARRA", SCP_RESHAPE_ARRAY_LIST(scp_idx));
07928 
07929    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07930            "SCP_TMP_FW_IDX", SCP_TMP_FW_IDX(scp_idx),
07931            "SCP_TMP_FW_IDX2", SCP_TMP_FW_IDX2(scp_idx));
07932 
07933    fprintf(out_file,"%18s%-20s= %-7d  %-20s= %-9d\n", " ",
07934            "SCP_TMP_LIST", SCP_TMP_LIST(scp_idx),
07935            "SCP_USED_MODULE_LIST", SCP_USED_MODULE_LIST(scp_idx));
07936 
07937 
07938    if (print_impl_tbl) {
07939       for (idx = 0; idx < MAX_IMPL_CHS; idx++) {
07940          ch = 'A' + idx;
07941          fprintf(out_file,"%18s%c %24s %-16s= %-9s\n", " ",
07942                     ch, " ", "IM_SET", boolean_str[IM_SET(scp_idx, idx)]);
07943          dump_typ_ntry(out_file, IM_TYPE_IDX(scp_idx,idx));
07944          fprintf(out_file,"%44s %-16s= %-9s\n", " ",
07945                  "IM_STORAGE", implicit_storage_str[IM_STORAGE(scp_idx, idx)]);
07946       }
07947    }
07948    putc ('\n', out_file);
07949 
07950    if (print_all_children) {
07951 
07952       if (SCP_FIRST_CHILD_IDX(scp_idx) != NULL_IDX) {
07953          save_scp_idx   = scp_idx;
07954          scp_idx        = SCP_FIRST_CHILD_IDX(scp_idx);
07955          shift_cnt      = shift_cnt + 5;
07956          dump_scp_ntry(out_file, 
07957                        scp_idx,
07958                        shift_cnt,
07959                        print_impl_tbl,
07960                        TRUE);
07961          scp_idx = save_scp_idx;
07962       }
07963 
07964       if (SCP_SIBLING_IDX(scp_idx) != NULL_IDX) {
07965          scp_idx = SCP_SIBLING_IDX(scp_idx);
07966          goto PROCESS_SIBLING;
07967       }
07968    }
07969 
07970    fflush (out_file);
07971    return;
07972 
07973 }  /* dump_scp_ntry */
07974 
07975 
07976 /******************************************************************************\
07977 |*                                                                            *|
07978 |* Description:                                                               *|
07979 |*      Prints a single Secondary Name table entry.                           *|
07980 |*                                                                            *|
07981 |* Input parameters:                                                          *|
07982 |*      Index of Secondary Name table entry to print.                         *|
07983 |*                                                                            *|
07984 |* Output parameters:                                                         *|
07985 |*      NONE                                                                  *|
07986 |*                                                                            *|
07987 |* Returns:                                                                   *|
07988 |*      NOTHING                                                               *|
07989 |*                                                                            *|
07990 \******************************************************************************/
07991 
07992 static void dump_sn_ntry (FILE  *out_file,
07993                           int    sn_idx)
07994 
07995 {
07996    if (sn_idx > sec_name_tbl_idx) {
07997       fprintf(out_file, "\n*FE90-ERROR* SN index value [%d] is out of range.\n",
07998               sn_idx);
07999       return;
08000    }
08001 
08002    fprintf(out_file, "  %-51s", &name_pool[SN_NAME_IDX(sn_idx)].name_char); 
08003 
08004    fprintf(out_file, " %-16s= %-8d\n", "            IDX", sn_idx);
08005 
08006    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8d\n",
08007            "SN_COLUMN_NUM", SN_COLUMN_NUM(sn_idx),
08008            "SN_LINE_NUM",   SN_LINE_NUM(sn_idx),
08009            "SN_NAME_LEN",   SN_NAME_LEN(sn_idx));
08010 
08011   /* Only generic interface, operator interface, and namelist group   */
08012   /* Secondary Name table entries are linked together via the         */
08013   /* SN_SIBLING_LINK field.                                           */
08014 
08015 
08016    if (comp_phase == Decl_Semantics) {
08017       fprintf(out_file, "  %-16s= %-7s\n",
08018         "SN_MATCHED_DARG", boolean_str[SN_MATCHED_DARG(sn_idx)]);
08019    }
08020 
08021    fprintf(out_file, "  %-16s= %-7d %-16s= %-7d %-16s= %-8d\n",
08022         "SN_NAME_IDX",     SN_NAME_IDX(sn_idx),
08023         "SN_ATTR_IDX",     SN_ATTR_IDX(sn_idx),
08024         "SN_SIBLING_LINK", SN_SIBLING_LINK(sn_idx));
08025 
08026    fflush(out_file);
08027 
08028    return;
08029 
08030 }  /* dump_sn_ntry */
08031 
08032 
08033 /******************************************************************************\
08034 |*                                                                            *|
08035 |* Description:                                                               *|
08036 |*                                                                            *|
08037 |* Input parameters:                                                          *|
08038 |*      NONE                                                                  *|
08039 |*                                                                            *|
08040 |* Output parameters:                                                         *|
08041 |*      NONE                                                                  *|
08042 |*                                                                            *|
08043 |* Returns:                                                                   *|
08044 |*      NOTHING                                                               *|
08045 |*                                                                            *|
08046 \******************************************************************************/
08047 
08048 static void dump_stmt_ntry(FILE         *out_file,
08049                            boolean       print_stmt_ir)
08050 {
08051   
08052    dump_trace_info(out_file, Stmt_Start, NULL, "SH_dump");
08053 
08054    fprintf(out_file, "IDX = %-7d   %s = %-7d     %s = %d   %s = %d\n",
08055                      curr_stmt_sh_idx,
08056                      "PREV SH IDX", SH_PREV_IDX(curr_stmt_sh_idx),
08057                      "NEXT SH IDX", SH_NEXT_IDX(curr_stmt_sh_idx),
08058                      "COL NUM",     SH_COL_NUM(curr_stmt_sh_idx));
08059 
08060    if (SH_LABELED(curr_stmt_sh_idx)  && 
08061        ! (SH_COMPILER_GEN(curr_stmt_sh_idx)  &&
08062           SH_STMT_TYPE(curr_stmt_sh_idx) == Continue_Stmt)) {
08063       fprintf(out_file, "   *Stmt is labeled*\n");
08064    }
08065 
08066    fprintf(out_file, "%16s%s = %-7d  %-11s = %s  %15s = %s\n", " ",
08067                      "PARENT BLK IDX", SH_PARENT_BLK_IDX(curr_stmt_sh_idx),
08068                      "LOOP END", boolean_str[SH_LOOP_END(curr_stmt_sh_idx)],
08069                      "DOALL LOOP END", 
08070                      boolean_str[SH_DOALL_LOOP_END(curr_stmt_sh_idx)]);
08071 
08072    if (print_stmt_ir  &&  SH_IR_IDX(curr_stmt_sh_idx) != NULL_IDX) {
08073       dump_ir_ntry(out_file, SH_IR_IDX(curr_stmt_sh_idx), 1);
08074    }
08075 
08076    return;
08077 
08078 } /* dump_stmt_ntry */
08079 
08080 
08081 /******************************************************************************\
08082 |*                                                                            *|
08083 |* Description:                                                               *|
08084 |*                                                                            *|
08085 |* Input parameters:                                                          *|
08086 |*      FILE to print to - Should be debug_file, stderr, or stdout.           *|
08087 |*      Index of module file table entry to print.                            *|
08088 |*                                                                            *|
08089 |* Output parameters:                                                         *|
08090 |*      NONE                                                                  *|
08091 |*                                                                            *|
08092 |* Returns:                                                                   *|
08093 |*      NOTHING                                                               *|
08094 |*                                                                            *|
08095 \******************************************************************************/
08096 
08097 static void dump_typ_ntry(FILE  *out_file,
08098                           int    type_idx)
08099  
08100 {
08101    char         conv_str[80];
08102 
08103 
08104    if (type_idx > type_tbl_idx) {
08105       fprintf(out_file,"\n*FE90-ERROR* TYP index value [%d] is out of range.\n",
08106               type_idx);
08107       return;
08108    }
08109 
08110    fprintf(out_file,"  %-25s %-25s %-26s\n",
08111            basic_type_str[TYP_TYPE(type_idx)],
08112            lin_type_str[TYP_LINEAR(type_idx)],
08113            type_desc_str[TYP_DESC(type_idx)]);
08114 
08115    fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
08116            "TYP_DCL_VALUE", TYP_DCL_VALUE(type_idx),
08117            "TYP_DP_HIT_ME", boolean_str[TYP_DP_HIT_ME(type_idx)],
08118            "IDX", type_idx);
08119 
08120    if (TYP_TYPE(type_idx) == Character) {
08121 
08122       fprintf(out_file,"  %-25s %-16s= %-8s\n",
08123               type_char_class_str[TYP_CHAR_CLASS(type_idx)],
08124               "TYP_RESOLVED", boolean_str[TYP_RESOLVED(type_idx)]);
08125 
08126       print_fld_idx(out_file, "TYP_IDX",
08127                     TYP_FLD(type_idx),
08128                     TYP_IDX(type_idx));
08129 
08130       if (TYP_ORIG_LEN_IDX(type_idx) != NULL_IDX) {
08131          print_fld_idx(out_file, "TYP_ORIG_LEN_IDX",
08132                        TYP_FLD(type_idx),
08133                        TYP_ORIG_LEN_IDX(type_idx));
08134       }
08135    }
08136    else if (TYP_TYPE(type_idx) == CRI_Ptr) {
08137       fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-8d\n",
08138            "TYP_IDX", TYP_IDX(type_idx),
08139            "TYP_RESOLVED", boolean_str[TYP_RESOLVED(type_idx)],
08140            "TYP_PTR_INCREMEN", (int) TYP_PTR_INCREMENT(type_idx));
08141    }
08142    else {
08143       fprintf(out_file, "  %-16s= %-7d %-16s= %-7s %-16s= %-7s\n",
08144               "TYP_IDX", TYP_IDX(type_idx),
08145               "TYP_KIND_CONST", boolean_str[TYP_KIND_CONST(type_idx)],
08146               "TYP_KIND_DOUBLE", boolean_str[TYP_KIND_DOUBLE(type_idx)]);
08147 
08148       fprintf(out_file, "  %-16s= %-7s %-16s= %-s\n",
08149               "TYP_RESOLVED", boolean_str[TYP_RESOLVED(type_idx)],
08150               "TYP_BIT_LEN", CONVERT_CVAL_TO_STR(&TYP_BIT_LEN(type_idx),
08151                                                   Integer_8,
08152                                                   conv_str));
08153    }
08154 
08155    putc ('\n', out_file);
08156 
08157    fflush (out_file);
08158    return;
08159 
08160 }  /* dump_typ_ntry */
08161 
08162 /******************************************************************************\
08163 |*                                                                            *|
08164 |* Description:                                                               *|
08165 |*      <description>                                                         *|
08166 |*                                                                            *|
08167 |* Input parameters:                                                          *|
08168 |*      NONE                                                                  *|
08169 |*                                                                            *|
08170 |* Output parameters:                                                         *|
08171 |*      NONE                                                                  *|
08172 |*                                                                            *|
08173 |* Returns:                                                                   *|
08174 |*      NOTHING                                                               *|
08175 |*                                                                            *|
08176 \******************************************************************************/
08177 
08178 static void dump_io_type_code_ntry(FILE         *out_file,
08179                                    long_type    *value,
08180                                    int          indent)
08181 
08182 {
08183    long_type    dec_len = 0;
08184    int          dp_flag = 0;
08185    int          dv_type;
08186    long_type    int_len = 0;
08187    int          kind_star = 0;
08188    char         shift[80];
08189    int          i;
08190 
08191    f90_type_t   *type_code;
08192 
08193    TRACE (Func_Entry, "dump_io_type_code_ntry", NULL);
08194 
08195    for (i = 0; i < INDENT_SIZE * indent; i++) {
08196       shift[i] = ' ';
08197       if (i == 79)
08198          break;
08199    }
08200    shift[i] = '\0';
08201 
08202 # ifdef _TYPE_CODE_64_BIT
08203 
08204    type_code = (f90_type_t *)value;
08205 
08206 
08207    dv_type = type_code->type;
08208 
08209    dp_flag = type_code->dpflag;
08210 
08211    kind_star = type_code->kind_or_star;
08212 
08213    int_len = type_code->int_len;
08214 
08215    dec_len = type_code->int_len;
08216 # else
08217 
08218    dv_type = ((*value) >> DV_TYPE_SHIFT) & 0xFF;
08219 
08220    dp_flag = ((*value) >> DV_DP_SHIFT) & 1;
08221 
08222    kind_star = ((*value) >> DV_KIND_STAR_SHIFT) & 07;
08223 
08224    int_len = ((*value) >> DV_INT_LEN_SHIFT) & 0xFFF;
08225 
08226    dec_len = ((*value) >> DV_DEC_LEN_SHIFT) & 0xFF;
08227 # endif
08228 
08229    switch (dv_type) {
08230    case DV_TYPELESS:
08231       fprintf(out_file, "%sDV_TYPELESS  ", shift);
08232       break;
08233    case DV_INTEGER:
08234       fprintf(out_file, "%sDV_INTEGER  ", shift);
08235       break;
08236    case DV_REAL:
08237       fprintf(out_file, "%sDV_REAL  ", shift);
08238       break;
08239    case DV_COMPLEX:
08240       fprintf(out_file, "%sDV_COMPLEX  ", shift);
08241       break;
08242    case DV_LOGICAL:
08243       fprintf(out_file, "%sDV_LOGICAL  ", shift);
08244       break;
08245    case DV_ASCII_CHAR:
08246       fprintf(out_file, "%sDV_ASCII_CHAR  ", shift);
08247       break;
08248    case DV_ASCII_CHAR_SEQUENCE_STRUCT:
08249       fprintf(out_file, "%sDV_ASCII_CHAR_SEQUENCE_STRUCT  ", shift);
08250       break;
08251    case DV_STRUCT:
08252       fprintf(out_file, "%sDV_STRUCT  ", shift);
08253       break;
08254    case DV_BIT:
08255       fprintf(out_file, "%sDV_BIT  ", shift);
08256       break;
08257    case DV_2_BYTE_CHAR:
08258       fprintf(out_file, "%sDV_2_BYTE_CHAR  ", shift);
08259       break;
08260    case DV_2_BYTE_CHAR_SEQUENCE_STRUCT:
08261       fprintf(out_file, "%sDV_2_BYTE_CHAR_SEQUENCE_STRUCT  ", shift);
08262       break;
08263    case DV_4_BYTE_CHAR:
08264       fprintf(out_file, "%sDV_4_BYTE_CHAR  ", shift);
08265       break;
08266    case DV_4_BYTE_CHAR_SEQUENCE_STRUCT:
08267       fprintf(out_file, "%sDV_4_BYTE_CHAR_SEQUENCE_STRUCT  ", shift);
08268       break;
08269    default:
08270       fprintf(out_file, "\n*FE90-ERROR* bad dv_type from io_type code\n");
08271       break;
08272    }
08273 
08274    if (dp_flag) {
08275       fprintf(out_file, "DP = 1 ");
08276    }
08277    else {
08278       fprintf(out_file, "DP = 0 ");
08279    }
08280 
08281    switch (kind_star) {
08282    case DV_DEFAULT_TYPED :
08283       fprintf(out_file, "DEFAULT TYPED ");
08284       break;
08285 
08286    case DV_KIND_TYPED :
08287       fprintf(out_file, "KIND_TYPED ");
08288       break;
08289 
08290    case DV_STAR_TYPED :
08291       fprintf(out_file, "STAR_TYPED ");
08292       break;
08293 
08294    case DV_KIND_CONST :
08295       fprintf(out_file, "KIND_CONST ");
08296       break;
08297 
08298    case DV_KIND_DOUBLE :
08299       fprintf(out_file, "KIND_DOUBLE ");
08300       break;
08301 
08302 
08303    default :
08304       fprintf(out_file, "***INVALID*** ");
08305       break;
08306 
08307    }
08308 
08309 #if defined(_HOST32) && defined(_TARGET64)
08310    fprintf(out_file,"INT_LEN = %" LONG_TYPE_FMT " ", int_len);
08311    fprintf(out_file,"DEC_LEN = %" LONG_TYPE_FMT " ", dec_len);
08312 #else
08313    fprintf(out_file,"INT_LEN = %ld ", int_len);
08314    fprintf(out_file,"DEC_LEN = %ld ", dec_len);
08315 #endif
08316 
08317 
08318    fprintf(out_file, "\n");
08319 
08320    TRACE (Func_Exit, "dump_io_type_code_ntry", NULL);
08321 
08322    return;
08323 
08324 }  /* dump_io_type_code_ntry */
08325 
08326 # endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines