00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068 #include "config_wopt.h"
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 UINT32 WOPT_Ip_Alias_Class_Limit = UINT32_MAX;
00080 UINT32 WOPT_Alias_Class_Limit = UINT32_MAX;
00081 INT32 WOPT_Ldx_Ratio_RegIns = 1;
00082 BOOL WOPT_Enable_Add_Do_Loop_Info = TRUE;
00083 BOOL WOPT_Enable_Add_Label_Loop_Info = TRUE;
00084 BOOL WOPT_Enable_Aggressive_Code_Motion = TRUE;
00085 INT32 WOPT_Enable_Aggressive_CM_Limit = INT32_MAX;
00086 INT32 WOPT_Enable_Aggressive_CM_Threshold = 70;
00087 BOOL WOPT_Enable_Aggressive_dce = TRUE;
00088 BOOL WOPT_Enable_Aggressive_dce_for_bbs = TRUE;
00089 BOOL WOPT_Enable_Aggressive_Doloop_Promotion = FALSE;
00090 BOOL WOPT_Enable_Aggressive_IVR = TRUE;
00091 BOOL WOPT_Enable_Aggressive_Lftr = TRUE;
00092 BOOL WOPT_Enable_Aggressive_Phi_Simp = TRUE;
00093 #if defined(TARG_X8664) || defined(TARG_IA32)
00094 INT32 WOPT_Enable_Autoaggstr_Reduction_Threshold = 11;
00095 #else
00096 INT32 WOPT_Enable_Autoaggstr_Reduction_Threshold = 24;
00097 #endif
00098 BOOL WOPT_Enable_Alias_ANSI = TRUE;
00099 BOOL WOPT_Enable_Alias_Classification = TRUE;
00100 BOOL WOPT_Enable_Aggressive_Alias_Classification = TRUE;
00101 BOOL WOPT_Enable_Disambiguate_Heap_Obj = TRUE;
00102 BOOL WOPT_Enable_Alias_Class_Fortran_Rule = TRUE;
00103 BOOL WOPT_Enable_Alias_Qualifer = TRUE;
00104 BOOL WOPT_Enable_Alias_Ragnarok_Unnamed = TRUE;
00105 #if defined(TARG_SL)
00106 BOOL WOPT_Enable_Alias_Intrn = TRUE;
00107 BOOL WOPT_Enable_Local_Clsc = TRUE;
00108
00109 #endif
00110 BOOL WOPT_Enable_Avoid_Rehash = FALSE;
00111 BOOL WOPT_Enable_Bitwise_DCE = TRUE;
00112 BOOL WOPT_Enable_CSE_FP_comparison = TRUE;
00113 BOOL WOPT_Enable_Call_Flag = TRUE;
00114 BOOL WOPT_Enable_Calls_Break_BB = FALSE;
00115 BOOL WOPT_Enable_Calls_Break_BB_Set = FALSE;
00116 BOOL WOPT_Enable_Canon_Expr = TRUE;
00117 BOOL WOPT_Enable_Combine_Operations = TRUE;
00118 BOOL WOPT_Enable_Compare_Simp = TRUE;
00119 BOOL WOPT_Enable_Const_PRE = TRUE;
00120 INT32 WOPT_Enable_Const_PRE_Limit = 0;
00121 #ifdef TARG_NVISA
00122 BOOL WOPT_Enable_Const_Var_PRE = TRUE;
00123 BOOL WOPT_Enable_Const_Op_PRE = TRUE;
00124 INT32 WOPT_Const_PRE_Float_Size = 128;
00125 #endif
00126 BOOL WOPT_Enable_Copy_Propagate = TRUE;
00127 BOOL WOPT_Enable_Copy_Prop_Bad_Ops = FALSE;
00128 static BOOL WOPT_Enable_Copy_Prop_Bad_Ops_Set = FALSE;
00129 BOOL WOPT_Enable_Copy_Prop_LNO_Ops = FALSE;
00130
00131 BOOL WOPT_Enable_Copy_Prop_Ops_Into_Array = FALSE;
00132 BOOL WOPT_Enable_Copy_Prop_Ops_Into_Array_Set = FALSE;
00133 BOOL WOPT_Enable_CG_Alias = TRUE;
00134 BOOL WOPT_Enable_DIVREM = TRUE;
00135 BOOL WOPT_Enable_CRSIMP = TRUE;
00136 BOOL WOPT_Enable_DCE = TRUE;
00137 BOOL WOPT_Enable_DCE_Alias = FALSE;
00138 BOOL WOPT_Enable_DCE_Branch = TRUE;
00139 INT32 WOPT_Enable_DCE_Branch_Pred_Limit = 5;
00140 BOOL WOPT_Enable_DCE_Global = TRUE;
00141 BOOL WOPT_Enable_DCE_Label = TRUE;
00142 BOOL WOPT_Enable_DU_Full = FALSE;
00143 BOOL WOPT_Enable_DU_Union = TRUE;
00144 BOOL WOPT_Enable_Dead_CR_Fix = TRUE;
00145 BOOL WOPT_Enable_Debug_Inconsistent_Ip_Class = FALSE;
00146 BOOL WOPT_Enable_Estr_FB_Injury = FALSE;
00147 static BOOL WOPT_Enable_Estr_FB_Injury_Set = FALSE;
00148 BOOL WOPT_Enable_Exp_PRE = TRUE;
00149 INT32 WOPT_Enable_Exp_PRE_Limit = -1;
00150 BOOL WOPT_Enable_Fast_Simp = TRUE;
00151 BOOL WOPT_Enable_Fold2const = TRUE;
00152 #ifdef KEY
00153 BOOL WOPT_Enable_Fold_Lda_Iload_Istore = TRUE;
00154 #else
00155 BOOL WOPT_Enable_Fold_Lda_Iload_Istore = FALSE;
00156 #endif
00157 BOOL WOPT_Enable_LNO_Copy_Propagate = TRUE;
00158 BOOL WOPT_Enable_FSA = TRUE;
00159 INT32 WOPT_Enable_Generate_Trip_Count = 1;
00160 BOOL WOPT_Enable_Generate_DU = TRUE;
00161 BOOL WOPT_Enable_Goto = TRUE;
00162 BOOL WOPT_Enable_Hoisting = TRUE;
00163 BOOL WOPT_Enable_Ivar_Hoisting = TRUE;
00164 BOOL WOPT_Enable_I8_Primary_IV = FALSE;
00165 BOOL WOPT_Enable_Improved_Addr_Taken = TRUE;
00166 BOOL WOPT_Enable_Input_Prop = TRUE;
00167 BOOL WOPT_Enable_Itself_Prop = TRUE;
00168 BOOL WOPT_Enable_IPAA = FALSE;
00169 BOOL WOPT_Enable_Ivar_Common = TRUE;
00170 BOOL WOPT_Enable_Ivar_PRE = TRUE;
00171 BOOL WOPT_Enable_Ivincr_Cand = FALSE;
00172 BOOL WOPT_Enable_IVE = TRUE;
00173 BOOL WOPT_Enable_IVE_Old = FALSE;
00174 BOOL WOPT_Enable_IVR = TRUE;
00175 INT32 WOPT_Enable_IVR_Expand_Limit = 1000;
00176 BOOL WOPT_Enable_IVR_Outermost_Loop_Parallel_Region = FALSE;
00177 #ifdef KEY
00178 INT32 WOPT_Enable_Ivr_Limit = -1;
00179 INT32 WOPT_Enable_Ivr_Cand_Limit = -1;
00180 #endif
00181 BOOL WOPT_Enable_Ldx = FALSE;
00182 BOOL WOPT_Enable_Lego_Opt = FALSE;
00183 BOOL WOPT_Enable_LFTR_Ivar = FALSE;
00184 #ifndef TARG_IA64
00185 BOOL WOPT_Enable_LFTR2 = TRUE;
00186 #else
00187 BOOL WOPT_Enable_LFTR2 = FALSE;
00188 #endif
00189 INT32 WOPT_Enable_LFTR2_Limit = -1;
00190 BOOL WOPT_Enable_Load_PRE = TRUE;
00191 INT32 WOPT_Enable_Load_PRE_Limit = -1;
00192 BOOL WOPT_Enable_Loopinvarexp_Str_Reduction = TRUE;
00193 BOOL WOPT_Enable_Lower_Short_Circuit = FALSE;
00194 BOOL WOPT_Enable_Lower_Short_Circuit_Set = FALSE;
00195 #if defined(TARG_SL)
00196 BOOL WOPT_Enable_MINMAX = FALSE;
00197 #else
00198 BOOL WOPT_Enable_MINMAX = TRUE;
00199 #endif
00200 BOOL WOPT_Enable_Min_Type = TRUE;
00201 BOOL WOPT_Enable_Move_Intrinsicop = TRUE;
00202 BOOL WOPT_Enable_MP_varref = TRUE;
00203 const BOOL WOPT_Enable_MP_Const_Prop = TRUE;
00204 BOOL WOPT_Enable_New_SR = TRUE;
00205 INT32 WOPT_Enable_New_SR_Limit = 0;
00206 BOOL WOPT_Enable_Output_Copy = TRUE;
00207 INT32 WOPT_Enable_Ocopy_Lookupstmt = 2;
00208 BOOL WOPT_Enable_Parm = TRUE;
00209 char *WOPT_Enable_Process = NULL;
00210 BOOL WOPT_Enable_Phi_Simp = TRUE;
00211 BOOL WOPT_Enable_Prop_Ivar = TRUE;
00212 BOOL WOPT_Enable_Prop_CSE = FALSE;
00213 #ifdef KEY
00214 INT32 WOPT_Enable_Prop_Limit = 12;
00215 INT32 WOPT_Enable_Doend_Prop_Limit = 26;
00216 #else
00217 INT32 WOPT_Enable_Prop_Limit = 14;
00218 #endif
00219 INT32 WOPT_Enable_Prop_Weight_Limit = 50000;
00220 #ifdef KEY
00221 BOOL WOPT_Enable_Prop_Dope = FALSE;
00222 #endif
00223 BOOL WOPT_Enable_Prune = TRUE;
00224 BOOL WOPT_Enable_Replace_Second_IV = TRUE;
00225 BOOL WOPT_Enable_Replace_While_Loop_Second_IV = TRUE;
00226 BOOL WOPT_Enable_Restricted_Map = TRUE;
00227 INT32 WOPT_Enable_Rsv_Bits = 16;
00228 #ifdef TARG_X8664
00229 BOOL WOPT_Enable_RVI = FALSE;
00230 #else
00231 BOOL WOPT_Enable_RVI = TRUE;
00232 #endif
00233 BOOL WOPT_Enable_RVI1 = TRUE;
00234 BOOL WOPT_Enable_RVI2 = TRUE;
00235 BOOL WOPT_Enable_Rviistore = TRUE;
00236 char *WOPT_Enable_Rviskip = NULL;
00237 BOOL WOPT_Enable_Rvisplit = FALSE;
00238 BOOL WOPT_Enable_Rvivsym = TRUE;
00239 BOOL WOPT_Enable_Second_Alias_Class = TRUE;
00240 BOOL WOPT_Enable_Second_Order = TRUE;
00241 char *WOPT_Enable_Skip = NULL;
00242 OPTION_LIST *WOPT_Skip = NULL;
00243 SKIPLIST *WOPT_Skip_List = NULL;
00244 OPTION_LIST *WOPT_Unroll_Skip = NULL;
00245 SKIPLIST *WOPT_Unroll_Skip_List = NULL;
00246 BOOL WOPT_Enable_SLT = TRUE;
00247 BOOL WOPT_Enable_Small_Br_Target = FALSE;
00248 INT32 WOPT_Enable_Simple_If_Conv = 1;
00249 INT32 WOPT_Enable_If_Conv_Limit = 6;
00250
00251 BOOL WOPT_Enable_If_Conv_For_Istore = TRUE;
00252 BOOL WOPT_Enable_Speculation_Defeats_LFTR = TRUE;
00253 BOOL WOPT_Enable_Str_Red_Use_Context = TRUE;
00254 BOOL WOPT_Enable_SSA_Minimization = TRUE;
00255 BOOL WOPT_Enable_SSA_PRE = TRUE;
00256 BOOL WOPT_Enable_Store_PRE = TRUE;
00257 INT32 WOPT_Enable_Store_PRE_Limit = -1;
00258 INT32 WOPT_Enable_Local_Rvi_Limit = -1;
00259 BOOL WOPT_Enable_Update_Vsym = TRUE;
00260 BOOL WOPT_Enable_Unique_Pt_Vsym = TRUE;
00261 INT32 WOPT_Enable_Value_Numbering = 1;
00262 INT32 WOPT_Enable_Vn_Ivc = 1;
00263 UINT32 WOPT_Enable_Vnfre_After = 0;
00264 UINT32 WOPT_Enable_Vnfre_Before = UINT32_MAX;
00265 BOOL WOPT_Enable_Verbose = FALSE;
00266 INT32 WOPT_Enable_Verify = 1;
00267 BOOL WOPT_Enable_Vsym_Unique = FALSE;
00268 BOOL WOPT_Enable_While_Loop = TRUE;
00269 BOOL WOPT_Enable_Worklist_Pruning = TRUE;
00270 BOOL WOPT_Enable_Zero_Version = TRUE;
00271 BOOL WOPT_Enable_Call_Zero_Version = TRUE;
00272 BOOL WOPT_Enable_Dse_Aggressive = TRUE;
00273 BOOL WOPT_Enable_Prop_Aggressive = TRUE;
00274 BOOL WOPT_Enable_Iload_Prop = TRUE;
00275 BOOL WOPT_Enable_VN_Full = TRUE;
00276 BOOL WOPT_Enable_Simp_Iload = TRUE;
00277 BOOL WOPT_Enable_Canon_Uplevel=FALSE;
00278 #if defined(TARG_X8664) || (TARG_SL) // bug 12909
00279 BOOL WOPT_Enable_Tail_Recur = TRUE;
00280 #else
00281 BOOL WOPT_Enable_Tail_Recur = FALSE;
00282 #endif
00283 BOOL WOPT_Enable_Tail_Recur_Set = FALSE;
00284 BOOL WOPT_Enable_Edge_Placement = TRUE;
00285 BOOL WOPT_Enable_Backedge_Placement = FALSE;
00286 BOOL WOPT_Enable_Source_Order = FALSE;
00287 BOOL WOPT_Enable_Cvt_Folding = TRUE;
00288 BOOL WOPT_Enable_Local_Rvi = TRUE;
00289 BOOL WOPT_Enable_Strong_Barrier = FALSE;
00290 BOOL WOPT_Enable_Aggr_Invariant = TRUE;
00291 BOOL WOPT_Enable_Shrink = TRUE;
00292 INT32 WOPT_Enable_Extra_Rename_Pass = 5;
00293 BOOL WOPT_Enable_Extra_Rename_Pass_Set = FALSE;
00294 UINT32 WOPT_Enable_Extra_Preopt_Pass = 0;
00295 BOOL WOPT_Enable_Bool_Simp = TRUE;
00296 BOOL WOPT_Enable_Feedback_LPRE = FALSE;
00297 BOOL WOPT_Enable_Feedback_EPRE = FALSE;
00298 BOOL WOPT_Enable_CFG_Display = FALSE;
00299 BOOL WOPT_Enable_CFG_Merge_Multi_Zone = TRUE;
00300 BOOL WOPT_Enable_CFG_Merge_Multi_Zone_Set = FALSE;
00301 BOOL WOPT_Enable_CFG_Opt = TRUE;
00302 BOOL WOPT_Enable_CFG_Opt1 = TRUE;
00303 BOOL WOPT_Enable_CFG_Opt2 = TRUE;
00304 INT32 WOPT_Enable_CFG_Opt2_Limit = 80;
00305 BOOL WOPT_Enable_CFG_Opt3 = FALSE;
00306 BOOL WOPT_Enable_CFG_Opt4 = FALSE;
00307 INT32 WOPT_Enable_CFG_Opt_Limit = 10;
00308 char *WOPT_Set_Unique_Pt = NULL;
00309 BOOL WOPT_Enable_Bits_Load_Store = TRUE;
00310 BOOL WOPT_Enable_Epre_Before_Ivr = FALSE;
00311 BOOL WOPT_Enable_Lpre_Before_Ivr = FALSE;
00312 BOOL WOPT_Enable_Spre_Before_Ivr = FALSE;
00313 BOOL WOPT_Enable_Bdce_Before_Ivr = FALSE;
00314 BOOL WOPT_Enable_New_Phase_Ordering = TRUE;
00315 BOOL WOPT_Enable_Pt_Keep_Track_Ptr = TRUE;
00316
00317
00318 BOOL WOPT_Enable_Aggr_Pt_Keep_Track_Ptr = TRUE;
00319 BOOL WOPT_Enable_Noreturn_Attr_Opt = TRUE;
00320 BOOL WOPT_Enable_Pt_Summary = FALSE;
00321
00322 #ifdef KEY
00323 BOOL WOPT_Enable_Preserve_Mem_Opnds = FALSE;
00324
00325 BOOL WOPT_Enable_Retype_Expr = FALSE;
00326
00327 INT32 WOPT_Enable_Folded_Scalar_Limit = 1000;
00328
00329 INT32 WOPT_Enable_Bdceprop_Limit = -1;
00330
00331 BOOL WOPT_Enable_Warn_Uninit = FALSE;
00332 INT32 WOPT_Enable_WN_Unroll = 1;
00333
00334
00335 BOOL WOPT_Enable_IP_Mod_Ref = FALSE;
00336 BOOL WOPT_Enable_Invariant_Loop_Bounds = FALSE;
00337
00338 BOOL WOPT_Enable_Subword_Opt = TRUE;
00339
00340 BOOL WOPT_Enable_New_Vsym_Allocation = FALSE;
00341 #endif
00342 BOOL WOPT_Enable_WOVP = TRUE;
00343 BOOL WOPT_Enable_Loop_Multiver = FALSE;
00344 #if defined(TARG_SL)
00345 BOOL WOPT_Enable_STR_Short = FALSE;
00346 #else
00347 BOOL WOPT_Enable_STR_Short = FALSE;
00348 #endif
00349 #if defined(TARG_NVISA)
00350 BOOL WOPT_Enable_Estr_Outer_Loop = TRUE;
00351 BOOL WOPT_Enable_Estr_Const_Opnds = TRUE;
00352 BOOL WOPT_Enable_Estr_Used_Once = TRUE;
00353 BOOL WOPT_Enable_Estr_Early_Exit = FALSE;
00354 BOOL WOPT_Enable_Aggressive_Iload_CSE = TRUE;
00355 #endif
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366 static OPTION_DESC Options_WOPT[] = {
00367 { OVK_UINT32, OV_VISIBLE, TRUE, "ac_limit", "",
00368 UINT32_MAX, 0, UINT32_MAX, &WOPT_Alias_Class_Limit, NULL },
00369 { OVK_UINT32, OV_VISIBLE, TRUE, "ip_ac_limit", "",
00370 UINT32_MAX, 0, UINT32_MAX, &WOPT_Ip_Alias_Class_Limit, NULL },
00371 { OVK_BOOL, OV_VISIBLE, TRUE, "add_do_loop_info", "add_do",
00372 0, 0, 0, &WOPT_Enable_Add_Do_Loop_Info, NULL },
00373 { OVK_BOOL, OV_VISIBLE, TRUE, "add_label_loop_info", "add_label",
00374 0, 0, 0, &WOPT_Enable_Add_Label_Loop_Info, NULL },
00375 { OVK_BOOL, OV_VISIBLE, TRUE, "aggcm", "aggcm",
00376 0, 0, 0, &WOPT_Enable_Aggressive_Code_Motion, NULL },
00377 { OVK_INT32, OV_VISIBLE, TRUE, "aggcm_limit", "",
00378 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Aggressive_CM_Limit, NULL },
00379 { OVK_INT32, OV_VISIBLE, TRUE, "aggcm_threshold", "aggcm_thres",
00380 0, 0, 101, &WOPT_Enable_Aggressive_CM_Threshold, NULL },
00381 { OVK_BOOL, OV_VISIBLE, TRUE, "agglftr", "agglftr",
00382 0, 0, 0, &WOPT_Enable_Aggressive_Lftr, NULL },
00383 { OVK_BOOL, OV_VISIBLE, TRUE, "aggphi_simp", "aggphi",
00384 0, 0, 0, &WOPT_Enable_Aggressive_Phi_Simp, NULL },
00385 { OVK_BOOL, OV_VISIBLE, TRUE, "aggdo", "aggdo",
00386 0, 0, 0, &WOPT_Enable_Aggressive_Doloop_Promotion, NULL },
00387 { OVK_BOOL, OV_VISIBLE, TRUE, "agg_ivr", "agg_ivr",
00388 0, 0, 0, &WOPT_Enable_Aggressive_IVR, NULL },
00389 { OVK_UINT32, OV_VISIBLE, TRUE, "aggstr_reduction", "aggstr",
00390 UINT32_MAX, 0, UINT32_MAX, &WOPT_Enable_Autoaggstr_Reduction_Threshold, NULL },
00391 { OVK_BOOL, OV_VISIBLE, TRUE, "alias_classification", "alias_class",
00392 0, 0, 0, &WOPT_Enable_Alias_Classification, NULL },
00393 { OVK_BOOL, OV_VISIBLE, TRUE, "agg_alias_classification", "agg_alias_class",
00394 0, 0, 0, &WOPT_Enable_Aggressive_Alias_Classification, NULL },
00395 { OVK_BOOL, OV_VISIBLE, TRUE, "disa_heap_obj", "disa_heap",
00396 0, 0, 0, &WOPT_Enable_Disambiguate_Heap_Obj, NULL },
00397 { OVK_BOOL, OV_VISIBLE, TRUE, "ac_fortran", "",
00398 0, 0, 0, &WOPT_Enable_Alias_Class_Fortran_Rule, NULL },
00399 #if defined(TARG_SL)
00400 { OVK_BOOL, OV_VISIBLE, TRUE, "alias_intrn", "alias_intrn",
00401 0, 0, 0, &WOPT_Enable_Alias_Intrn, NULL },
00402 #endif
00403 { OVK_BOOL, OV_VISIBLE, TRUE, "avoid_rehash", "",
00404 0, 0, 0, &WOPT_Enable_Avoid_Rehash, NULL },
00405 { OVK_BOOL, OV_VISIBLE, TRUE, "bdce", "bdce",
00406 0, 0, 0, &WOPT_Enable_Bitwise_DCE, NULL },
00407 { OVK_BOOL, OV_VISIBLE, TRUE, "cse_fcmp", "",
00408 0, 0, 0, &WOPT_Enable_CSE_FP_comparison, NULL },
00409 { OVK_BOOL, OV_VISIBLE, TRUE, "canon_uplevel", "canon",
00410 0, 0, 0, &WOPT_Enable_Canon_Uplevel, NULL },
00411 { OVK_BOOL, OV_VISIBLE, TRUE, "call_flag", "call_flag",
00412 0, 0, 0, &WOPT_Enable_Call_Flag, NULL },
00413 { OVK_BOOL, OV_VISIBLE, FALSE, "calls_break_bb", "",
00414 0, 0, 0, &WOPT_Enable_Calls_Break_BB, &WOPT_Enable_Calls_Break_BB_Set },
00415 { OVK_BOOL, OV_VISIBLE, TRUE, "canon_expr", "canon_expr",
00416 0, 0, 0, &WOPT_Enable_Canon_Expr, NULL },
00417 { OVK_BOOL, OV_VISIBLE, TRUE, "cg_alias", "cg_alias",
00418 0, 0, 0, &WOPT_Enable_CG_Alias, NULL },
00419 { OVK_BOOL, OV_VISIBLE, TRUE, "class2", "class2",
00420 0, 0, 0, &WOPT_Enable_Second_Alias_Class, NULL },
00421 { OVK_BOOL, OV_VISIBLE, TRUE, "combine_operations", "combine",
00422 0, 0, 0, &WOPT_Enable_Combine_Operations, NULL },
00423 { OVK_BOOL, OV_VISIBLE, TRUE, "compare_simp", "compare",
00424 0, 0, 0, &WOPT_Enable_Compare_Simp, NULL },
00425 { OVK_BOOL, OV_VISIBLE, TRUE, "const_pre", "const_pre",
00426 0, 0, 0, &WOPT_Enable_Const_PRE, NULL },
00427 { OVK_INT32, OV_VISIBLE, TRUE, "const_pre_limit", "const_pre_limit",
00428 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Const_PRE_Limit, NULL },
00429 #if defined(TARG_NVISA)
00430 { OVK_BOOL, OV_VISIBLE, TRUE, "const_var_pre", "",
00431 0, 0, 0, &WOPT_Enable_Const_Var_PRE, NULL },
00432 { OVK_BOOL, OV_VISIBLE, TRUE, "const_op_pre", "",
00433 0, 0, 0, &WOPT_Enable_Const_Op_PRE, NULL },
00434 { OVK_INT32, OV_VISIBLE, TRUE, "const_pre_float_size", "const_pre_float_size",
00435 INT32_MAX, 0, INT32_MAX, &WOPT_Const_PRE_Float_Size, NULL },
00436 #endif
00437 { OVK_BOOL, OV_VISIBLE, TRUE, "divrem", "divrem",
00438 0, 0, 0, &WOPT_Enable_DIVREM, NULL },
00439 { OVK_BOOL, OV_VISIBLE, TRUE, "copy_propagate", "copy",
00440 0, 0, 0, &WOPT_Enable_Copy_Propagate, NULL },
00441 { OVK_BOOL, OV_VISIBLE, TRUE, "copy_ops", "copy_ops",
00442 0, 0, 0, &WOPT_Enable_Copy_Prop_Bad_Ops, NULL },
00443 { OVK_BOOL, OV_VISIBLE, TRUE, "copy_lno_ops", "copy_lno",
00444 0, 0, 0, &WOPT_Enable_Copy_Prop_LNO_Ops, NULL },
00445 { OVK_BOOL, OV_VISIBLE, TRUE, "copy_into_array", "",
00446 0, 0, 0, &WOPT_Enable_Copy_Prop_Ops_Into_Array,
00447 &WOPT_Enable_Copy_Prop_Ops_Into_Array_Set },
00448 { OVK_BOOL, OV_VISIBLE, TRUE, "lno_copy_propagation", "lno_copy",
00449 0, 0, 0, &WOPT_Enable_LNO_Copy_Propagate, NULL },
00450 { OVK_BOOL, OV_VISIBLE, TRUE, "cr_simp", "cr",
00451 0, 0, 0, &WOPT_Enable_CRSIMP, NULL },
00452 { OVK_BOOL, OV_VISIBLE, TRUE, "fastsimp", "",
00453 0, 0, 0, &WOPT_Enable_Fast_Simp, NULL },
00454 { OVK_BOOL, OV_VISIBLE, TRUE, "fold2const", "fold",
00455 0, 0, 0, &WOPT_Enable_Fold2const, NULL },
00456 { OVK_BOOL, OV_VISIBLE, TRUE, "fold_lda_iload_istore", "fold_lda_iload",
00457 0, 0, 0, &WOPT_Enable_Fold_Lda_Iload_Istore, NULL },
00458 { OVK_BOOL, OV_VISIBLE, TRUE, "dead_code_elim", "dead",
00459 0, 0, 0, &WOPT_Enable_DCE, NULL },
00460 { OVK_BOOL, OV_VISIBLE, TRUE, "dce_aggressive", "dce",
00461 0, 0, 0, &WOPT_Enable_Aggressive_dce, NULL },
00462 { OVK_BOOL, OV_VISIBLE, TRUE, "dcebbs_aggressive", "dcebbs",
00463 0, 0, 0, &WOPT_Enable_Aggressive_dce_for_bbs, NULL },
00464 { OVK_BOOL, OV_VISIBLE, TRUE, "dce_alias", "",
00465 0, 0, 0, &WOPT_Enable_DCE_Alias, NULL },
00466 { OVK_BOOL, OV_VISIBLE, TRUE, "dce_branch", "",
00467 0, 0, 0, &WOPT_Enable_DCE_Branch, NULL },
00468 { OVK_INT32, OV_VISIBLE, TRUE, "dce_branch_pred_limit", "",
00469 5, 0, INT32_MAX, &WOPT_Enable_DCE_Branch_Pred_Limit, NULL },
00470 { OVK_BOOL, OV_VISIBLE, TRUE, "dce_global", "",
00471 0, 0, 0, &WOPT_Enable_DCE_Global, NULL },
00472 { OVK_BOOL, OV_VISIBLE, TRUE, "dce_label", "",
00473 0, 0, 0, &WOPT_Enable_DCE_Label, NULL },
00474 { OVK_BOOL, OV_VISIBLE, TRUE, "du_full", "",
00475 0, 0, 0, &WOPT_Enable_DU_Full, NULL },
00476 { OVK_BOOL, OV_VISIBLE, TRUE, "du_union", "",
00477 0, 0, 0, &WOPT_Enable_DU_Union, NULL },
00478 { OVK_BOOL, OV_VISIBLE, TRUE, "dead_cr", "",
00479 0, 0, 0, &WOPT_Enable_Dead_CR_Fix, NULL },
00480 { OVK_BOOL, OV_VISIBLE, TRUE, "debug_class", "",
00481 0, 0, 0, &WOPT_Enable_Debug_Inconsistent_Ip_Class, NULL },
00482 { OVK_BOOL, OV_VISIBLE, TRUE, "epre", "epre",
00483 0, 0, 0, &WOPT_Enable_Exp_PRE, NULL },
00484 { OVK_INT32, OV_VISIBLE, TRUE, "epre_limit", "",
00485 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Exp_PRE_Limit, NULL },
00486 { OVK_BOOL, OV_VISIBLE, TRUE, "estr_fb_injury", "",
00487 0, 0, 0, &WOPT_Enable_Estr_FB_Injury, &WOPT_Enable_Estr_FB_Injury_Set },
00488 { OVK_BOOL, OV_VISIBLE, TRUE, "goto_conversion", "goto",
00489 0, 0, 0, &WOPT_Enable_Goto, NULL },
00490 { OVK_BOOL, OV_VISIBLE, TRUE, "hoisting", "hoist",
00491 0, 0, 0, &WOPT_Enable_Hoisting, NULL },
00492 { OVK_BOOL, OV_VISIBLE, TRUE, "hoist_ivar", "hoist_ivar",
00493 0, 0, 0, &WOPT_Enable_Ivar_Hoisting, NULL },
00494 { OVK_BOOL, OV_VISIBLE, TRUE, "i8_iv", "i8_iv",
00495 0, 0, 0, &WOPT_Enable_I8_Primary_IV, NULL },
00496 { OVK_BOOL, OV_VISIBLE, TRUE, "addr", "addr",
00497 0, 0, 0, &WOPT_Enable_Improved_Addr_Taken, NULL },
00498 { OVK_BOOL, OV_VISIBLE, TRUE, "icopy_propagate", "icopy",
00499 0, 0, 0, &WOPT_Enable_Input_Prop, NULL },
00500 { OVK_BOOL, OV_VISIBLE, TRUE, "itself_prop", "itself",
00501 0, 0, 0, &WOPT_Enable_Itself_Prop, NULL },
00502 { OVK_BOOL, OV_VISIBLE, TRUE, "ipaa", "ipaa",
00503 0, 0, 0, &WOPT_Enable_IPAA, NULL },
00504 { OVK_NAME, OV_VISIBLE, TRUE, "ipaa_file", "ipaa_f",
00505 0, 0, 0, &Ipa_File_Name, NULL },
00506 { OVK_BOOL, OV_VISIBLE, TRUE, "ivar_common", "ivar",
00507 0, 0, 0, &WOPT_Enable_Ivar_Common, NULL },
00508 { OVK_BOOL, OV_VISIBLE, TRUE, "ivar_pre", "ivar_pre",
00509 0, 0, 0, &WOPT_Enable_Ivar_PRE, NULL },
00510 { OVK_BOOL, OV_VISIBLE, TRUE, "ivincr_cand", "ivincr",
00511 0, 0, 0, &WOPT_Enable_Ivincr_Cand, NULL },
00512 { OVK_BOOL, OV_VISIBLE, TRUE, "iv_elimination", "iv_elim",
00513 0, 0, 0, &WOPT_Enable_IVE, NULL },
00514 { OVK_BOOL, OV_VISIBLE, TRUE, "ive_old", "ive_old",
00515 0, 0, 0, &WOPT_Enable_IVE_Old, NULL },
00516 { OVK_BOOL, OV_VISIBLE, TRUE, "iv_recognition", "iv_recog",
00517 0, 0, 0, &WOPT_Enable_IVR, NULL },
00518 { OVK_INT32, OV_VISIBLE, TRUE, "ivr_expand_limit", "",
00519 1000, 0, INT32_MAX, &WOPT_Enable_IVR_Expand_Limit, NULL },
00520 { OVK_BOOL, OV_VISIBLE, TRUE, "iv_outer_parallel", "",
00521 0, 0, 0, &WOPT_Enable_IVR_Outermost_Loop_Parallel_Region, NULL },
00522 #ifdef KEY
00523 { OVK_INT32, OV_VISIBLE, TRUE, "ivr_limit", "",
00524 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Ivr_Limit, NULL },
00525 { OVK_INT32, OV_VISIBLE, TRUE, "ivr_cand_limit", "",
00526 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Ivr_Cand_Limit, NULL },
00527 #endif
00528 { OVK_INT32, OV_VISIBLE, TRUE, "ldx_ratio_regins", "ldx_ratio",
00529 0, 0, 4096, &WOPT_Ldx_Ratio_RegIns, NULL },
00530 { OVK_BOOL, OV_VISIBLE, TRUE, "ldx", "ldx",
00531 0, 0, 0, &WOPT_Enable_Ldx, NULL },
00532 { OVK_BOOL, OV_VISIBLE, TRUE, "lego_opt", "lego",
00533 0, 0, 0, &WOPT_Enable_Lego_Opt, NULL },
00534 { OVK_BOOL, OV_VISIBLE, TRUE, "lftr_ivar", "lftr_ivar",
00535 0, 0, 0, &WOPT_Enable_LFTR_Ivar, NULL },
00536 { OVK_BOOL, OV_VISIBLE, TRUE, "lftr2", "lftr2",
00537 0, 0, 0, &WOPT_Enable_LFTR2, NULL },
00538 { OVK_INT32, OV_VISIBLE, TRUE, "lftr2_limit", "lftr2_limit",
00539 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_LFTR2_Limit, NULL },
00540 { OVK_BOOL, OV_VISIBLE, TRUE, "lpre", "lpre",
00541 0, 0, 0, &WOPT_Enable_Load_PRE, NULL },
00542 { OVK_INT32, OV_VISIBLE, TRUE, "lpre_limit", "",
00543 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Load_PRE_Limit, NULL },
00544 { OVK_BOOL, OV_VISIBLE, TRUE, "loop_invarexp", "loop_invar",
00545 0, 0, 0, &WOPT_Enable_Loopinvarexp_Str_Reduction, NULL },
00546 { OVK_BOOL, OV_VISIBLE, FALSE, "lower_short_circuit", "",
00547 0, 0, 0, &WOPT_Enable_Lower_Short_Circuit, &WOPT_Enable_Lower_Short_Circuit_Set },
00548 { OVK_BOOL, OV_VISIBLE, TRUE, "minmax", "minmax",
00549 0, 0, 0, &WOPT_Enable_MINMAX, NULL },
00550 { OVK_BOOL, OV_VISIBLE, TRUE, "min_type", "min_type",
00551 0, 0, 0, &WOPT_Enable_Min_Type, NULL },
00552 { OVK_BOOL, OV_VISIBLE, TRUE, "intrinsic", "intrinsic",
00553 0, 0, 0, &WOPT_Enable_Move_Intrinsicop, NULL },
00554 { OVK_BOOL, OV_VISIBLE, TRUE, "mp_varref", "mp_varref",
00555 0, 0, 0, &WOPT_Enable_MP_varref, NULL },
00556 #ifdef CHANGE_MIND_AGAIN
00557 { OVK_BOOL, OV_VISIBLE, TRUE, "mp_const_prop", "mp_const_prop",
00558 0, 0, 0, &WOPT_Enable_MP_Const_Prop, NULL },
00559 #endif
00560 { OVK_BOOL, OV_VISIBLE, TRUE, "new_sr", "",
00561 0, 0, 0, &WOPT_Enable_New_SR, NULL },
00562 { OVK_INT32, OV_VISIBLE, TRUE, "new_sr_limit", "new_sr_limit",
00563 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_New_SR_Limit, NULL },
00564 { OVK_BOOL, OV_VISIBLE, TRUE, "ocopy", "ocopy",
00565 0, 0, 0, &WOPT_Enable_Output_Copy, NULL },
00566 { OVK_INT32, OV_VISIBLE, TRUE, "ocopy_lookup_stmtcnt", "ocopy_lookup",
00567 0, 0, 4096, &WOPT_Enable_Ocopy_Lookupstmt, NULL },
00568 { OVK_BOOL, OV_VISIBLE, TRUE, "parm", "parm",
00569 0, 0, 0, &WOPT_Enable_Parm, NULL },
00570 { OVK_NAME, OV_VISIBLE, TRUE, "process", "process",
00571 0, 0, 0, &WOPT_Enable_Process, NULL },
00572 { OVK_BOOL, OV_VISIBLE, TRUE, "phi_simp", "phi",
00573 0, 0, 0, &WOPT_Enable_Phi_Simp, NULL },
00574 { OVK_BOOL, OV_VISIBLE, TRUE, "prop_ivar", "",
00575 0, 0, 0, &WOPT_Enable_Prop_Ivar, NULL },
00576 { OVK_BOOL, OV_VISIBLE, FALSE, "prop_cse", "",
00577 0, 0, 0, &WOPT_Enable_Prop_CSE, NULL },
00578 { OVK_INT32, OV_VISIBLE, TRUE, "prop_limit", "",
00579 14, 0, INT32_MAX, &WOPT_Enable_Prop_Limit, NULL },
00580 { OVK_INT32, OV_VISIBLE, TRUE, "prop_weight_limit", "",
00581 14, 0, INT32_MAX, &WOPT_Enable_Prop_Weight_Limit, NULL },
00582 #ifdef KEY
00583 { OVK_INT32, OV_VISIBLE, TRUE, "doend_prop_limit", "",
00584 14, 0, INT32_MAX, &WOPT_Enable_Doend_Prop_Limit, NULL },
00585 { OVK_BOOL, OV_VISIBLE, TRUE, "prop_dope", "",
00586 0, 0, 0, &WOPT_Enable_Prop_Dope, NULL },
00587 #endif
00588 { OVK_BOOL, OV_VISIBLE, TRUE, "prune", "",
00589 0, 0, 0, &WOPT_Enable_Prune, NULL },
00590 { OVK_BOOL, OV_VISIBLE, TRUE, "replace_second_iv", "",
00591 0, 0, 0, &WOPT_Enable_Replace_Second_IV, NULL },
00592 { OVK_BOOL, OV_VISIBLE, TRUE, "replace_while_loop_second_iv", "",
00593 0, 0, 0, &WOPT_Enable_Replace_While_Loop_Second_IV, NULL },
00594 { OVK_BOOL, OV_VISIBLE, TRUE, "restricted_map", "",
00595 0, 0, 0, &WOPT_Enable_Restricted_Map, NULL },
00596 { OVK_INT32, OV_VISIBLE, TRUE, "rsv_bits", "rsv",
00597 0, 0, 4096, &WOPT_Enable_Rsv_Bits, NULL },
00598 { OVK_BOOL, OV_VISIBLE, TRUE, "rvi_enable", "rvi",
00599 0, 0, 0, &WOPT_Enable_RVI, NULL },
00600 #if defined(TARG_SL)
00601 { OVK_BOOL, OV_VISIBLE, TRUE, "local_clsc", "",
00602 0, 0, 0, &WOPT_Enable_Local_Clsc, NULL },
00603 #endif
00604 { OVK_BOOL, OV_VISIBLE, TRUE, "rvi1", "",
00605 0, 0, 0, &WOPT_Enable_RVI1, NULL },
00606 { OVK_BOOL, OV_VISIBLE, TRUE, "rvi2", "",
00607 0, 0, 0, &WOPT_Enable_RVI2, NULL },
00608 { OVK_BOOL, OV_VISIBLE, TRUE, "rviistore", "",
00609 0, 0, 0, &WOPT_Enable_Rviistore, NULL },
00610 { OVK_NAME, OV_VISIBLE, TRUE, "rviskip", "",
00611 0, 0, 0, &WOPT_Enable_Rviskip, NULL },
00612 { OVK_BOOL, OV_VISIBLE, TRUE, "rvisplit", "",
00613 0, 0, 0, &WOPT_Enable_Rvisplit, NULL },
00614 { OVK_BOOL, OV_VISIBLE, TRUE, "rvivsym", "",
00615 0, 0, 0, &WOPT_Enable_Rvivsym, NULL },
00616 { OVK_BOOL, OV_VISIBLE, TRUE, "second_order", "second",
00617 0, 0, 0, &WOPT_Enable_Second_Order, NULL },
00618 { OVK_NAME, OV_VISIBLE, TRUE, "skip", "skip",
00619 0, 0, 0, &WOPT_Enable_Skip, NULL },
00620 { OVK_LIST, OV_VISIBLE, TRUE, "skip_after", "skip_a",
00621 0, 0, 0, &WOPT_Skip, NULL },
00622 { OVK_LIST, OV_VISIBLE, TRUE, "skip_before", "skip_b",
00623 0, 0, 0, &WOPT_Skip, NULL },
00624 { OVK_LIST, OV_VISIBLE, TRUE, "skip_equal", "skip_e",
00625 0, 0, 0, &WOPT_Skip, NULL },
00626 { OVK_BOOL, OV_VISIBLE, TRUE, "slt", "slt",
00627 0, 0, 0, &WOPT_Enable_SLT, NULL },
00628 { OVK_BOOL, OV_VISIBLE, TRUE, "small_br_target", "small_br",
00629 0, 0, 0, &WOPT_Enable_Small_Br_Target, NULL },
00630 { OVK_BOOL, OV_VISIBLE, TRUE, "spec_nix_lftr", "",
00631 0, 0, 0, &WOPT_Enable_Speculation_Defeats_LFTR, NULL },
00632 { OVK_BOOL, OV_VISIBLE, TRUE, "sr_use_context", "sr_use_context",
00633 0, 0, 0, &WOPT_Enable_Str_Red_Use_Context, NULL },
00634 { OVK_BOOL, OV_VISIBLE, TRUE, "ssa_minimization", "ssa_min",
00635 0, 0, 0, &WOPT_Enable_SSA_Minimization, NULL },
00636 { OVK_BOOL, OV_VISIBLE, TRUE, "ssapre", "ssapre",
00637 0, 0, 0, &WOPT_Enable_SSA_PRE, NULL },
00638 { OVK_BOOL, OV_VISIBLE, TRUE, "spre", "spre",
00639 0, 0, 0, &WOPT_Enable_Store_PRE, NULL },
00640 { OVK_INT32, OV_VISIBLE, TRUE, "spre_limit", "",
00641 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Store_PRE_Limit, NULL },
00642 { OVK_INT32, OV_VISIBLE, TRUE, "trip_count", "trip",
00643 2, 0, 2, &WOPT_Enable_Generate_Trip_Count, NULL },
00644 { OVK_BOOL, OV_VISIBLE, TRUE, "update_vsym", "update_vsym",
00645 0, 0, 0, &WOPT_Enable_Update_Vsym, NULL },
00646 { OVK_BOOL, OV_VISIBLE, TRUE, "unique_pt_vsym", "",
00647 0, 0, 0, &WOPT_Enable_Unique_Pt_Vsym, NULL },
00648 { OVK_INT32, OV_VISIBLE, TRUE, "value_numbering", "val",
00649 1, 0, 4, &WOPT_Enable_Value_Numbering, NULL },
00650 { OVK_BOOL, OV_VISIBLE, TRUE, "verbose", "v",
00651 0, 0, 0, &WOPT_Enable_Verbose, NULL },
00652 { OVK_INT32, OV_VISIBLE, TRUE, "verify", "verify",
00653 1, 0, 4, &WOPT_Enable_Verify, NULL },
00654 { OVK_BOOL, OV_VISIBLE, TRUE, "while_loop", "while",
00655 0, 0, 0, &WOPT_Enable_While_Loop, NULL },
00656 { OVK_BOOL, OV_VISIBLE, TRUE, "worklist_prune", "worklist_prune",
00657 0, 0, 0, &WOPT_Enable_Worklist_Pruning, NULL },
00658 { OVK_BOOL, OV_VISIBLE, TRUE, "zero_version", "zero",
00659 0, 0, 0, &WOPT_Enable_Zero_Version, NULL },
00660 { OVK_BOOL, OV_VISIBLE, TRUE, "call_zero_version", "call_zero",
00661 0, 0, 0, &WOPT_Enable_Call_Zero_Version, NULL },
00662 { OVK_BOOL, OV_VISIBLE, TRUE, "vsym_unique", "vsym",
00663 0, 0, 0, &WOPT_Enable_Vsym_Unique, NULL },
00664 { OVK_BOOL, OV_VISIBLE, TRUE, "dse_aggressive", "dse",
00665 0, 0, 0, &WOPT_Enable_Dse_Aggressive, NULL },
00666 { OVK_BOOL, OV_VISIBLE, TRUE, "prop_aggressive", "prop",
00667 0, 0, 0, &WOPT_Enable_Prop_Aggressive, NULL },
00668 { OVK_BOOL, OV_VISIBLE, TRUE, "iload_prop", "iload",
00669 0, 0, 0, &WOPT_Enable_Iload_Prop, NULL },
00670 { OVK_BOOL, OV_VISIBLE, TRUE, "vn_full", "vn",
00671 0, 0, 0, &WOPT_Enable_VN_Full, NULL },
00672 { OVK_BOOL, OV_VISIBLE, TRUE, "simp_iload", "",
00673 0, 0, 0, &WOPT_Enable_Simp_Iload, NULL },
00674 { OVK_INT32, OV_VISIBLE, TRUE, "if_conv", "",
00675 2, 0, 2, &WOPT_Enable_Simple_If_Conv, NULL },
00676 { OVK_INT32, OV_VISIBLE, TRUE, "ifconv_limit", "",
00677 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_If_Conv_Limit, NULL },
00678 { OVK_BOOL, OV_VISIBLE, TRUE, "ifconv_for_istore", "",
00679 0, 0, 0, &WOPT_Enable_If_Conv_For_Istore, NULL },
00680 { OVK_BOOL, OV_VISIBLE, TRUE, "tail_recursion", "tail",
00681 0, 0, 0, &WOPT_Enable_Tail_Recur, &WOPT_Enable_Tail_Recur_Set },
00682 { OVK_BOOL, OV_VISIBLE, TRUE, "edge_placement", "edge",
00683 0, 0, 0, &WOPT_Enable_Edge_Placement, NULL },
00684 { OVK_BOOL, OV_VISIBLE, TRUE, "backedge_placement", "backedge_p",
00685 0, 0, 0, &WOPT_Enable_Backedge_Placement, NULL },
00686 { OVK_BOOL, OV_VISIBLE, TRUE, "src_order", "",
00687 0, 0, 0, &WOPT_Enable_Source_Order, NULL },
00688 { OVK_NAME, OV_VISIBLE, TRUE, "set_unique_pt", "",
00689 0, 0, 0, &WOPT_Set_Unique_Pt, NULL },
00690 { OVK_BOOL, OV_VISIBLE, TRUE, "fold_cvt", "",
00691 0, 0, 0, &WOPT_Enable_Cvt_Folding, NULL },
00692 { OVK_BOOL, OV_VISIBLE, TRUE, "local_rvi", "",
00693 0, 0, 0, &WOPT_Enable_Local_Rvi, NULL },
00694 { OVK_BOOL, OV_VISIBLE, TRUE, "strong_barrier", "",
00695 0, 0, 0, &WOPT_Enable_Strong_Barrier, NULL },
00696 { OVK_BOOL, OV_VISIBLE, TRUE, "aggr_invariant", "",
00697 0, 0, 0, &WOPT_Enable_Aggr_Invariant, NULL },
00698 { OVK_INT32, OV_VISIBLE, TRUE, "lrvi_limit", "",
00699 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Local_Rvi_Limit, NULL },
00700 { OVK_BOOL, OV_VISIBLE, TRUE, "shrink", "",
00701 0, 0, 0, &WOPT_Enable_Shrink, NULL },
00702 { OVK_INT32, OV_VISIBLE, TRUE, "extra_rename", "",
00703 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Extra_Rename_Pass, &WOPT_Enable_Extra_Rename_Pass_Set },
00704 { OVK_UINT32, OV_VISIBLE, TRUE, "extra_preopt", "extra_p",
00705 0, 0, UINT32_MAX, &WOPT_Enable_Extra_Preopt_Pass, NULL },
00706 { OVK_BOOL, OV_VISIBLE, TRUE, "bool_simp", "",
00707 0, 0, 0, &WOPT_Enable_Bool_Simp, NULL },
00708 { OVK_BOOL, OV_VISIBLE, FALSE, "fb_lpre", "",
00709 0, 0, 0, &WOPT_Enable_Feedback_LPRE, NULL },
00710 { OVK_BOOL, OV_VISIBLE, FALSE, "fb_epre", "",
00711 0, 0, 0, &WOPT_Enable_Feedback_EPRE, NULL },
00712 { OVK_BOOL, OV_VISIBLE, FALSE, "cfo_display", "",
00713 0, 0, 0, &WOPT_Enable_CFG_Display, NULL },
00714 { OVK_BOOL, OV_VISIBLE, TRUE, "merge_multi_zone", "",
00715 0, 0, 0, &WOPT_Enable_CFG_Merge_Multi_Zone, &WOPT_Enable_CFG_Merge_Multi_Zone_Set },
00716 { OVK_BOOL, OV_VISIBLE, FALSE, "cfo_main", "",
00717 0, 0, 0, &WOPT_Enable_CFG_Opt, NULL },
00718 { OVK_BOOL, OV_VISIBLE, FALSE, "cfo1", "",
00719 0, 0, 0, &WOPT_Enable_CFG_Opt1, NULL },
00720 { OVK_BOOL, OV_VISIBLE, FALSE, "cfo2", "",
00721 0, 0, 0, &WOPT_Enable_CFG_Opt2, NULL },
00722 { OVK_INT32, OV_VISIBLE, TRUE, "min_cfo2_coverage", "",
00723 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_CFG_Opt2_Limit, NULL },
00724 { OVK_BOOL, OV_VISIBLE, FALSE, "cfo3", "",
00725 0, 0, 0, &WOPT_Enable_CFG_Opt3, NULL },
00726 { OVK_BOOL, OV_VISIBLE, FALSE, "cfo4", "",
00727 0, 0, 0, &WOPT_Enable_CFG_Opt4, NULL },
00728 { OVK_INT32, OV_VISIBLE, FALSE, "cfo_limit", "",
00729 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_CFG_Opt_Limit, NULL },
00730 { OVK_INT32, OV_VISIBLE, TRUE, "vn_ivc", "",
00731 1, 0, 8, &WOPT_Enable_Vn_Ivc, NULL },
00732 { OVK_UINT32, OV_VISIBLE, TRUE, "vnfre_after", "vnfre_a",
00733 0, 0, UINT32_MAX, &WOPT_Enable_Vnfre_After, NULL },
00734 { OVK_UINT32, OV_VISIBLE, TRUE, "vnfre_before", "vnfre_b",
00735 UINT32_MAX, 0, UINT32_MAX, &WOPT_Enable_Vnfre_Before, NULL },
00736 { OVK_BOOL, OV_VISIBLE, TRUE, "bit_field", "",
00737 0, 0, 0, &WOPT_Enable_Bits_Load_Store, NULL },
00738 { OVK_BOOL, OV_VISIBLE, TRUE, "epre4ivr", "epre4ivr",
00739 0, 0, 0, &WOPT_Enable_Epre_Before_Ivr, NULL },
00740 { OVK_BOOL, OV_VISIBLE, TRUE, "lpre4ivr", "lpre4ivr",
00741 0, 0, 0, &WOPT_Enable_Lpre_Before_Ivr, NULL },
00742 { OVK_BOOL, OV_VISIBLE, TRUE, "spre4ivr", "spre4ivr",
00743 0, 0, 0, &WOPT_Enable_Spre_Before_Ivr, NULL },
00744 { OVK_BOOL, OV_VISIBLE, TRUE, "bdce4ivr", "bdce4ivr",
00745 0, 0, 0, &WOPT_Enable_Bdce_Before_Ivr, NULL },
00746 { OVK_BOOL, OV_VISIBLE, TRUE, "new_phase_order", "new_phase_order",
00747 TRUE, 0, 0, &WOPT_Enable_New_Phase_Ordering, NULL },
00748 #ifdef KEY
00749 { OVK_BOOL, OV_VISIBLE, TRUE, "mem_opnds", "mem_opnds",
00750 TRUE, 0, 0, &WOPT_Enable_Preserve_Mem_Opnds, NULL },
00751 { OVK_BOOL, OV_VISIBLE, TRUE, "retype_expr", "retype_expr",
00752 TRUE, 0, 0, &WOPT_Enable_Retype_Expr, NULL },
00753 { OVK_INT32, OV_VISIBLE, TRUE, "folded_scalar_limit", "",
00754 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Folded_Scalar_Limit, NULL },
00755 { OVK_INT32, OV_VISIBLE, TRUE, "bdceprop_limit", "bdceprop_limit",
00756 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_Bdceprop_Limit, NULL },
00757 { OVK_BOOL, OV_VISIBLE, TRUE, "warn_uninit", "",
00758 0, 0, 0, &WOPT_Enable_Warn_Uninit, NULL },
00759 { OVK_INT32, OV_VISIBLE, TRUE, "unroll", "unroll",
00760 #ifdef TARG_IA64
00761 INT32_MAX, 0, INT32_MAX, &WOPT_Enable_WN_Unroll, NULL },
00762 #else
00763 2, 0, 2, &WOPT_Enable_WN_Unroll, NULL },
00764 #endif
00765 { OVK_LIST, OV_VISIBLE, TRUE, "unroll_skip_after", "unroll_skip_a",
00766 0, 0, 0, &WOPT_Unroll_Skip, NULL },
00767 { OVK_LIST, OV_VISIBLE, TRUE, "unroll_skip_before", "unroll_skip_b",
00768 0, 0, 0, &WOPT_Unroll_Skip, NULL },
00769 { OVK_LIST, OV_VISIBLE, TRUE, "unroll_skip_equal", "unroll_skip_e",
00770 0, 0, 0, &WOPT_Unroll_Skip, NULL },
00771 { OVK_BOOL, OV_VISIBLE, TRUE, "ip_mod_ref", "ip_mod_ref",
00772 0, 0, 0, &WOPT_Enable_IP_Mod_Ref, NULL },
00773 { OVK_BOOL, OV_VISIBLE, TRUE, "invar_loop_bounds", "invar_loop_bounds",
00774 FALSE, 0, 0, &WOPT_Enable_Invariant_Loop_Bounds, NULL },
00775 { OVK_BOOL, OV_VISIBLE, TRUE, "subword_opt", "subword_opt",
00776 FALSE, 0, 0, &WOPT_Enable_Subword_Opt, NULL },
00777 { OVK_BOOL, OV_VISIBLE, TRUE, "new_vsym", "new_vsym",
00778 FALSE, 0, 0, &WOPT_Enable_New_Vsym_Allocation, NULL },
00779
00780 #endif
00781 { OVK_BOOL, OV_VISIBLE, TRUE, "wovp", "wovp",
00782 0, 0, 0, &WOPT_Enable_WOVP, NULL },
00783 { OVK_BOOL, OV_INTERNAL, TRUE, "trk_ptr", NULL,
00784 0, 0, 0, &WOPT_Enable_Pt_Keep_Track_Ptr, NULL },
00785 { OVK_BOOL, OV_INTERNAL, TRUE, "aggr_trk_ptr", NULL,
00786 0, 0, 0, &WOPT_Enable_Aggr_Pt_Keep_Track_Ptr, NULL },
00787 { OVK_BOOL, OV_INTERNAL, TRUE, "pt_summary", NULL,
00788 0, 0, 0, &WOPT_Enable_Pt_Summary, NULL },
00789 { OVK_BOOL, OV_INTERNAL, TRUE, "loop_multiver", NULL,
00790 0, 0, 0, &WOPT_Enable_Loop_Multiver, NULL },
00791 #ifdef TARG_NVISA
00792 { OVK_BOOL, OV_VISIBLE, TRUE, "estr_outer_loop", "",
00793 0, 0, 0, &WOPT_Enable_Estr_Outer_Loop, NULL },
00794 { OVK_BOOL, OV_VISIBLE, TRUE, "estr_const_opnds", "",
00795 0, 0, 0, &WOPT_Enable_Estr_Const_Opnds, NULL },
00796 { OVK_BOOL, OV_VISIBLE, TRUE, "estr_used_once", "",
00797 0, 0, 0, &WOPT_Enable_Estr_Used_Once, NULL },
00798 { OVK_BOOL, OV_VISIBLE, TRUE, "estr_early_exit", "",
00799 0, 0, 0, &WOPT_Enable_Estr_Early_Exit, NULL },
00800 { OVK_BOOL, OV_VISIBLE, TRUE, "aggr_iload_cse", "",
00801 0, 0, 0, &WOPT_Enable_Aggressive_Iload_CSE, NULL },
00802 #endif
00803 { OVK_COUNT }
00804 };