Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
config_wopt.h
Go to the documentation of this file.
00001 /*
00002 
00003   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
00004 
00005   This program is free software; you can redistribute it and/or modify it
00006   under the terms of version 2 of the GNU General Public License as
00007   published by the Free Software Foundation.
00008 
00009   This program is distributed in the hope that it would be useful, but
00010   WITHOUT ANY WARRANTY; without even the implied warranty of
00011   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
00012 
00013   Further, this software is distributed without any warranty that it is
00014   free of the rightful claim of any third person regarding infringement 
00015   or the like.  Any license provided herein, whether implied or 
00016   otherwise, applies only to this software file.  Patent licenses, if 
00017   any, provided herein do not apply to combinations of this program with 
00018   other software, or any other product whatsoever.  
00019 
00020   You should have received a copy of the GNU General Public License along
00021   with this program; if not, write the Free Software Foundation, Inc., 59
00022   Temple Place - Suite 330, Boston MA 02111-1307, USA.
00023 
00024   Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
00025   Mountain View, CA 94043, or:
00026 
00027   http://www.sgi.com
00028 
00029   For further information regarding this notice, see:
00030 
00031   http://oss.sgi.com/projects/GenInfo/NoticeExplan
00032 
00033 */
00034 
00035 
00036 /* ====================================================================
00037  * ====================================================================
00038  *
00039  *
00040  * Revision history:
00041  *  05-May-96 - Extracted from be/opt/opt_config.h.
00042  *
00043  * Description:
00044  *
00045  * Declare global flag variables for -WOPT group options.
00046  * This file is included in common/com/config.c, but should not be
00047  * otherwise used outside of WOPT.
00048  *
00049  * ====================================================================
00050  * WARNING: WHENEVER A NEW FLAG IS ADDED:
00051  * ###  - Add its definition to config_wopt.c .
00052  * ###  - Add it to the group description config_wopt.c .
00053  * ###  - UPDATE 'class WOPT_SWITCH' DEFINED IN be/opt/opt_main.cxx.
00054  * ====================================================================
00055  *
00056  * ====================================================================
00057  * ====================================================================
00058  */
00059 
00060 #ifndef config_wopt_INCLUDED
00061 #define config_wopt_INCLUDED
00062 
00063 /* Incomplete types to prevent unnecessary inclusion: */
00064 struct skiplist;
00065 
00066 /*********************************************************************
00067  ***
00068  *** Anything that may be seen outside of opt_config.c should
00069  *** be declared in this section.
00070  ***
00071  *********************************************************************
00072  */
00073 
00074 extern UINT32 WOPT_Alias_Class_Limit;
00075 extern UINT32 WOPT_Ip_Alias_Class_Limit;
00076 extern BOOL WOPT_Ldx_Ratio_RegIns;
00077 extern BOOL WOPT_Enable_Add_Do_Loop_Info;
00078 extern BOOL WOPT_Enable_Add_Label_Loop_Info;
00079 extern BOOL WOPT_Enable_Aggressive_Code_Motion;
00080 extern INT32 WOPT_Enable_Aggressive_CM_Limit;   
00081 extern INT32 WOPT_Enable_Aggressive_CM_Threshold;
00082 extern BOOL WOPT_Enable_Aggressive_dce;
00083 extern BOOL WOPT_Enable_Aggressive_Doloop_Promotion;
00084 extern BOOL WOPT_Enable_Aggressive_IVR;
00085 extern BOOL WOPT_Enable_Aggressive_Lftr;
00086 extern BOOL WOPT_Enable_Aggressive_Phi_Simp;
00087 extern BOOL WOPT_Enable_Aggstr_Reduction;
00088 extern BOOL WOPT_Enable_Alias_Classification;
00089 extern BOOL WOPT_Enable_Alias_Class_Fortran_Rule;
00090 extern BOOL WOPT_Enable_Avoid_Rehash;   /* SSAPRE to try to minimize rehashing*/
00091 extern BOOL WOPT_Enable_Backedge_Placement; /* BB on critical backedge */
00092 extern BOOL WOPT_Enable_Bitwise_DCE;
00093 extern BOOL WOPT_Enable_CSE_FP_comparison;
00094 extern BOOL WOPT_Enable_Call_Flag;
00095 extern BOOL WOPT_Enable_Calls_Break_BB;
00096 extern BOOL WOPT_Enable_Calls_Break_BB_Set;
00097 extern BOOL WOPT_Enable_Call_Zero_Version; /* allow zero versions at calls */
00098 extern BOOL WOPT_Enable_Canon_Expr;
00099 extern BOOL WOPT_Enable_Canon_Uplevel;  /* canonicalize the up level ref */
00100 /* allow operations in expression to be combined (or possibly just
00101  * rearranged to allow other optimizations).
00102  */
00103 extern BOOL WOPT_Enable_Combine_Operations;
00104 extern BOOL WOPT_Enable_Compare_Simp;
00105 extern BOOL WOPT_Enable_Const_PRE;
00106 extern INT32 WOPT_Enable_Const_PRE_Limit;
00107 extern BOOL WOPT_Enable_Copy_Propagate;
00108 extern BOOL WOPT_Enable_Copy_Prop_Bad_Ops;
00109 extern BOOL WOPT_Enable_Copy_Prop_LNO_Ops;
00110 /* copy prop certain ops into ARRAY subscripts */
00111 extern BOOL WOPT_Enable_Copy_Prop_Ops_Into_Array;
00112 extern BOOL WOPT_Enable_Copy_Prop_Ops_Into_Array_Set;
00113 extern BOOL WOPT_Enable_Cvt_Folding;    /* enable folding of CVT/CVTL in emitter */    
00114 extern BOOL WOPT_Enable_DIVREM;         /* allow DIVREM opcode */
00115 extern BOOL WOPT_Enable_CG_Alias;
00116 extern BOOL WOPT_Enable_CRSIMP;         /* simplify coderep */
00117 extern BOOL WOPT_Enable_DCE;
00118 extern BOOL WOPT_Enable_DCE_Alias;      /* extra alias analysis w/DCE */
00119 extern BOOL WOPT_Enable_DCE_Branch;     /* delete redundant condition */
00120 extern INT32 WOPT_Enable_DCE_Branch_Pred_Limit; /* local search limit */
00121 extern BOOL WOPT_Enable_DCE_Global;     /* delete global stores */
00122 extern BOOL WOPT_Enable_DCE_Label;      /* delete unref'd labels */
00123 extern BOOL WOPT_Enable_Dse_Aggressive;
00124 extern BOOL WOPT_Enable_DU_Full;        /* full DU-info for indirects */
00125 extern BOOL WOPT_Enable_DU_Union;       /* fix DU w/unions */
00126 extern BOOL WOPT_Enable_Estr_FB_Injury; /* use feedback frequency to */
00127                                         /* decide when IV updates are */
00128                                         /* reparable injuries */
00129 extern BOOL WOPT_Enable_Exp_PRE;
00130 extern INT32 WOPT_Enable_Exp_PRE_Limit;
00131 extern BOOL WOPT_Enable_Dead_CR_Fix;    /* process dead CR in main_emit time */
00132 
00133 // Tighten up assertions about interprocedural alias class
00134 extern BOOL WOPT_Enable_Debug_Inconsistent_Ip_Class;
00135 
00136 extern BOOL WOPT_Enable_Edge_Placement; /* insert BB on critical edge */
00137 extern BOOL WOPT_Enable_Fast_Simp;      /* temporary 377066 */
00138 extern BOOL WOPT_Enable_Fold2const;
00139 extern BOOL WOPT_Enable_Fold_Lda_Iload_Istore; // for folding in coderep
00140 extern BOOL WOPT_Enable_FSA;
00141 extern BOOL WOPT_Enable_Generate_DU;
00142 extern INT32 WOPT_Enable_Generate_Trip_Count;
00143 extern BOOL WOPT_Enable_Goto;
00144 extern BOOL WOPT_Enable_Hoisting;
00145 extern BOOL WOPT_Enable_Ivar_Hoisting;
00146 extern BOOL WOPT_Enable_I8_Primary_IV;  /* allow primary IV to be I8 */
00147 extern BOOL WOPT_Enable_Iload_Prop;     /* propagate expression containing ivars */
00148 extern BOOL WOPT_Enable_Improved_Addr_Taken;
00149 extern BOOL WOPT_Enable_Input_Prop;     /* copy prop at value number time */
00150 extern BOOL WOPT_Enable_Itself_Prop;     /* copy prop of t=func(t) where func
00151                                             contains only t plus other constants */
00152 extern BOOL WOPT_Enable_IPAA;           /* enable the use of IPA alias analysis result */
00153 extern BOOL WOPT_Enable_IVE;            /* induction-var elimination */
00154 extern BOOL WOPT_Enable_IVE_Old;        /* use old IVE with bug in it */
00155 extern BOOL WOPT_Enable_Ivar_Common;
00156 extern BOOL WOPT_Enable_Ivar_PRE;       /* enable *p as PRE candidate */
00157 extern BOOL WOPT_Enable_Ivincr_Cand;
00158 extern BOOL WOPT_Enable_IVR;            /* induction-var recognition */
00159 extern INT32 WOPT_Enable_IVR_Expand_Limit;  /* limit of expr expansion to search for incr */
00160                                         
00161 /* do ivr for outermost in ||-region */
00162 extern BOOL WOPT_Enable_IVR_Outermost_Loop_Parallel_Region; 
00163 extern BOOL WOPT_Enable_Ldx;            /* index load optimization */
00164 extern BOOL WOPT_Enable_Lego_Opt;       /* max optimization for lego */
00165 extern BOOL WOPT_Enable_LFTR;           /* linear function test replacement */
00166 extern BOOL WOPT_Enable_LFTR_Ivar;      /* handle expr containing ivars */
00167 extern BOOL WOPT_Enable_LFTR2;          /* linear function test replacement */
00168 extern BOOL WOPT_Enable_LFTR2_Limit;
00169 extern BOOL WOPT_Enable_Load_PRE;
00170 extern INT32 WOPT_Enable_Load_PRE_Limit;
00171 extern BOOL WOPT_Enable_Local_Rvi;      /* enable fast rvi of locals */    
00172 extern INT32 WOPT_Enable_Local_Rvi_Limit;
00173 extern BOOL WOPT_Enable_Loopinvarexp_Str_Reduction;
00174 extern BOOL WOPT_Enable_Lower_Short_Circuit;
00175 extern BOOL WOPT_Enable_Lower_Short_Circuit_Set;
00176 extern BOOL WOPT_Enable_LNO_Copy_Propagate;
00177 extern BOOL WOPT_Enable_MINMAX;         /* allow MINMAX opcode */
00178 extern BOOL WOPT_Enable_Min_Type;       /* use minimum size type in PRE PREG */
00179 extern BOOL WOPT_Enable_Move_Intrinsicop;
00180 extern BOOL WOPT_Enable_MP_varref;      /* trust the var list in the nested procedure */
00181 extern const BOOL WOPT_Enable_MP_Const_Prop;  /* perform const prop into MP region */
00182 extern BOOL WOPT_Enable_New_SR;         /* new strength-reduction */
00183 extern BOOL WOPT_Enable_New_SR_Limit;
00184 extern BOOL WOPT_Enable_Output_Copy;    /* output copy propagation */
00185 extern BOOL WOPT_Enable_Ocopy_Lookupstmt;
00186 extern BOOL WOPT_Enable_Parm;           /* insert OPTPARM over parms */
00187 extern char *WOPT_Enable_Process;
00188 extern BOOL WOPT_Enable_Phi_Simp;
00189 extern BOOL WOPT_Enable_Prop_Aggressive;/* use inverse function to avoid 
00190                                            overlapping live ranges */
00191 extern BOOL WOPT_Enable_Prop_Ivar;      /* copy propagation thru iload's */
00192 extern BOOL WOPT_Enable_Prop_CSE;       /* copy propagation of CSE expressions */
00193 extern INT32 WOPT_Enable_Prop_Limit;    /* tree height limit in copy prop */
00194 extern BOOL WOPT_Enable_Prune;          /* temporary, pv 370066 */
00195 extern BOOL WOPT_Enable_Replace_Second_IV; /* Force replacement of secondary IV */
00196 extern BOOL WOPT_Enable_Replace_While_Loop_Second_IV; /* Force replacement of secondary IV */
00197 extern BOOL  WOPT_Enable_Restricted_Map;
00198 extern INT32 WOPT_Enable_Rsv_Bits;      /* reserve bit count in itable */
00199 extern BOOL WOPT_Enable_RVI;            /* reg-var identification */
00200 extern BOOL WOPT_Enable_RVI1;           /* rvi phase 1 */
00201 extern BOOL WOPT_Enable_RVI2;           /* rvi phase 2 */
00202 extern BOOL WOPT_Enable_Rviistore;      /* agg. chi-handling on istore*/
00203 extern char *WOPT_Enable_Rviskip;       /* skip variable during rvi */
00204 extern BOOL WOPT_Enable_Rvisplit;       /* split bbs at ever stmt */
00205 extern BOOL WOPT_Enable_Rvivsym;        /* ignore vsym in chi lists */
00206 extern BOOL WOPT_Enable_Second_Alias_Class; /* repeat alias class for LNO */
00207 extern BOOL WOPT_Enable_Second_Order;
00208 extern BOOL WOPT_Enable_Simp_Iload;     /* simplifier folding iload */
00209 extern BOOL WOPT_Enable_Simple_If_Conv; /* enable simple if-conversion at CFG build time */
00210 extern char *WOPT_Enable_Skip;
00211 extern struct option_list *WOPT_Skip;   /* Skip option list */
00212 extern struct skiplist *WOPT_Skip_List; /* Preprocessed skip list */
00213 extern BOOL WOPT_Enable_SLT;
00214 extern BOOL WOPT_Enable_Small_Br_Target; /* Disable propagation into br BBs */
00215 extern BOOL WOPT_Enable_Source_Order;   /* trace BB's in source order */
00216 extern BOOL WOPT_Enable_Speculation_Defeats_LFTR;
00217 extern BOOL WOPT_Enable_SSA_Minimization; /* SSA minimization in SSAPRE */
00218 extern BOOL WOPT_Enable_SSA_PRE;
00219 extern BOOL WOPT_Enable_Store_PRE;
00220 extern INT32 WOPT_Enable_Store_PRE_Limit;
00221 extern BOOL WOPT_Enable_Strength_Reduction;
00222 extern BOOL WOPT_Enable_Tail_Recur;     /* tail recursion opt */
00223 extern BOOL WOPT_Enable_Update_Vsym;
00224 extern char *WOPT_Set_Unique_Pt;
00225 extern BOOL WOPT_Enable_Unique_Pt_Vsym;
00226 extern INT32 WOPT_Enable_Value_Numbering; /*0=OFF, 1=after_pre, 2=befr_n_aftr*/
00227 extern INT32 WOPT_Enable_Vn_Ivc;        /* Induction variable coalescing; 0=OFF
00228                                          * See be/opt/opt_vn_ivc.h */
00229 extern UINT32 WOPT_Enable_Vnfre_After;  /* Disable vnfre after given valnum */
00230 extern UINT32 WOPT_Enable_Vnfre_Before; /* Disable vnfre before given valnum */
00231 extern BOOL WOPT_Enable_Verbose;
00232 extern INT32 WOPT_Enable_Verify;        /* verify data structures */
00233 extern BOOL WOPT_Enable_Vsym_Unique;
00234 extern BOOL WOPT_Enable_VN_Full;        /* full value number for ivars */
00235 extern BOOL WOPT_Enable_While_Loop;     /* cvt while-do to do-loop */
00236 extern BOOL WOPT_Enable_Worklist_Pruning;
00237 extern BOOL WOPT_Enable_Zero_Version;
00238 extern BOOL WOPT_Enable_Strong_Barrier; /* disallow any memop motion across a barrier */
00239 extern BOOL WOPT_Enable_Aggr_Invariant; /* aggressive invariant detection */
00240 extern BOOL WOPT_Enable_Shrink;         /* enable live range shrinking */
00241 extern INT32 WOPT_Enable_Extra_Rename_Pass;
00242 extern BOOL  WOPT_Enable_Extra_Rename_Pass_Set;
00243 extern UINT32 WOPT_Enable_Extra_Preopt_Pass; // additional iterations of preopt
00244 extern BOOL  WOPT_Enable_Bool_Simp; 
00245 extern BOOL  WOPT_Enable_Feedback_LPRE;
00246 extern BOOL  WOPT_Enable_Feedback_EPRE;
00247 extern BOOL  WOPT_Enable_CFG_Opt;
00248 extern BOOL  WOPT_Enable_CFG_Display;
00249 extern BOOL  WOPT_Enable_CFG_Merge_Multi_Zone;
00250 extern BOOL  WOPT_Enable_CFG_Merge_Multi_Zone_Set;
00251 extern BOOL  WOPT_Enable_CFG_Opt1;
00252 extern BOOL  WOPT_Enable_CFG_Opt2;
00253 extern INT32 WOPT_Enable_CFG_Opt2_Limit;
00254 extern BOOL  WOPT_Enable_CFG_Opt3;
00255 extern BOOL  WOPT_Enable_CFG_Opt4;
00256 extern BOOL  WOPT_Enable_CFG_Opt_Limit;
00257 extern BOOL  WOPT_Enable_Bits_Load_Store;
00258 extern BOOL  WOPT_Enable_Epre_Before_Ivr; // For running epre early
00259 extern BOOL  WOPT_Enable_Lpre_Before_Ivr; // For running lpre early
00260 extern BOOL  WOPT_Enable_Spre_Before_Ivr; // For running spre early
00261 extern BOOL  WOPT_Enable_Bdce_Before_Ivr; // For running bdce early
00262 extern BOOL  WOPT_Enable_New_Phase_Ordering; // Enables some phases before ivr
00263 #endif /* config_wopt_INCLUDED */
00264 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines