Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
00001 /* 00002 00003 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 00004 00005 This program is free software; you can redistribute it and/or modify it 00006 under the terms of version 2 of the GNU General Public License as 00007 published by the Free Software Foundation. 00008 00009 This program is distributed in the hope that it would be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 00013 Further, this software is distributed without any warranty that it is 00014 free of the rightful claim of any third person regarding infringement 00015 or the like. Any license provided herein, whether implied or 00016 otherwise, applies only to this software file. Patent licenses, if 00017 any, provided herein do not apply to combinations of this program with 00018 other software, or any other product whatsoever. 00019 00020 You should have received a copy of the GNU General Public License along 00021 with this program; if not, write the Free Software Foundation, Inc., 59 00022 Temple Place - Suite 330, Boston MA 02111-1307, USA. 00023 00024 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 00025 Mountain View, CA 94043, or: 00026 00027 http://www.sgi.com 00028 00029 For further information regarding this notice, see: 00030 00031 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00032 00033 */ 00034 00035 00036 /* ==================================================================== 00037 * ==================================================================== 00038 * 00039 * 00040 * Revision history: 00041 * 25-Mar-97 - Original Version 00042 * 00043 * Description: 00044 * 00045 * Define the external interface to the internal flags representing the 00046 * -FLIST group options. It is a single struct, so that addition of 00047 * flags for new options does not require additions to the be Exported 00048 * file. Since these options do not change on a per region basis, 00049 * there is no need for push/pop operations like other groups (such 00050 * as -LNO) support. 00051 * 00052 * NOTE: Only the standard group option reader, and routines in the 00053 * associated file config_flist.c, should modify the structs declared 00054 * here. By following this discipline, leaving a few undefined flags 00055 * at the end of the struct, and adding new flags there, we can avoid 00056 * serious version incompatibilities between be.so and its clients. 00057 * 00058 * ==================================================================== 00059 * 00060 * To add a new option: 00061 * 00062 * (On conversion from the old FLIST implementation, I tried to use 00063 * naming which was mostly like what had been used before, but 00064 * consistent. The instructions below reflect the results.) 00065 * 00066 * 1) In the FLIST_FLAGS options struct defined below, add a field to 00067 * receive the new option value. If you need a flag indicating 00068 * whether the option was set explicitly on the command line, add 00069 * a BOOL for that as well, with an appended "_set" in its name. 00070 * (You might also need another field if the option will be used 00071 * in a different form after configuration, i.e. the option value 00072 * is a string that is converted to a number. If so, add another 00073 * field.) 00074 * 00075 * The fields are starting out in alphabetical order by option 00076 * name. When adding new ones, keep in mind that adding them in 00077 * the middle will create a required correspondence between the 00078 * new be.so and lno.so (for purposes of using the later options). 00079 * That may be alright, but if you want to avoid it, add the new 00080 * fields just before the buffer at the end (and you can move 00081 * them into place later when it doesn't matter, if you care). 00082 * 00083 * 2) Below the FLIST_FLAGS definition are #defines for the 00084 * "FLIST_Option_Name" pseudo-variables that everyone will use to 00085 * reference them. Add #defines for your new ones. Note that 00086 * they all have FLIST_ prefixes. 00087 * 00088 * 3) There is only one instances of FLIST_FLAGS in config_flist.c. 00089 * We do not support pushing/popping of flag values based on 00090 * region boundaries (will we ever want to?). 00091 * 00092 * 4) The option group descriptor is also in config_flist.c. Add your 00093 * new option there. 00094 * 00095 * ==================================================================== 00096 * ==================================================================== 00097 */ 00098 00099 #ifndef config_flist_INCLUDED 00100 #define config_flist_INCLUDED 00101 00102 #ifdef _KEEP_RCS_ID 00103 /*REFERENCED*/ 00104 #endif /* _KEEP_RCS_ID */ 00105 00106 #ifdef __cplusplus 00107 extern "C" { 00108 #endif /* __cplusplus */ 00109 00110 /* ==================================================================== 00111 * 00112 * -FLIST: option group 00113 * 00114 * Define the global structure containing -FLIST option group flags. 00115 * 00116 * WARNING: Most of the fields in this struct must be addressable by 00117 * an option group descriptor -- hence BOOL instead of mBOOL. 00118 * 00119 * ==================================================================== 00120 */ 00121 00122 00123 typedef struct flist_flags { 00124 const char *orig_filename; /* Fortran input (original source) file */ 00125 const char *ftn_filename; /* Fortran output (transformed) file */ 00126 const char *loc_filename; /* source-to-source location mapping file */ 00127 BOOL enabled; /* Invoke whirl2f.so */ 00128 BOOL verbose; /* Show translation information */ 00129 BOOL old_f77; /* Use macros for new intrinsics */ 00130 BOOL ansi_format; /* Line-formatting to f77 standard */ 00131 BOOL no_pragmas; /* By default, emit pragmas */ 00132 BOOL emit_prefetch; /* Emit comments for prefetches */ 00133 BOOL emit_all_regions;/* Emit cmplr-generated regions */ 00134 BOOL emit_linedirs; /* Emit preproc line-directives */ 00135 BOOL emit_nested_pus; /* Emit code for nested PUs */ 00136 BOOL emit_frequency; /* Emit feedback frequency info */ 00137 BOOL emit_cgtag; /* Tag loops with loop_info address */ 00138 BOOL emit_pcf; /* force PCF spellings for pragmas */ 00139 BOOL emit_omp; /* force OMP spellings for pragmas */ 00140 INT32 line_length; /* 'zero' means: use the default */ 00141 00142 /* This buffer area allows references to new fields to be added in 00143 * later revisions, from other DSOs, without requiring a new be.so 00144 * or running the risk of referencing illegal data. Assuming that 00145 * the buffer is initialized to zeroes, any such references will 00146 * simply pick up FALSE values (for the Booleans): 00147 */ 00148 INT32 buffer[15]; /* Buffer space -- initialize to FALSE */ 00149 } FLIST_FLAGS; 00150 00151 00152 /* ==================================================================== 00153 * 00154 * -FLIST: option group 00155 * 00156 * Global data "objects" and manipulation functions. 00157 * 00158 * ==================================================================== 00159 */ 00160 00161 /* This is always the current set of option values: */ 00162 extern FLIST_FLAGS *Current_FLIST; 00163 00164 /* Define pseudo-variables for general usage: */ 00165 #define FLIST_orig_filename Current_FLIST->orig_filename 00166 #define FLIST_ftn_filename Current_FLIST->ftn_filename 00167 #define FLIST_loc_filename Current_FLIST->loc_filename 00168 #define FLIST_enabled Current_FLIST->enabled 00169 #define FLIST_verbose Current_FLIST->verbose 00170 #define FLIST_old_f77 Current_FLIST->old_f77 00171 #define FLIST_ansi_format Current_FLIST->ansi_format 00172 #define FLIST_no_pragmas Current_FLIST->no_pragmas 00173 #define FLIST_emit_prefetch Current_FLIST->emit_prefetch 00174 #define FLIST_emit_all_regions Current_FLIST->emit_all_regions 00175 #define FLIST_emit_linedirs Current_FLIST->emit_linedirs 00176 #define FLIST_emit_nested_pus Current_FLIST->emit_nested_pus 00177 #define FLIST_emit_frequency Current_FLIST->emit_frequency 00178 #define FLIST_emit_cgtag Current_FLIST->emit_cgtag 00179 #define FLIST_emit_pcf Current_FLIST->emit_pcf 00180 #define FLIST_emit_omp Current_FLIST->emit_omp 00181 #define FLIST_line_length Current_FLIST->line_length 00182 00183 00184 #ifdef __cplusplus 00185 } 00186 #endif /* __cplusplus */ 00187 00188 #endif /* config_flist_INCLUDED */