138fd1498Szrj/* params.def - Run-time parameters. 238fd1498Szrj Copyright (C) 2001-2018 Free Software Foundation, Inc. 338fd1498Szrj Written by Mark Mitchell <mark@codesourcery.com>. 438fd1498Szrj 538fd1498SzrjThis file is part of GCC. 638fd1498Szrj 738fd1498SzrjGCC is free software; you can redistribute it and/or modify it under 838fd1498Szrjthe terms of the GNU General Public License as published by the Free 938fd1498SzrjSoftware Foundation; either version 3, or (at your option) any later 1038fd1498Szrjversion. 1138fd1498Szrj 1238fd1498SzrjGCC is distributed in the hope that it will be useful, but WITHOUT ANY 1338fd1498SzrjWARRANTY; without even the implied warranty of MERCHANTABILITY or 1438fd1498SzrjFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1538fd1498Szrjfor more details. 1638fd1498Szrj 1738fd1498SzrjYou should have received a copy of the GNU General Public License 1838fd1498Szrjalong with GCC; see the file COPYING3. If not see 1938fd1498Szrj<http://www.gnu.org/licenses/>. */ 2038fd1498Szrj 2138fd1498Szrj/* This file contains definitions for language-independent 2238fd1498Szrj parameters. The DEFPARAM macro takes 6 arguments: 2338fd1498Szrj 2438fd1498Szrj - The enumeral corresponding to this parameter. 2538fd1498Szrj 2638fd1498Szrj - The name that can be used to set this parameter using the 2738fd1498Szrj command-line option `--param <name>=<value>'. 2838fd1498Szrj 2938fd1498Szrj - A help string explaining how the parameter is used. 3038fd1498Szrj 3138fd1498Szrj - A default value for the parameter. 3238fd1498Szrj 3338fd1498Szrj - The minimum acceptable value for the parameter. 3438fd1498Szrj 3538fd1498Szrj - The maximum acceptable value for the parameter (if greater than 3638fd1498Szrj the minimum). 3738fd1498Szrj 3838fd1498Szrj The DEFPARAMENUM<N> macro is similar, but instead of the minumum and maximum 3938fd1498Szrj arguments, it contains a list of <N> allowed strings, corresponding to 4038fd1498Szrj integer values 0..<N>-1. Note that the default argument needs to be 4138fd1498Szrj specified as one of the allowed strings, rather than an integer value. 4238fd1498Szrj 4338fd1498Szrj Be sure to add an entry to invoke.texi summarizing the parameter. */ 4438fd1498Szrj 4538fd1498Szrj/* When branch is predicted to be taken with probability lower than this 4638fd1498Szrj threshold (in percent), then it is considered well predictable. */ 4738fd1498SzrjDEFPARAM (PARAM_PREDICTABLE_BRANCH_OUTCOME, 4838fd1498Szrj "predictable-branch-outcome", 4938fd1498Szrj "Maximal estimated outcome of branch considered predictable.", 5038fd1498Szrj 2, 0, 50) 5138fd1498Szrj 5238fd1498SzrjDEFPARAM (PARAM_INLINE_MIN_SPEEDUP, 5338fd1498Szrj "inline-min-speedup", 5438fd1498Szrj "The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto.", 5538fd1498Szrj 15, 0, 0) 5638fd1498Szrj 5738fd1498Szrj/* The single function inlining limit. This is the maximum size 5838fd1498Szrj of a function counted in internal gcc instructions (not in 5938fd1498Szrj real machine instructions) that is eligible for inlining 6038fd1498Szrj by the tree inliner. 6138fd1498Szrj The default value is 400. 6238fd1498Szrj Only functions marked inline (or methods defined in the class 6338fd1498Szrj definition for C++) are affected by this. 6438fd1498Szrj There are more restrictions to inlining: If inlined functions 6538fd1498Szrj call other functions, the already inlined instructions are 6638fd1498Szrj counted and once the recursive inline limit (see 6738fd1498Szrj "max-inline-insns" parameter) is exceeded, the acceptable size 6838fd1498Szrj gets decreased. */ 6938fd1498SzrjDEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE, 7038fd1498Szrj "max-inline-insns-single", 7138fd1498Szrj "The maximum number of instructions in a single function eligible for inlining.", 7238fd1498Szrj 400, 0, 0) 7338fd1498Szrj 7438fd1498Szrj/* The single function inlining limit for functions that are 7538fd1498Szrj inlined by virtue of -finline-functions (-O3). 7638fd1498Szrj This limit should be chosen to be below or equal to the limit 7738fd1498Szrj that is applied to functions marked inlined (or defined in the 7838fd1498Szrj class declaration in C++) given by the "max-inline-insns-single" 7938fd1498Szrj parameter. 8038fd1498Szrj The default value is 30. */ 8138fd1498SzrjDEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO, 8238fd1498Szrj "max-inline-insns-auto", 8338fd1498Szrj "The maximum number of instructions when automatically inlining.", 8438fd1498Szrj 30, 0, 0) 8538fd1498Szrj 8638fd1498SzrjDEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE, 8738fd1498Szrj "max-inline-insns-recursive", 8838fd1498Szrj "The maximum number of instructions inline function can grow to via recursive inlining.", 8938fd1498Szrj 450, 0, 0) 9038fd1498Szrj 9138fd1498SzrjDEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO, 9238fd1498Szrj "max-inline-insns-recursive-auto", 9338fd1498Szrj "The maximum number of instructions non-inline function can grow to via recursive inlining.", 9438fd1498Szrj 450, 0, 0) 9538fd1498Szrj 9638fd1498SzrjDEFPARAM (PARAM_MAX_INLINE_RECURSIVE_DEPTH, 9738fd1498Szrj "max-inline-recursive-depth", 9838fd1498Szrj "The maximum depth of recursive inlining for inline functions.", 9938fd1498Szrj 8, 0, 0) 10038fd1498Szrj 10138fd1498SzrjDEFPARAM (PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO, 10238fd1498Szrj "max-inline-recursive-depth-auto", 10338fd1498Szrj "The maximum depth of recursive inlining for non-inline functions.", 10438fd1498Szrj 8, 0, 0) 10538fd1498Szrj 10638fd1498SzrjDEFPARAM (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY, 10738fd1498Szrj "min-inline-recursive-probability", 10838fd1498Szrj "Inline recursively only when the probability of call being executed exceeds the parameter.", 10938fd1498Szrj 10, 0, 0) 11038fd1498Szrj 11138fd1498Szrj/* Limit of iterations of early inliner. This basically bounds number of 11238fd1498Szrj nested indirect calls early inliner can resolve. Deeper chains are still 11338fd1498Szrj handled by late inlining. */ 11438fd1498SzrjDEFPARAM (PARAM_EARLY_INLINER_MAX_ITERATIONS, 11538fd1498Szrj "max-early-inliner-iterations", 11638fd1498Szrj "The maximum number of nested indirect inlining performed by early inliner.", 11738fd1498Szrj 1, 0, 0) 11838fd1498Szrj 11938fd1498Szrj/* Limit on probability of entry BB. */ 12038fd1498SzrjDEFPARAM (PARAM_COMDAT_SHARING_PROBABILITY, 12138fd1498Szrj "comdat-sharing-probability", 12238fd1498Szrj "Probability that COMDAT function will be shared with different compilation unit.", 12338fd1498Szrj 20, 0, 0) 12438fd1498Szrj 12538fd1498Szrj/* Limit on probability of entry BB. */ 12638fd1498SzrjDEFPARAM (PARAM_PARTIAL_INLINING_ENTRY_PROBABILITY, 12738fd1498Szrj "partial-inlining-entry-probability", 12838fd1498Szrj "Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen.", 12938fd1498Szrj 70, 0, 100) 13038fd1498Szrj 13138fd1498Szrj/* Limit the number of expansions created by the variable expansion 13238fd1498Szrj optimization to avoid register pressure. */ 13338fd1498SzrjDEFPARAM (PARAM_MAX_VARIABLE_EXPANSIONS, 13438fd1498Szrj "max-variable-expansions-in-unroller", 13538fd1498Szrj "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling.", 13638fd1498Szrj 1, 0, 0) 13738fd1498Szrj 13838fd1498Szrj/* Limit loop autovectorization to loops with large enough iteration count. */ 13938fd1498SzrjDEFPARAM (PARAM_MIN_VECT_LOOP_BOUND, 14038fd1498Szrj "min-vect-loop-bound", 14138fd1498Szrj "If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization.", 14238fd1498Szrj 0, 0, 0) 14338fd1498Szrj 14438fd1498Szrj/* The maximum number of instructions to consider when looking for an 14538fd1498Szrj instruction to fill a delay slot. If more than this arbitrary 14638fd1498Szrj number of instructions is searched, the time savings from filling 14738fd1498Szrj the delay slot will be minimal so stop searching. Increasing 14838fd1498Szrj values mean more aggressive optimization, making the compile time 14938fd1498Szrj increase with probably small improvement in executable run time. */ 15038fd1498SzrjDEFPARAM (PARAM_MAX_DELAY_SLOT_INSN_SEARCH, 15138fd1498Szrj "max-delay-slot-insn-search", 15238fd1498Szrj "The maximum number of instructions to consider to fill a delay slot.", 15338fd1498Szrj 100, 0, 0) 15438fd1498Szrj 15538fd1498Szrj/* When trying to fill delay slots, the maximum number of instructions 15638fd1498Szrj to consider when searching for a block with valid live register 15738fd1498Szrj information. Increasing this arbitrarily chosen value means more 15838fd1498Szrj aggressive optimization, increasing the compile time. This 15938fd1498Szrj parameter should be removed when the delay slot code is rewritten 16038fd1498Szrj to maintain the control-flow graph. */ 16138fd1498SzrjDEFPARAM(PARAM_MAX_DELAY_SLOT_LIVE_SEARCH, 16238fd1498Szrj "max-delay-slot-live-search", 16338fd1498Szrj "The maximum number of instructions to consider to find accurate live register information.", 16438fd1498Szrj 333, 0, 0) 16538fd1498Szrj 16638fd1498Szrj/* This parameter limits the number of branch elements that the 16738fd1498Szrj scheduler will track anti-dependencies through without resetting 16838fd1498Szrj the tracking mechanism. Large functions with few calls or barriers 16938fd1498Szrj can generate lists containing many 1000's of dependencies. Generally 17038fd1498Szrj the compiler either uses all available memory, or runs for far too long. */ 17138fd1498SzrjDEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH, 17238fd1498Szrj "max-pending-list-length", 17338fd1498Szrj "The maximum length of scheduling's pending operations list.", 17438fd1498Szrj 32, 0, 0) 17538fd1498Szrj 17638fd1498Szrj/* This parameter limits the number of backtracking attempts when using the 17738fd1498Szrj haifa scheduler for modulo scheduling. */ 17838fd1498SzrjDEFPARAM(PARAM_MAX_MODULO_BACKTRACK_ATTEMPTS, 17938fd1498Szrj "max-modulo-backtrack-attempts", 18038fd1498Szrj "The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop.", 18138fd1498Szrj 40, 0, 0) 18238fd1498Szrj 18338fd1498SzrjDEFPARAM(PARAM_LARGE_FUNCTION_INSNS, 18438fd1498Szrj "large-function-insns", 18538fd1498Szrj "The size of function body to be considered large.", 18638fd1498Szrj 2700, 0, 0) 18738fd1498SzrjDEFPARAM(PARAM_LARGE_FUNCTION_GROWTH, 18838fd1498Szrj "large-function-growth", 18938fd1498Szrj "Maximal growth due to inlining of large function (in percent).", 19038fd1498Szrj 100, 0, 0) 19138fd1498SzrjDEFPARAM(PARAM_LARGE_UNIT_INSNS, 19238fd1498Szrj "large-unit-insns", 19338fd1498Szrj "The size of translation unit to be considered large.", 19438fd1498Szrj 10000, 0, 0) 19538fd1498SzrjDEFPARAM(PARAM_INLINE_UNIT_GROWTH, 19638fd1498Szrj "inline-unit-growth", 19738fd1498Szrj "How much can given compilation unit grow because of the inlining (in percent).", 19838fd1498Szrj 20, 0, 0) 19938fd1498SzrjDEFPARAM(PARAM_IPCP_UNIT_GROWTH, 20038fd1498Szrj "ipcp-unit-growth", 20138fd1498Szrj "How much can given compilation unit grow because of the interprocedural constant propagation (in percent).", 20238fd1498Szrj 10, 0, 0) 20338fd1498SzrjDEFPARAM(PARAM_EARLY_INLINING_INSNS, 20438fd1498Szrj "early-inlining-insns", 20538fd1498Szrj "Maximal estimated growth of function body caused by early inlining of single call.", 20638fd1498Szrj 14, 0, 0) 20738fd1498SzrjDEFPARAM(PARAM_LARGE_STACK_FRAME, 20838fd1498Szrj "large-stack-frame", 20938fd1498Szrj "The size of stack frame to be considered large.", 21038fd1498Szrj 256, 0, 0) 21138fd1498SzrjDEFPARAM(PARAM_STACK_FRAME_GROWTH, 21238fd1498Szrj "large-stack-frame-growth", 21338fd1498Szrj "Maximal stack frame growth due to inlining (in percent).", 21438fd1498Szrj 1000, 0, 0) 21538fd1498Szrj 21638fd1498SzrjDEFPARAM(PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE, 21738fd1498Szrj "stack-clash-protection-guard-size", 21838fd1498Szrj "Size of the stack guard expressed as a power of two.", 21938fd1498Szrj 12, 12, 30) 22038fd1498Szrj 22138fd1498SzrjDEFPARAM(PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL, 22238fd1498Szrj "stack-clash-protection-probe-interval", 22338fd1498Szrj "Interval in which to probe the stack expressed as a power of two.", 22438fd1498Szrj 12, 10, 16) 22538fd1498Szrj 22638fd1498Szrj/* The GCSE optimization will be disabled if it would require 22738fd1498Szrj significantly more memory than this value. */ 22838fd1498SzrjDEFPARAM(PARAM_MAX_GCSE_MEMORY, 22938fd1498Szrj "max-gcse-memory", 23038fd1498Szrj "The maximum amount of memory to be allocated by GCSE.", 23138fd1498Szrj 128 * 1024 * 1024, 0, 0) 23238fd1498Szrj 23338fd1498Szrj/* The GCSE optimization of an expression will avoided if the ratio of 23438fd1498Szrj insertions to deletions is greater than this value. */ 23538fd1498SzrjDEFPARAM(PARAM_MAX_GCSE_INSERTION_RATIO, 23638fd1498Szrj "max-gcse-insertion-ratio", 23738fd1498Szrj "The maximum ratio of insertions to deletions of expressions in GCSE.", 23838fd1498Szrj 20, 0, 0) 23938fd1498Szrj 24038fd1498Szrj/* This is the threshold ratio when to perform partial redundancy 24138fd1498Szrj elimination after reload. We perform partial redundancy elimination 24238fd1498Szrj when the following holds: 24338fd1498Szrj (Redundant load execution count) 24438fd1498Szrj ------------------------------- >= GCSE_AFTER_RELOAD_PARTIAL_FRACTION 24538fd1498Szrj (Added loads execution count) */ 24638fd1498SzrjDEFPARAM(PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION, 24738fd1498Szrj "gcse-after-reload-partial-fraction", 24838fd1498Szrj "The threshold ratio for performing partial redundancy elimination after reload.", 24938fd1498Szrj 3, 0, 0) 25038fd1498Szrj/* This is the threshold ratio of the critical edges execution count compared to 25138fd1498Szrj the redundant loads execution count that permits performing the load 25238fd1498Szrj redundancy elimination in gcse after reload. */ 25338fd1498SzrjDEFPARAM(PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION, 25438fd1498Szrj "gcse-after-reload-critical-fraction", 25538fd1498Szrj "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload.", 25638fd1498Szrj 10, 0, 0) 25738fd1498Szrj 25838fd1498Szrj/* GCSE will use GCSE_COST_DISTANCE_RATION as a scaling factor 25938fd1498Szrj to calculate maximum distance for which an expression is allowed to move 26038fd1498Szrj from its rtx_cost. */ 26138fd1498SzrjDEFPARAM(PARAM_GCSE_COST_DISTANCE_RATIO, 26238fd1498Szrj "gcse-cost-distance-ratio", 26338fd1498Szrj "Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations.", 26438fd1498Szrj 10, 0, 0) 26538fd1498Szrj/* GCSE won't restrict distance for which an expression with rtx_cost greater 26638fd1498Szrj than COSTS_N_INSN(GCSE_UNRESTRICTED_COST) is allowed to move. */ 26738fd1498SzrjDEFPARAM(PARAM_GCSE_UNRESTRICTED_COST, 26838fd1498Szrj "gcse-unrestricted-cost", 26938fd1498Szrj "Cost at which GCSE optimizations will not constraint the distance an expression can travel.", 27038fd1498Szrj 3, 0, 0) 27138fd1498Szrj 27238fd1498Szrj/* How deep from a given basic block the dominator tree should be searched 27338fd1498Szrj for expressions to hoist to the block. The value of 0 will avoid limiting 27438fd1498Szrj the search. */ 27538fd1498SzrjDEFPARAM(PARAM_MAX_HOIST_DEPTH, 27638fd1498Szrj "max-hoist-depth", 27738fd1498Szrj "Maximum depth of search in the dominator tree for expressions to hoist.", 27838fd1498Szrj 30, 0, 0) 27938fd1498Szrj 28038fd1498Szrj 28138fd1498Szrj/* When synthesizing expnonentiation by a real constant operations using square 28238fd1498Szrj roots, this controls how deep sqrt chains we are willing to generate. */ 28338fd1498SzrjDEFPARAM(PARAM_MAX_POW_SQRT_DEPTH, 28438fd1498Szrj "max-pow-sqrt-depth", 28538fd1498Szrj "Maximum depth of sqrt chains to use when synthesizing exponentiation by a real constant.", 28638fd1498Szrj 5, 1, 32) 28738fd1498Szrj 28838fd1498Szrj/* This parameter limits the number of insns in a loop that will be unrolled, 28938fd1498Szrj and by how much the loop is unrolled. 29038fd1498Szrj 29138fd1498Szrj This limit should be at most half of the peeling limits: loop unroller 29238fd1498Szrj decides to not unroll loops that iterate fewer than 2*number of allowed 29338fd1498Szrj unrollings and thus we would have loops that are neither peeled or unrolled 29438fd1498Szrj otherwise. */ 29538fd1498SzrjDEFPARAM(PARAM_MAX_UNROLLED_INSNS, 29638fd1498Szrj "max-unrolled-insns", 29738fd1498Szrj "The maximum number of instructions to consider to unroll in a loop.", 29838fd1498Szrj 200, 0, 0) 29938fd1498Szrj/* This parameter limits how many times the loop is unrolled depending 30038fd1498Szrj on number of insns really executed in each iteration. */ 30138fd1498SzrjDEFPARAM(PARAM_MAX_AVERAGE_UNROLLED_INSNS, 30238fd1498Szrj "max-average-unrolled-insns", 30338fd1498Szrj "The maximum number of instructions to consider to unroll in a loop on average.", 30438fd1498Szrj 80, 0, 0) 30538fd1498Szrj/* The maximum number of unrollings of a single loop. */ 30638fd1498SzrjDEFPARAM(PARAM_MAX_UNROLL_TIMES, 30738fd1498Szrj "max-unroll-times", 30838fd1498Szrj "The maximum number of unrollings of a single loop.", 30938fd1498Szrj 8, 0, 0) 31038fd1498Szrj/* The maximum number of insns of a peeled loop. */ 31138fd1498SzrjDEFPARAM(PARAM_MAX_PEELED_INSNS, 31238fd1498Szrj "max-peeled-insns", 31338fd1498Szrj "The maximum number of insns of a peeled loop.", 31438fd1498Szrj 100, 0, 0) 31538fd1498Szrj/* The maximum number of peelings of a single loop. */ 31638fd1498SzrjDEFPARAM(PARAM_MAX_PEEL_TIMES, 31738fd1498Szrj "max-peel-times", 31838fd1498Szrj "The maximum number of peelings of a single loop.", 31938fd1498Szrj 16, 0, 0) 32038fd1498Szrj/* The maximum number of peelings of a single loop that is peeled completely. */ 32138fd1498SzrjDEFPARAM(PARAM_MAX_PEEL_BRANCHES, 32238fd1498Szrj "max-peel-branches", 32338fd1498Szrj "The maximum number of branches on the path through the peeled sequence.", 32438fd1498Szrj 32, 0, 0) 32538fd1498Szrj/* The maximum number of insns of a peeled loop. */ 32638fd1498SzrjDEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS, 32738fd1498Szrj "max-completely-peeled-insns", 32838fd1498Szrj "The maximum number of insns of a completely peeled loop.", 32938fd1498Szrj 200, 0, 0) 33038fd1498Szrj/* The maximum number of peelings of a single loop that is peeled completely. */ 33138fd1498SzrjDEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES, 33238fd1498Szrj "max-completely-peel-times", 33338fd1498Szrj "The maximum number of peelings of a single loop that is peeled completely.", 33438fd1498Szrj 16, 0, 0) 33538fd1498Szrj/* The maximum number of insns of a peeled loop that rolls only once. */ 33638fd1498SzrjDEFPARAM(PARAM_MAX_ONCE_PEELED_INSNS, 33738fd1498Szrj "max-once-peeled-insns", 33838fd1498Szrj "The maximum number of insns of a peeled loop that rolls only once.", 33938fd1498Szrj 400, 0, 0) 34038fd1498Szrj/* The maximum depth of a loop nest we completely peel. */ 34138fd1498SzrjDEFPARAM(PARAM_MAX_UNROLL_ITERATIONS, 34238fd1498Szrj "max-completely-peel-loop-nest-depth", 34338fd1498Szrj "The maximum depth of a loop nest we completely peel.", 34438fd1498Szrj 8, 0, 0) 34538fd1498Szrj 34638fd1498Szrj/* The maximum number of insns of an unswitched loop. */ 34738fd1498SzrjDEFPARAM(PARAM_MAX_UNSWITCH_INSNS, 34838fd1498Szrj "max-unswitch-insns", 34938fd1498Szrj "The maximum number of insns of an unswitched loop.", 35038fd1498Szrj 50, 0, 0) 35138fd1498Szrj/* The maximum level of recursion in unswitch_single_loop. */ 35238fd1498SzrjDEFPARAM(PARAM_MAX_UNSWITCH_LEVEL, 35338fd1498Szrj "max-unswitch-level", 35438fd1498Szrj "The maximum number of unswitchings in a single loop.", 35538fd1498Szrj 3, 0, 0) 35638fd1498Szrj 35738fd1498Szrj/* The maximum number of insns in loop header duplicated by the copy loop 35838fd1498Szrj headers pass. */ 35938fd1498SzrjDEFPARAM(PARAM_MAX_LOOP_HEADER_INSNS, 36038fd1498Szrj "max-loop-header-insns", 36138fd1498Szrj "The maximum number of insns in loop header duplicated by the copy loop headers pass.", 36238fd1498Szrj 20, 0, 0) 36338fd1498Szrj 36438fd1498Szrj/* The maximum number of iterations of a loop the brute force algorithm 36538fd1498Szrj for analysis of # of iterations of the loop tries to evaluate. */ 36638fd1498SzrjDEFPARAM(PARAM_MAX_ITERATIONS_TO_TRACK, 36738fd1498Szrj "max-iterations-to-track", 36838fd1498Szrj "Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates.", 36938fd1498Szrj 1000, 0, 0) 37038fd1498Szrj/* A cutoff to avoid costly computations of the number of iterations in 37138fd1498Szrj the doloop transformation. */ 37238fd1498SzrjDEFPARAM(PARAM_MAX_ITERATIONS_COMPUTATION_COST, 37338fd1498Szrj "max-iterations-computation-cost", 37438fd1498Szrj "Bound on the cost of an expression to compute the number of iterations.", 37538fd1498Szrj 10, 0, 0) 37638fd1498Szrj 37738fd1498Szrj/* This parameter is used to tune SMS MAX II calculations. */ 37838fd1498SzrjDEFPARAM(PARAM_SMS_MAX_II_FACTOR, 37938fd1498Szrj "sms-max-ii-factor", 38038fd1498Szrj "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop.", 38138fd1498Szrj 100, 0, 0) 38238fd1498Szrj/* The minimum value of stage count that swing modulo scheduler will generate. */ 38338fd1498SzrjDEFPARAM(PARAM_SMS_MIN_SC, 38438fd1498Szrj "sms-min-sc", 38538fd1498Szrj "The minimum value of stage count that swing modulo scheduler will generate.", 38638fd1498Szrj 2, 1, 1) 38738fd1498SzrjDEFPARAM(PARAM_SMS_DFA_HISTORY, 38838fd1498Szrj "sms-dfa-history", 38938fd1498Szrj "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.", 39038fd1498Szrj 0, 0, 0) 39138fd1498SzrjDEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD, 39238fd1498Szrj "sms-loop-average-count-threshold", 39338fd1498Szrj "A threshold on the average loop count considered by the swing modulo scheduler.", 39438fd1498Szrj 0, 0, 0) 39538fd1498Szrj 39638fd1498SzrjDEFPARAM(HOT_BB_COUNT_WS_PERMILLE, 39738fd1498Szrj "hot-bb-count-ws-permille", 39838fd1498Szrj "A basic block profile count is considered hot if it contributes to " 39938fd1498Szrj "the given permillage of the entire profiled execution.", 40038fd1498Szrj 999, 0, 1000) 40138fd1498SzrjDEFPARAM(HOT_BB_FREQUENCY_FRACTION, 40238fd1498Szrj "hot-bb-frequency-fraction", 40338fd1498Szrj "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot.", 40438fd1498Szrj 1000, 0, 0) 40538fd1498Szrj 40638fd1498SzrjDEFPARAM(UNLIKELY_BB_COUNT_FRACTION, 40738fd1498Szrj "unlikely-bb-count-fraction", 40838fd1498Szrj "The minimum fraction of profile runs a given basic block execution count must be not to be considered unlikely.", 40938fd1498Szrj 20, 1, 10000) 41038fd1498Szrj 41138fd1498SzrjDEFPARAM (PARAM_ALIGN_THRESHOLD, 41238fd1498Szrj "align-threshold", 41338fd1498Szrj "Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment.", 41438fd1498Szrj 100, 1, 0) 41538fd1498Szrj 41638fd1498SzrjDEFPARAM (PARAM_ALIGN_LOOP_ITERATIONS, 41738fd1498Szrj "align-loop-iterations", 41838fd1498Szrj "Loops iterating at least selected number of iterations will get loop alignment..", 41938fd1498Szrj 4, 0, 0) 42038fd1498Szrj 42138fd1498Szrj/* For guessed profiles, the loops having unknown number of iterations 42238fd1498Szrj are predicted to iterate relatively few (10) times at average. 42338fd1498Szrj For functions containing one loop with large known number of iterations 42438fd1498Szrj and other loops having unbounded loops we would end up predicting all 42538fd1498Szrj the other loops cold that is not usually the case. So we need to artificially 42638fd1498Szrj flatten the profile. 42738fd1498Szrj 42838fd1498Szrj We need to cut the maximal predicted iterations to large enough iterations 42938fd1498Szrj so the loop appears important, but safely within maximum hotness 43038fd1498Szrj range. */ 43138fd1498Szrj 43238fd1498SzrjDEFPARAM(PARAM_MAX_PREDICTED_ITERATIONS, 43338fd1498Szrj "max-predicted-iterations", 43438fd1498Szrj "The maximum number of loop iterations we predict statically.", 43538fd1498Szrj 100, 0, 0) 43638fd1498Szrj 43738fd1498Szrj/* This parameter controls the probability of builtin_expect. The default 43838fd1498Szrj value is 90%. This empirical value is obtained through the weighted 43938fd1498Szrj probability of FDO counters (with the FDO count value as the weight) 44038fd1498Szrj in some real world programs: 44138fd1498Szrj (1) Google performance test benchmarks: the probability is 0.9081. 44238fd1498Szrj (2) Linux 3.3 kernel running Google search workload: the probability 44338fd1498Szrj is 0.8717. */ 44438fd1498Szrj 44538fd1498SzrjDEFPARAM(BUILTIN_EXPECT_PROBABILITY, 44638fd1498Szrj "builtin-expect-probability", 44738fd1498Szrj "Set the estimated probability in percentage for builtin expect. The default value is 90% probability.", 44838fd1498Szrj 90, 0, 100) 44938fd1498SzrjDEFPARAM(TRACER_DYNAMIC_COVERAGE_FEEDBACK, 45038fd1498Szrj "tracer-dynamic-coverage-feedback", 45138fd1498Szrj "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available.", 45238fd1498Szrj 95, 0, 100) 45338fd1498SzrjDEFPARAM(TRACER_DYNAMIC_COVERAGE, 45438fd1498Szrj "tracer-dynamic-coverage", 45538fd1498Szrj "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available.", 45638fd1498Szrj 75, 0, 100) 45738fd1498SzrjDEFPARAM(TRACER_MAX_CODE_GROWTH, 45838fd1498Szrj "tracer-max-code-growth", 45938fd1498Szrj "Maximal code growth caused by tail duplication (in percent).", 46038fd1498Szrj 100, 0, 0) 46138fd1498SzrjDEFPARAM(TRACER_MIN_BRANCH_RATIO, 46238fd1498Szrj "tracer-min-branch-ratio", 46338fd1498Szrj "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent).", 46438fd1498Szrj 10, 0, 100) 46538fd1498SzrjDEFPARAM(TRACER_MIN_BRANCH_PROBABILITY_FEEDBACK, 46638fd1498Szrj "tracer-min-branch-probability-feedback", 46738fd1498Szrj "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available.", 46838fd1498Szrj 80, 0, 100) 46938fd1498SzrjDEFPARAM(TRACER_MIN_BRANCH_PROBABILITY, 47038fd1498Szrj "tracer-min-branch-probability", 47138fd1498Szrj "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available.", 47238fd1498Szrj 50, 0, 100) 47338fd1498Szrj 47438fd1498Szrj/* The maximum number of incoming edges to consider for crossjumping. */ 47538fd1498SzrjDEFPARAM(PARAM_MAX_CROSSJUMP_EDGES, 47638fd1498Szrj "max-crossjump-edges", 47738fd1498Szrj "The maximum number of incoming edges to consider for crossjumping.", 47838fd1498Szrj 100, 0, 0) 47938fd1498Szrj 48038fd1498Szrj/* The minimum number of matching instructions to consider for crossjumping. */ 48138fd1498SzrjDEFPARAM(PARAM_MIN_CROSSJUMP_INSNS, 48238fd1498Szrj "min-crossjump-insns", 48338fd1498Szrj "The minimum number of matching instructions to consider for crossjumping.", 48438fd1498Szrj 5, 1, 0) 48538fd1498Szrj 48638fd1498Szrj/* The maximum number expansion factor when copying basic blocks. */ 48738fd1498SzrjDEFPARAM(PARAM_MAX_GROW_COPY_BB_INSNS, 48838fd1498Szrj "max-grow-copy-bb-insns", 48938fd1498Szrj "The maximum expansion factor when copying basic blocks.", 49038fd1498Szrj 8, 0, 0) 49138fd1498Szrj 49238fd1498Szrj/* The maximum number of insns to duplicate when unfactoring computed gotos. */ 49338fd1498SzrjDEFPARAM(PARAM_MAX_GOTO_DUPLICATION_INSNS, 49438fd1498Szrj "max-goto-duplication-insns", 49538fd1498Szrj "The maximum number of insns to duplicate when unfactoring computed gotos.", 49638fd1498Szrj 8, 0, 0) 49738fd1498Szrj 49838fd1498Szrj/* The maximum length of path considered in cse. */ 49938fd1498SzrjDEFPARAM(PARAM_MAX_CSE_PATH_LENGTH, 50038fd1498Szrj "max-cse-path-length", 50138fd1498Szrj "The maximum length of path considered in cse.", 50238fd1498Szrj 10, 1, 0) 50338fd1498SzrjDEFPARAM(PARAM_MAX_CSE_INSNS, 50438fd1498Szrj "max-cse-insns", 50538fd1498Szrj "The maximum instructions CSE process before flushing.", 50638fd1498Szrj 1000, 0, 0) 50738fd1498Szrj 50838fd1498Szrj/* The cost of expression in loop invariant motion that is considered 50938fd1498Szrj expensive. */ 51038fd1498SzrjDEFPARAM(PARAM_LIM_EXPENSIVE, 51138fd1498Szrj "lim-expensive", 51238fd1498Szrj "The minimum cost of an expensive expression in the loop invariant motion.", 51338fd1498Szrj 20, 0, 0) 51438fd1498Szrj 51538fd1498Szrj/* Bound on number of candidates for induction variables below that 51638fd1498Szrj all candidates are considered for each use in induction variable 51738fd1498Szrj optimizations. */ 51838fd1498Szrj 51938fd1498SzrjDEFPARAM(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND, 52038fd1498Szrj "iv-consider-all-candidates-bound", 52138fd1498Szrj "Bound on number of candidates below that all candidates are considered in iv optimizations.", 52238fd1498Szrj 40, 0, 0) 52338fd1498Szrj 52438fd1498Szrj/* The induction variable optimizations give up on loops that contain more 52538fd1498Szrj induction variable uses. */ 52638fd1498Szrj 52738fd1498SzrjDEFPARAM(PARAM_IV_MAX_CONSIDERED_USES, 52838fd1498Szrj "iv-max-considered-uses", 52938fd1498Szrj "Bound on number of iv uses in loop optimized in iv optimizations.", 53038fd1498Szrj 250, 0, 0) 53138fd1498Szrj 53238fd1498Szrj/* If there are at most this number of ivs in the set, try removing unnecessary 53338fd1498Szrj ivs from the set always. */ 53438fd1498Szrj 53538fd1498SzrjDEFPARAM(PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND, 53638fd1498Szrj "iv-always-prune-cand-set-bound", 53738fd1498Szrj "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization.", 53838fd1498Szrj 10, 0, 0) 53938fd1498Szrj 54038fd1498SzrjDEFPARAM(PARAM_AVG_LOOP_NITER, 54138fd1498Szrj "avg-loop-niter", 54238fd1498Szrj "Average number of iterations of a loop.", 54338fd1498Szrj 10, 1, 0) 54438fd1498Szrj 54538fd1498SzrjDEFPARAM(PARAM_DSE_MAX_OBJECT_SIZE, 54638fd1498Szrj "dse-max-object-size", 54738fd1498Szrj "Maximum size (in bytes) of objects tracked bytewise by dead store elimination.", 54838fd1498Szrj 256, 0, 0) 54938fd1498Szrj 55038fd1498SzrjDEFPARAM(PARAM_SCEV_MAX_EXPR_SIZE, 55138fd1498Szrj "scev-max-expr-size", 55238fd1498Szrj "Bound on size of expressions used in the scalar evolutions analyzer.", 55338fd1498Szrj 100, 0, 0) 55438fd1498Szrj 55538fd1498SzrjDEFPARAM(PARAM_SCEV_MAX_EXPR_COMPLEXITY, 55638fd1498Szrj "scev-max-expr-complexity", 55738fd1498Szrj "Bound on the complexity of the expressions in the scalar evolutions analyzer.", 55838fd1498Szrj 10, 0, 0) 55938fd1498Szrj 56038fd1498SzrjDEFPARAM (PARAM_MAX_TREE_IF_CONVERSION_PHI_ARGS, 56138fd1498Szrj "max-tree-if-conversion-phi-args", 56238fd1498Szrj "Maximum number of arguments in a PHI supported by TREE if-conversion " 56338fd1498Szrj "unless the loop is marked with simd pragma.", 56438fd1498Szrj 4, 2, 0) 56538fd1498Szrj 56638fd1498SzrjDEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS, 56738fd1498Szrj "vect-max-version-for-alignment-checks", 56838fd1498Szrj "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check.", 56938fd1498Szrj 6, 0, 0) 57038fd1498Szrj 57138fd1498SzrjDEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS, 57238fd1498Szrj "vect-max-version-for-alias-checks", 57338fd1498Szrj "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check.", 57438fd1498Szrj 10, 0, 0) 57538fd1498Szrj 57638fd1498SzrjDEFPARAM(PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT, 57738fd1498Szrj "vect-max-peeling-for-alignment", 57838fd1498Szrj "Maximum number of loop peels to enhance alignment of data references in a loop.", 57938fd1498Szrj -1, -1, 64) 58038fd1498Szrj 58138fd1498SzrjDEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS, 58238fd1498Szrj "max-cselib-memory-locations", 58338fd1498Szrj "The maximum memory locations recorded by cselib.", 58438fd1498Szrj 500, 0, 0) 58538fd1498Szrj 58638fd1498Szrj#ifdef ENABLE_GC_ALWAYS_COLLECT 58738fd1498Szrj# define GGC_MIN_EXPAND_DEFAULT 0 58838fd1498Szrj# define GGC_MIN_HEAPSIZE_DEFAULT 0 58938fd1498Szrj#else 59038fd1498Szrj# define GGC_MIN_EXPAND_DEFAULT 30 59138fd1498Szrj# define GGC_MIN_HEAPSIZE_DEFAULT 4096 59238fd1498Szrj#endif 59338fd1498Szrj 59438fd1498SzrjDEFPARAM(GGC_MIN_EXPAND, 59538fd1498Szrj "ggc-min-expand", 59638fd1498Szrj "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap.", 59738fd1498Szrj GGC_MIN_EXPAND_DEFAULT, 0, 0) 59838fd1498Szrj 59938fd1498SzrjDEFPARAM(GGC_MIN_HEAPSIZE, 60038fd1498Szrj "ggc-min-heapsize", 60138fd1498Szrj "Minimum heap size before we start collecting garbage, in kilobytes.", 60238fd1498Szrj GGC_MIN_HEAPSIZE_DEFAULT, 0, 0) 60338fd1498Szrj 60438fd1498Szrj#undef GGC_MIN_EXPAND_DEFAULT 60538fd1498Szrj#undef GGC_MIN_HEAPSIZE_DEFAULT 60638fd1498Szrj 60738fd1498SzrjDEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS, 60838fd1498Szrj "max-reload-search-insns", 60938fd1498Szrj "The maximum number of instructions to search backward when looking for equivalent reload.", 61038fd1498Szrj 100, 0, 0) 61138fd1498Szrj 61238fd1498SzrjDEFPARAM(PARAM_SINK_FREQUENCY_THRESHOLD, 61338fd1498Szrj "sink-frequency-threshold", 61438fd1498Szrj "Target block's relative execution frequency (as a percentage) required to sink a statement.", 61538fd1498Szrj 75, 0, 100) 61638fd1498Szrj 61738fd1498SzrjDEFPARAM(PARAM_MAX_SCHED_REGION_BLOCKS, 61838fd1498Szrj "max-sched-region-blocks", 61938fd1498Szrj "The maximum number of blocks in a region to be considered for interblock scheduling.", 62038fd1498Szrj 10, 0, 0) 62138fd1498Szrj 62238fd1498SzrjDEFPARAM(PARAM_MAX_SCHED_REGION_INSNS, 62338fd1498Szrj "max-sched-region-insns", 62438fd1498Szrj "The maximum number of insns in a region to be considered for interblock scheduling.", 62538fd1498Szrj 100, 0, 0) 62638fd1498Szrj 62738fd1498SzrjDEFPARAM(PARAM_MAX_PIPELINE_REGION_BLOCKS, 62838fd1498Szrj "max-pipeline-region-blocks", 62938fd1498Szrj "The maximum number of blocks in a region to be considered for interblock scheduling.", 63038fd1498Szrj 15, 0, 0) 63138fd1498Szrj 63238fd1498SzrjDEFPARAM(PARAM_MAX_PIPELINE_REGION_INSNS, 63338fd1498Szrj "max-pipeline-region-insns", 63438fd1498Szrj "The maximum number of insns in a region to be considered for interblock scheduling.", 63538fd1498Szrj 200, 0, 0) 63638fd1498Szrj 63738fd1498SzrjDEFPARAM(PARAM_MIN_SPEC_PROB, 63838fd1498Szrj "min-spec-prob", 63938fd1498Szrj "The minimum probability of reaching a source block for interblock speculative scheduling.", 64038fd1498Szrj 40, 0, 0) 64138fd1498Szrj 64238fd1498SzrjDEFPARAM(PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS, 64338fd1498Szrj "max-sched-extend-regions-iters", 64438fd1498Szrj "The maximum number of iterations through CFG to extend regions.", 64538fd1498Szrj 0, 0, 0) 64638fd1498Szrj 64738fd1498SzrjDEFPARAM(PARAM_MAX_SCHED_INSN_CONFLICT_DELAY, 64838fd1498Szrj "max-sched-insn-conflict-delay", 64938fd1498Szrj "The maximum conflict delay for an insn to be considered for speculative motion.", 65038fd1498Szrj 3, 1, 10) 65138fd1498Szrj 65238fd1498SzrjDEFPARAM(PARAM_SCHED_SPEC_PROB_CUTOFF, 65338fd1498Szrj "sched-spec-prob-cutoff", 65438fd1498Szrj "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled.", 65538fd1498Szrj 40, 0, 100) 65638fd1498Szrj 65738fd1498SzrjDEFPARAM(PARAM_SCHED_STATE_EDGE_PROB_CUTOFF, 65838fd1498Szrj "sched-state-edge-prob-cutoff", 65938fd1498Szrj "The minimum probability an edge must have for the scheduler to save its state across it.", 66038fd1498Szrj 10, 0, 100) 66138fd1498Szrj 66238fd1498SzrjDEFPARAM(PARAM_SELSCHED_MAX_LOOKAHEAD, 66338fd1498Szrj "selsched-max-lookahead", 66438fd1498Szrj "The maximum size of the lookahead window of selective scheduling.", 66538fd1498Szrj 50, 0, 0) 66638fd1498Szrj 66738fd1498SzrjDEFPARAM(PARAM_SELSCHED_MAX_SCHED_TIMES, 66838fd1498Szrj "selsched-max-sched-times", 66938fd1498Szrj "Maximum number of times that an insn could be scheduled.", 67038fd1498Szrj 2, 1, 0) 67138fd1498Szrj 67238fd1498SzrjDEFPARAM(PARAM_SELSCHED_INSNS_TO_RENAME, 67338fd1498Szrj "selsched-insns-to-rename", 67438fd1498Szrj "Maximum number of instructions in the ready list that are considered eligible for renaming.", 67538fd1498Szrj 2, 0, 0) 67638fd1498Szrj 67738fd1498SzrjDEFPARAM (PARAM_SCHED_MEM_TRUE_DEP_COST, 67838fd1498Szrj "sched-mem-true-dep-cost", 67938fd1498Szrj "Minimal distance between possibly conflicting store and load.", 68038fd1498Szrj 1, 0, 0) 68138fd1498Szrj 68238fd1498SzrjDEFPARAM (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH, 68338fd1498Szrj "sched-autopref-queue-depth", 68438fd1498Szrj "Hardware autoprefetcher scheduler model control flag. Number of lookahead cycles the model looks into; at '0' only enable instruction sorting heuristic. Disabled by default.", 68538fd1498Szrj -1, 0, 0) 68638fd1498Szrj 68738fd1498SzrjDEFPARAM(PARAM_MAX_LAST_VALUE_RTL, 68838fd1498Szrj "max-last-value-rtl", 68938fd1498Szrj "The maximum number of RTL nodes that can be recorded as combiner's last value.", 69038fd1498Szrj 10000, 0, 0) 69138fd1498Szrj 69238fd1498SzrjDEFPARAM(PARAM_MAX_COMBINE_INSNS, 69338fd1498Szrj "max-combine-insns", 69438fd1498Szrj "The maximum number of insns combine tries to combine.", 69538fd1498Szrj 4, 2, 4) 69638fd1498Szrj 69738fd1498Szrj/* INTEGER_CST nodes are shared for values [{-1,0} .. N) for 69838fd1498Szrj {signed,unsigned} integral types. This determines N. 69938fd1498Szrj Experimentation shows 251 to be a good value that generates the 70038fd1498Szrj least amount of garbage for allocating the TREE_VEC storage. */ 70138fd1498SzrjDEFPARAM (PARAM_INTEGER_SHARE_LIMIT, 70238fd1498Szrj "integer-share-limit", 70338fd1498Szrj "The upper bound for sharing integer constants.", 70438fd1498Szrj 251, 2, 2) 70538fd1498Szrj 70638fd1498SzrjDEFPARAM (PARAM_SSP_BUFFER_SIZE, 70738fd1498Szrj "ssp-buffer-size", 70838fd1498Szrj "The lower bound for a buffer to be considered for stack smashing protection.", 70938fd1498Szrj 8, 1, 0) 71038fd1498Szrj 71138fd1498SzrjDEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING, 71238fd1498Szrj "min-size-for-stack-sharing", 71338fd1498Szrj "The minimum size of variables taking part in stack slot sharing " 71438fd1498Szrj "when not optimizing.", 71538fd1498Szrj 32, 0, 0) 71638fd1498Szrj 71738fd1498Szrj/* When we thread through a block we have to make copies of the 71838fd1498Szrj statements within the block. Clearly for large blocks the code 71938fd1498Szrj duplication is bad. 72038fd1498Szrj 72138fd1498Szrj PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS specifies the maximum number 72238fd1498Szrj of statements and PHI nodes allowed in a block which is going to 72338fd1498Szrj be duplicated for thread jumping purposes. 72438fd1498Szrj 72538fd1498Szrj Some simple analysis showed that more than 99% of the jump 72638fd1498Szrj threading opportunities are for blocks with less than 15 72738fd1498Szrj statements. So we can get the benefits of jump threading 72838fd1498Szrj without excessive code bloat for pathological cases with the 72938fd1498Szrj throttle set at 15 statements. */ 73038fd1498SzrjDEFPARAM (PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS, 73138fd1498Szrj "max-jump-thread-duplication-stmts", 73238fd1498Szrj "Maximum number of statements allowed in a block that needs to be duplicated when threading jumps.", 73338fd1498Szrj 15, 0, 0) 73438fd1498Szrj 73538fd1498Szrj/* This is the maximum number of fields a variable may have before the pointer analysis machinery 73638fd1498Szrj will stop trying to treat it in a field-sensitive manner. 73738fd1498Szrj There are programs out there with thousands of fields per structure, and handling them 73838fd1498Szrj field-sensitively is not worth the cost. */ 73938fd1498SzrjDEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE, 74038fd1498Szrj "max-fields-for-field-sensitive", 74138fd1498Szrj "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable.", 74238fd1498Szrj 0, 0, 0) 74338fd1498Szrj 74438fd1498SzrjDEFPARAM(PARAM_MAX_SCHED_READY_INSNS, 74538fd1498Szrj "max-sched-ready-insns", 74638fd1498Szrj "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass.", 74738fd1498Szrj 100, 1, 0) 74838fd1498Szrj 74938fd1498Szrj/* This is the maximum number of active local stores RTL DSE will consider. */ 75038fd1498SzrjDEFPARAM (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES, 75138fd1498Szrj "max-dse-active-local-stores", 75238fd1498Szrj "Maximum number of active local stores in RTL dead store elimination.", 75338fd1498Szrj 5000, 0, 0) 75438fd1498Szrj 75538fd1498Szrj/* Prefetching and cache-optimizations related parameters. Default values are 75638fd1498Szrj usually set by machine description. */ 75738fd1498Szrj 75838fd1498Szrj/* The number of insns executed before prefetch is completed. */ 75938fd1498Szrj 76038fd1498SzrjDEFPARAM (PARAM_PREFETCH_LATENCY, 76138fd1498Szrj "prefetch-latency", 76238fd1498Szrj "The number of insns executed before prefetch is completed.", 76338fd1498Szrj 200, 0, 0) 76438fd1498Szrj 76538fd1498Szrj/* The number of prefetches that can run at the same time. */ 76638fd1498Szrj 76738fd1498SzrjDEFPARAM (PARAM_SIMULTANEOUS_PREFETCHES, 76838fd1498Szrj "simultaneous-prefetches", 76938fd1498Szrj "The number of prefetches that can run at the same time.", 77038fd1498Szrj 3, 0, 0) 77138fd1498Szrj 77238fd1498Szrj/* The size of L1 cache in kB. */ 77338fd1498Szrj 77438fd1498SzrjDEFPARAM (PARAM_L1_CACHE_SIZE, 77538fd1498Szrj "l1-cache-size", 77638fd1498Szrj "The size of L1 cache.", 77738fd1498Szrj 64, 0, 0) 77838fd1498Szrj 77938fd1498Szrj/* The size of L1 cache line in bytes. */ 78038fd1498Szrj 78138fd1498SzrjDEFPARAM (PARAM_L1_CACHE_LINE_SIZE, 78238fd1498Szrj "l1-cache-line-size", 78338fd1498Szrj "The size of L1 cache line.", 78438fd1498Szrj 32, 0, 0) 78538fd1498Szrj 78638fd1498Szrj/* The size of L2 cache in kB. */ 78738fd1498Szrj 78838fd1498SzrjDEFPARAM (PARAM_L2_CACHE_SIZE, 78938fd1498Szrj "l2-cache-size", 79038fd1498Szrj "The size of L2 cache.", 79138fd1498Szrj 512, 0, 0) 79238fd1498Szrj 79338fd1498Szrj/* Maximum number of statements in loop nest for loop interchange. */ 79438fd1498Szrj 79538fd1498SzrjDEFPARAM (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS, 79638fd1498Szrj "loop-interchange-max-num-stmts", 79738fd1498Szrj "The maximum number of stmts in loop nest for loop interchange.", 79838fd1498Szrj 64, 0, 0) 79938fd1498Szrj 80038fd1498Szrj/* Minimum stride ratio for loop interchange to be profitiable. */ 80138fd1498Szrj 80238fd1498SzrjDEFPARAM (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO, 80338fd1498Szrj "loop-interchange-stride-ratio", 80438fd1498Szrj "The minimum stride ratio for loop interchange to be profitable", 80538fd1498Szrj 2, 0, 0) 80638fd1498Szrj 80738fd1498Szrj/* Whether we should use canonical types rather than deep "structural" 80838fd1498Szrj type checking. Setting this value to 1 (the default) improves 80938fd1498Szrj compilation performance in the C++ and Objective-C++ front end; 81038fd1498Szrj this value should only be set to zero to work around bugs in the 81138fd1498Szrj canonical type system by disabling it. */ 81238fd1498Szrj 81338fd1498SzrjDEFPARAM (PARAM_USE_CANONICAL_TYPES, 81438fd1498Szrj "use-canonical-types", 81538fd1498Szrj "Whether to use canonical types.", 81638fd1498Szrj 1, 0, 1) 81738fd1498Szrj 81838fd1498SzrjDEFPARAM (PARAM_MAX_PARTIAL_ANTIC_LENGTH, 81938fd1498Szrj "max-partial-antic-length", 82038fd1498Szrj "Maximum length of partial antic set when performing tree pre optimization.", 82138fd1498Szrj 100, 0, 0) 82238fd1498Szrj 82338fd1498Szrj/* The following is used as a stop-gap limit for cases where really huge 82438fd1498Szrj SCCs blow up memory and compile-time use too much. If we hit this limit, 82538fd1498Szrj SCCVN and such FRE and PRE will be not done at all for the current 82638fd1498Szrj function. */ 82738fd1498Szrj 82838fd1498SzrjDEFPARAM (PARAM_SCCVN_MAX_SCC_SIZE, 82938fd1498Szrj "sccvn-max-scc-size", 83038fd1498Szrj "Maximum size of a SCC before SCCVN stops processing a function.", 83138fd1498Szrj 10000, 10, 0) 83238fd1498Szrj 83338fd1498Szrj/* The following is used as a stop-gap limit for cases where really huge 83438fd1498Szrj functions blow up compile-time use too much. It limits the number of 83538fd1498Szrj alias-queries we do for finding common subexpressions for memory loads and 83638fd1498Szrj stores. The number of alias-queries is otherwise limited by the number of 83738fd1498Szrj stores on paths to function entry. */ 83838fd1498Szrj 83938fd1498SzrjDEFPARAM (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS, 84038fd1498Szrj "sccvn-max-alias-queries-per-access", 84138fd1498Szrj "Maximum number of disambiguations to perform per memory access.", 84238fd1498Szrj 1000, 0, 0) 84338fd1498Szrj 84438fd1498SzrjDEFPARAM (PARAM_IRA_MAX_LOOPS_NUM, 84538fd1498Szrj "ira-max-loops-num", 84638fd1498Szrj "Max loops number for regional RA.", 84738fd1498Szrj 100, 0, 0) 84838fd1498Szrj 84938fd1498SzrjDEFPARAM (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE, 85038fd1498Szrj "ira-max-conflict-table-size", 85138fd1498Szrj "Max size of conflict table in MB.", 85238fd1498Szrj 1000, 0, 0) 85338fd1498Szrj 85438fd1498SzrjDEFPARAM (PARAM_IRA_LOOP_RESERVED_REGS, 85538fd1498Szrj "ira-loop-reserved-regs", 85638fd1498Szrj "The number of registers in each class kept unused by loop invariant motion.", 85738fd1498Szrj 2, 0, 0) 85838fd1498Szrj 85938fd1498SzrjDEFPARAM (PARAM_LRA_MAX_CONSIDERED_RELOAD_PSEUDOS, 86038fd1498Szrj "lra-max-considered-reload-pseudos", 86138fd1498Szrj "The max number of reload pseudos which are considered during spilling a non-reload pseudo.", 86238fd1498Szrj 500, 0, 0) 86338fd1498Szrj 86438fd1498SzrjDEFPARAM (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF, 86538fd1498Szrj "lra-inheritance-ebb-probability-cutoff", 86638fd1498Szrj "Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA.", 86738fd1498Szrj 40, 0, 100) 86838fd1498Szrj 86938fd1498Szrj/* Switch initialization conversion will refuse to create arrays that are 87038fd1498Szrj bigger than this parameter times the number of switch branches. */ 87138fd1498Szrj 87238fd1498SzrjDEFPARAM (PARAM_SWITCH_CONVERSION_BRANCH_RATIO, 87338fd1498Szrj "switch-conversion-max-branch-ratio", 87438fd1498Szrj "The maximum ratio between array size and switch branches for " 87538fd1498Szrj "a switch conversion to take place.", 87638fd1498Szrj 8, 1, 0) 87738fd1498Szrj 87838fd1498Szrj/* Size of tiles when doing loop blocking. */ 87938fd1498Szrj 88038fd1498SzrjDEFPARAM (PARAM_LOOP_BLOCK_TILE_SIZE, 88138fd1498Szrj "loop-block-tile-size", 88238fd1498Szrj "size of tiles for loop blocking.", 88338fd1498Szrj 51, 0, 0) 88438fd1498Szrj 88538fd1498Szrj/* Maximal number of parameters that we allow in a SCoP. */ 88638fd1498Szrj 88738fd1498SzrjDEFPARAM (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS, 88838fd1498Szrj "graphite-max-nb-scop-params", 88938fd1498Szrj "maximum number of parameters in a SCoP.", 89038fd1498Szrj 10, 0, 0) 89138fd1498Szrj 89238fd1498Szrj/* Maximal number of array references in a scop. */ 89338fd1498Szrj 89438fd1498SzrjDEFPARAM (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP, 89538fd1498Szrj "graphite-max-arrays-per-scop", 89638fd1498Szrj "maximum number of arrays per scop.", 89738fd1498Szrj 100, 0, 0) 89838fd1498Szrj 89938fd1498SzrjDEFPARAM (PARAM_MAX_ISL_OPERATIONS, 90038fd1498Szrj "max-isl-operations", 90138fd1498Szrj "maximum number of isl operations, 0 means unlimited", 90238fd1498Szrj 350000, 0, 0) 90338fd1498Szrj 90438fd1498Szrj/* For testsuite purposes allow to check for codegen error handling. */ 90538fd1498SzrjDEFPARAM (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS, 90638fd1498Szrj "graphite-allow-codegen-errors", 90738fd1498Szrj "whether codegen errors should be ICEs when -fchecking.", 90838fd1498Szrj 0, 0, 1) 90938fd1498Szrj 91038fd1498Szrj/* Avoid data dependence analysis on very large loops. */ 91138fd1498SzrjDEFPARAM (PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS, 91238fd1498Szrj "loop-max-datarefs-for-datadeps", 91338fd1498Szrj "Maximum number of datarefs in loop for building loop data dependencies.", 91438fd1498Szrj 1000, 0, 0) 91538fd1498Szrj 91638fd1498Szrj/* Avoid doing loop invariant motion on very large loops. */ 91738fd1498Szrj 91838fd1498SzrjDEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP, 91938fd1498Szrj "loop-invariant-max-bbs-in-loop", 92038fd1498Szrj "Max basic blocks number in loop for loop invariant motion.", 92138fd1498Szrj 10000, 0, 0) 92238fd1498Szrj 92338fd1498Szrj/* When the parameter is 1, use the internal function id 92438fd1498Szrj to look up for profile data. Otherwise, use a more stable 92538fd1498Szrj external id based on assembler name and source location. */ 92638fd1498SzrjDEFPARAM (PARAM_PROFILE_FUNC_INTERNAL_ID, 92738fd1498Szrj "profile-func-internal-id", 92838fd1498Szrj "use internal function id in profile lookup.", 92938fd1498Szrj 0, 0, 1) 93038fd1498Szrj 93138fd1498Szrj/* When the parameter is 1, track the most frequent N target 93238fd1498Szrj addresses in indirect-call profile. This disables 93338fd1498Szrj indirect_call_profiler_v2 which tracks single target. */ 93438fd1498SzrjDEFPARAM (PARAM_INDIR_CALL_TOPN_PROFILE, 93538fd1498Szrj "indir-call-topn-profile", 93638fd1498Szrj "track topn target addresses in indirect-call profile.", 93738fd1498Szrj 0, 0, 1) 93838fd1498Szrj 93938fd1498Szrj/* Avoid SLP vectorization of large basic blocks. */ 94038fd1498SzrjDEFPARAM (PARAM_SLP_MAX_INSNS_IN_BB, 94138fd1498Szrj "slp-max-insns-in-bb", 94238fd1498Szrj "Maximum number of instructions in basic block to be considered for SLP vectorization.", 94338fd1498Szrj 1000, 0, 0) 94438fd1498Szrj 94538fd1498SzrjDEFPARAM (PARAM_MIN_INSN_TO_PREFETCH_RATIO, 94638fd1498Szrj "min-insn-to-prefetch-ratio", 94738fd1498Szrj "Min. ratio of insns to prefetches to enable prefetching for " 94838fd1498Szrj "a loop with an unknown trip count.", 94938fd1498Szrj 9, 0, 0) 95038fd1498Szrj 95138fd1498SzrjDEFPARAM (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO, 95238fd1498Szrj "prefetch-min-insn-to-mem-ratio", 95338fd1498Szrj "Min. ratio of insns to mem ops to enable prefetching in a loop.", 95438fd1498Szrj 3, 0, 0) 95538fd1498Szrj 95638fd1498Szrj/* Set maximum hash table size for var tracking. */ 95738fd1498Szrj 95838fd1498SzrjDEFPARAM (PARAM_MAX_VARTRACK_SIZE, 95938fd1498Szrj "max-vartrack-size", 96038fd1498Szrj "Max. size of var tracking hash tables.", 96138fd1498Szrj 50000000, 0, 0) 96238fd1498Szrj 96338fd1498Szrj/* Set maximum recursion depth for var tracking expression expansion 96438fd1498Szrj and resolution. */ 96538fd1498Szrj 96638fd1498SzrjDEFPARAM (PARAM_MAX_VARTRACK_EXPR_DEPTH, 96738fd1498Szrj "max-vartrack-expr-depth", 96838fd1498Szrj "Max. recursion depth for expanding var tracking expressions.", 96938fd1498Szrj 12, 0, 0) 97038fd1498Szrj 97138fd1498Szrj/* Set maximum length of value location list for which var tracking 97238fd1498Szrj should add reverse operations. */ 97338fd1498Szrj 97438fd1498SzrjDEFPARAM (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE, 97538fd1498Szrj "max-vartrack-reverse-op-size", 97638fd1498Szrj "Max. size of loc list for which reverse ops should be added.", 97738fd1498Szrj 50, 0, 0) 97838fd1498Szrj 97938fd1498Szrj/* Set a threshold to discard debug markers (e.g. debug begin stmt 98038fd1498Szrj markers) when expanding a function to RTL, or inlining it into 98138fd1498Szrj another function. */ 98238fd1498Szrj 98338fd1498SzrjDEFPARAM (PARAM_MAX_DEBUG_MARKER_COUNT, 98438fd1498Szrj "max-debug-marker-count", 98538fd1498Szrj "Max. count of debug markers to expand or inline.", 98638fd1498Szrj 100000, 0, 0) 98738fd1498Szrj 98838fd1498Szrj/* Set minimum insn uid for non-debug insns. */ 98938fd1498Szrj 99038fd1498SzrjDEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID, 99138fd1498Szrj "min-nondebug-insn-uid", 99238fd1498Szrj "The minimum UID to be used for a nondebug insn.", 99338fd1498Szrj 0, 0, 0) 99438fd1498Szrj 99538fd1498SzrjDEFPARAM (PARAM_IPA_SRA_PTR_GROWTH_FACTOR, 99638fd1498Szrj "ipa-sra-ptr-growth-factor", 99738fd1498Szrj "Maximum allowed growth of number and total size of new parameters " 99838fd1498Szrj "that ipa-sra replaces a pointer to an aggregate with.", 99938fd1498Szrj 2, 0, 0) 100038fd1498Szrj 100138fd1498SzrjDEFPARAM (PARAM_TM_MAX_AGGREGATE_SIZE, 100238fd1498Szrj "tm-max-aggregate-size", 100338fd1498Szrj "Size in bytes after which thread-local aggregates should be " 100438fd1498Szrj "instrumented with the logging functions instead of save/restore " 100538fd1498Szrj "pairs.", 100638fd1498Szrj 9, 0, 0) 100738fd1498Szrj 100838fd1498SzrjDEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SPEED, 100938fd1498Szrj "sra-max-scalarization-size-Ospeed", 101038fd1498Szrj "Maximum size, in storage units, of an aggregate which should be " 101138fd1498Szrj "considered for scalarization when compiling for speed.", 101238fd1498Szrj 0, 0, 0) 101338fd1498Szrj 101438fd1498SzrjDEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SIZE, 101538fd1498Szrj "sra-max-scalarization-size-Osize", 101638fd1498Szrj "Maximum size, in storage units, of an aggregate which should be " 101738fd1498Szrj "considered for scalarization when compiling for size.", 101838fd1498Szrj 0, 0, 0) 101938fd1498Szrj 102038fd1498SzrjDEFPARAM (PARAM_IPA_CP_VALUE_LIST_SIZE, 102138fd1498Szrj "ipa-cp-value-list-size", 102238fd1498Szrj "Maximum size of a list of values associated with each parameter for " 102338fd1498Szrj "interprocedural constant propagation.", 102438fd1498Szrj 8, 0, 0) 102538fd1498Szrj 102638fd1498SzrjDEFPARAM (PARAM_IPA_CP_EVAL_THRESHOLD, 102738fd1498Szrj "ipa-cp-eval-threshold", 102838fd1498Szrj "Threshold ipa-cp opportunity evaluation that is still considered " 102938fd1498Szrj "beneficial to clone..", 103038fd1498Szrj 500, 0, 0) 103138fd1498Szrj 103238fd1498SzrjDEFPARAM (PARAM_IPA_CP_RECURSION_PENALTY, 103338fd1498Szrj "ipa-cp-recursion-penalty", 103438fd1498Szrj "Percentage penalty the recursive functions will receive when they " 103538fd1498Szrj "are evaluated for cloning..", 103638fd1498Szrj 40, 0, 100) 103738fd1498Szrj 103838fd1498SzrjDEFPARAM (PARAM_IPA_CP_SINGLE_CALL_PENALTY, 103938fd1498Szrj "ipa-cp-single-call-penalty", 104038fd1498Szrj "Percentage penalty functions containing a single call to another " 104138fd1498Szrj "function will receive when they are evaluated for cloning..", 104238fd1498Szrj 15, 0, 100) 104338fd1498Szrj 104438fd1498SzrjDEFPARAM (PARAM_IPA_MAX_AGG_ITEMS, 104538fd1498Szrj "ipa-max-agg-items", 104638fd1498Szrj "Maximum number of aggregate content items for a parameter in " 104738fd1498Szrj "jump functions and lattices.", 104838fd1498Szrj 16, 0, 0) 104938fd1498Szrj 105038fd1498SzrjDEFPARAM (PARAM_IPA_CP_LOOP_HINT_BONUS, 105138fd1498Szrj "ipa-cp-loop-hint-bonus", 105238fd1498Szrj "Compile-time bonus IPA-CP assigns to candidates which make loop " 105338fd1498Szrj "bounds or strides known..", 105438fd1498Szrj 64, 0, 0) 105538fd1498Szrj 105638fd1498SzrjDEFPARAM (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS, 105738fd1498Szrj "ipa-cp-array-index-hint-bonus", 105838fd1498Szrj "Compile-time bonus IPA-CP assigns to candidates which make an array " 105938fd1498Szrj "index known..", 106038fd1498Szrj 48, 0, 0) 106138fd1498Szrj 106238fd1498SzrjDEFPARAM (PARAM_IPA_MAX_AA_STEPS, 106338fd1498Szrj "ipa-max-aa-steps", 106438fd1498Szrj "Maximum number of statements that will be visited by IPA formal " 106538fd1498Szrj "parameter analysis based on alias analysis in any given function.", 106638fd1498Szrj 25000, 0, 0) 106738fd1498Szrj 106838fd1498Szrj/* WHOPR partitioning configuration. */ 106938fd1498Szrj 107038fd1498SzrjDEFPARAM (PARAM_LTO_PARTITIONS, 107138fd1498Szrj "lto-partitions", 107238fd1498Szrj "Number of partitions the program should be split to.", 107338fd1498Szrj 32, 1, 0) 107438fd1498Szrj 107538fd1498SzrjDEFPARAM (MIN_PARTITION_SIZE, 107638fd1498Szrj "lto-min-partition", 107738fd1498Szrj "Minimal size of a partition for LTO (in estimated instructions).", 107838fd1498Szrj 10000, 0, 0) 107938fd1498Szrj 108038fd1498SzrjDEFPARAM (MAX_PARTITION_SIZE, 108138fd1498Szrj "lto-max-partition", 108238fd1498Szrj "Maximal size of a partition for LTO (in estimated instructions).", 108338fd1498Szrj 1000000, 0, INT_MAX) 108438fd1498Szrj 108538fd1498Szrj/* Diagnostic parameters. */ 108638fd1498Szrj 108738fd1498SzrjDEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP, 108838fd1498Szrj "cxx-max-namespaces-for-diagnostic-help", 108938fd1498Szrj "Maximum number of namespaces to search for alternatives when " 109038fd1498Szrj "name lookup fails.", 109138fd1498Szrj 1000, 0, 0) 109238fd1498Szrj 109338fd1498Szrj/* Maximum number of conditional store pairs that can be sunk. */ 109438fd1498SzrjDEFPARAM (PARAM_MAX_STORES_TO_SINK, 109538fd1498Szrj "max-stores-to-sink", 109638fd1498Szrj "Maximum number of conditional store pairs that can be sunk.", 109738fd1498Szrj 2, 0, 0) 109838fd1498Szrj 109938fd1498Szrj/* Override CASE_VALUES_THRESHOLD of when to switch from doing switch 110038fd1498Szrj statements via if statements to using a table jump operation. If the value 110138fd1498Szrj is 0, the default CASE_VALUES_THRESHOLD will be used. */ 110238fd1498SzrjDEFPARAM (PARAM_CASE_VALUES_THRESHOLD, 110338fd1498Szrj "case-values-threshold", 110438fd1498Szrj "The smallest number of different values for which it is best to " 110538fd1498Szrj "use a jump-table instead of a tree of conditional branches, " 110638fd1498Szrj "if 0, use the default for the machine.", 110738fd1498Szrj 0, 0, 0) 110838fd1498Szrj 110938fd1498Szrj/* Data race flags for C++0x memory model compliance. */ 111038fd1498SzrjDEFPARAM (PARAM_ALLOW_STORE_DATA_RACES, 111138fd1498Szrj "allow-store-data-races", 111238fd1498Szrj "Allow new data races on stores to be introduced.", 111338fd1498Szrj 0, 0, 1) 111438fd1498Szrj 111538fd1498Szrj/* Reassociation width to be used by tree reassoc optimization. */ 111638fd1498SzrjDEFPARAM (PARAM_TREE_REASSOC_WIDTH, 111738fd1498Szrj "tree-reassoc-width", 111838fd1498Szrj "Set the maximum number of instructions executed in parallel in " 111938fd1498Szrj "reassociated tree. If 0, use the target dependent heuristic..", 112038fd1498Szrj 0, 0, 0) 112138fd1498Szrj 112238fd1498SzrjDEFPARAM (PARAM_MAX_TAIL_MERGE_COMPARISONS, 112338fd1498Szrj "max-tail-merge-comparisons", 112438fd1498Szrj "Maximum amount of similar bbs to compare a bb with.", 112538fd1498Szrj 10, 0, 0) 112638fd1498Szrj 112738fd1498SzrjDEFPARAM (PARAM_STORE_MERGING_ALLOW_UNALIGNED, 112838fd1498Szrj "store-merging-allow-unaligned", 112938fd1498Szrj "Allow the store merging pass to introduce unaligned stores " 113038fd1498Szrj "if it is legal to do so.", 113138fd1498Szrj 1, 0, 1) 113238fd1498Szrj 113338fd1498SzrjDEFPARAM (PARAM_MAX_STORES_TO_MERGE, 113438fd1498Szrj "max-stores-to-merge", 113538fd1498Szrj "Maximum number of constant stores to merge in the " 113638fd1498Szrj "store merging pass.", 113738fd1498Szrj 64, 2, 0) 113838fd1498Szrj 113938fd1498SzrjDEFPARAM (PARAM_MAX_TAIL_MERGE_ITERATIONS, 114038fd1498Szrj "max-tail-merge-iterations", 114138fd1498Szrj "Maximum amount of iterations of the pass over a function.", 114238fd1498Szrj 2, 0, 0) 114338fd1498Szrj 114438fd1498Szrj/* Maximum number of strings for which strlen optimization pass will 114538fd1498Szrj track string lenths. */ 114638fd1498SzrjDEFPARAM (PARAM_MAX_TRACKED_STRLENS, 114738fd1498Szrj "max-tracked-strlens", 114838fd1498Szrj "Maximum number of strings for which strlen optimization pass will " 114938fd1498Szrj "track string lengths.", 115038fd1498Szrj 10000, 0, 0) 115138fd1498Szrj 115238fd1498Szrj/* Keep this in sync with the sched_pressure_algorithm enum. */ 115338fd1498SzrjDEFPARAM (PARAM_SCHED_PRESSURE_ALGORITHM, 115438fd1498Szrj "sched-pressure-algorithm", 115538fd1498Szrj "Which -fsched-pressure algorithm to apply.", 115638fd1498Szrj 1, 1, 2) 115738fd1498Szrj 115838fd1498Szrj/* Maximum length of candidate scans in straight-line strength reduction. */ 115938fd1498SzrjDEFPARAM (PARAM_MAX_SLSR_CANDIDATE_SCAN, 116038fd1498Szrj "max-slsr-cand-scan", 116138fd1498Szrj "Maximum length of candidate scans for straight-line " 116238fd1498Szrj "strength reduction.", 116338fd1498Szrj 50, 1, 999999) 116438fd1498Szrj 116538fd1498SzrjDEFPARAM (PARAM_ASAN_STACK, 116638fd1498Szrj "asan-stack", 116738fd1498Szrj "Enable asan stack protection.", 116838fd1498Szrj 1, 0, 1) 116938fd1498Szrj 117038fd1498SzrjDEFPARAM (PARAM_ASAN_PROTECT_ALLOCAS, 117138fd1498Szrj "asan-instrument-allocas", 117238fd1498Szrj "Enable asan allocas/VLAs protection.", 117338fd1498Szrj 1, 0, 1) 117438fd1498Szrj 117538fd1498SzrjDEFPARAM (PARAM_ASAN_GLOBALS, 117638fd1498Szrj "asan-globals", 117738fd1498Szrj "Enable asan globals protection.", 117838fd1498Szrj 1, 0, 1) 117938fd1498Szrj 118038fd1498SzrjDEFPARAM (PARAM_ASAN_INSTRUMENT_WRITES, 118138fd1498Szrj "asan-instrument-writes", 118238fd1498Szrj "Enable asan store operations protection.", 118338fd1498Szrj 1, 0, 1) 118438fd1498Szrj 118538fd1498SzrjDEFPARAM (PARAM_ASAN_INSTRUMENT_READS, 118638fd1498Szrj "asan-instrument-reads", 118738fd1498Szrj "Enable asan load operations protection.", 118838fd1498Szrj 1, 0, 1) 118938fd1498Szrj 119038fd1498SzrjDEFPARAM (PARAM_ASAN_MEMINTRIN, 119138fd1498Szrj "asan-memintrin", 119238fd1498Szrj "Enable asan builtin functions protection.", 119338fd1498Szrj 1, 0, 1) 119438fd1498Szrj 119538fd1498SzrjDEFPARAM (PARAM_ASAN_USE_AFTER_RETURN, 119638fd1498Szrj "asan-use-after-return", 119738fd1498Szrj "Enable asan detection of use-after-return bugs.", 119838fd1498Szrj 1, 0, 1) 119938fd1498Szrj 120038fd1498SzrjDEFPARAM (PARAM_ASAN_INSTRUMENTATION_WITH_CALL_THRESHOLD, 120138fd1498Szrj "asan-instrumentation-with-call-threshold", 120238fd1498Szrj "Use callbacks instead of inline code if number of accesses " 120338fd1498Szrj "in function becomes greater or equal to this number.", 120438fd1498Szrj 7000, 0, INT_MAX) 120538fd1498Szrj 120638fd1498SzrjDEFPARAM (PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD, 120738fd1498Szrj "use-after-scope-direct-emission-threshold", 120838fd1498Szrj "Use direct poisoning/unpoisoning instructions for variables " 120938fd1498Szrj "smaller or equal to this number.", 121038fd1498Szrj 256, 0, INT_MAX) 121138fd1498Szrj 121238fd1498SzrjDEFPARAM (PARAM_UNINIT_CONTROL_DEP_ATTEMPTS, 121338fd1498Szrj "uninit-control-dep-attempts", 121438fd1498Szrj "Maximum number of nested calls to search for control dependencies " 121538fd1498Szrj "during uninitialized variable analysis.", 121638fd1498Szrj 1000, 1, 0) 121738fd1498Szrj 121838fd1498SzrjDEFPARAM (PARAM_CHKP_MAX_CTOR_SIZE, 121938fd1498Szrj "chkp-max-ctor-size", 122038fd1498Szrj "Maximum number of statements to be included into a single static " 122138fd1498Szrj "constructor generated by Pointer Bounds Checker.", 122238fd1498Szrj 5000, 100, 0) 122338fd1498Szrj 122438fd1498SzrjDEFPARAM (PARAM_FSM_SCALE_PATH_STMTS, 122538fd1498Szrj "fsm-scale-path-stmts", 122638fd1498Szrj "Scale factor to apply to the number of statements in a threading path when comparing to the number of (scaled) blocks.", 122738fd1498Szrj 2, 1, 10) 122838fd1498Szrj 122938fd1498SzrjDEFPARAM (PARAM_FSM_MAXIMUM_PHI_ARGUMENTS, 123038fd1498Szrj "fsm-maximum-phi-arguments", 123138fd1498Szrj "Maximum number of arguments a PHI may have before the FSM threader will not try to thread through its block.", 123238fd1498Szrj 100, 1, 999999) 123338fd1498Szrj 123438fd1498SzrjDEFPARAM (PARAM_FSM_SCALE_PATH_BLOCKS, 123538fd1498Szrj "fsm-scale-path-blocks", 123638fd1498Szrj "Scale factor to apply to the number of blocks in a threading path when comparing to the number of (scaled) statements.", 123738fd1498Szrj 3, 1, 10) 123838fd1498Szrj 123938fd1498SzrjDEFPARAM (PARAM_MAX_FSM_THREAD_PATH_INSNS, 124038fd1498Szrj "max-fsm-thread-path-insns", 124138fd1498Szrj "Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path.", 124238fd1498Szrj 100, 1, 999999) 124338fd1498Szrj 124438fd1498SzrjDEFPARAM (PARAM_MAX_FSM_THREAD_LENGTH, 124538fd1498Szrj "max-fsm-thread-length", 124638fd1498Szrj "Maximum number of basic blocks on a finite state automaton jump thread path.", 124738fd1498Szrj 10, 1, 999999) 124838fd1498Szrj 124938fd1498SzrjDEFPARAM (PARAM_MAX_FSM_THREAD_PATHS, 125038fd1498Szrj "max-fsm-thread-paths", 125138fd1498Szrj "Maximum number of new jump thread paths to create for a finite state automaton.", 125238fd1498Szrj 50, 1, 999999) 125338fd1498Szrj 125438fd1498SzrjDEFPARAM (PARAM_PARLOOPS_CHUNK_SIZE, 125538fd1498Szrj "parloops-chunk-size", 125638fd1498Szrj "Chunk size of omp schedule for loops parallelized by parloops.", 125738fd1498Szrj 0, 0, 0) 125838fd1498Szrj 125938fd1498SzrjDEFPARAMENUM5 (PARAM_PARLOOPS_SCHEDULE, 126038fd1498Szrj "parloops-schedule", 126138fd1498Szrj "Schedule type of omp schedule for loops parallelized by " 126238fd1498Szrj "parloops (static, dynamic, guided, auto, runtime).", 126338fd1498Szrj static, 126438fd1498Szrj static, dynamic, guided, auto, runtime) 126538fd1498Szrj 126638fd1498SzrjDEFPARAM (PARAM_PARLOOPS_MIN_PER_THREAD, 126738fd1498Szrj "parloops-min-per-thread", 126838fd1498Szrj "Minimum number of iterations per thread of an innermost " 126938fd1498Szrj "parallelized loop.", 127038fd1498Szrj 100, 2, 0) 127138fd1498Szrj 127238fd1498SzrjDEFPARAM (PARAM_MAX_SSA_NAME_QUERY_DEPTH, 127338fd1498Szrj "max-ssa-name-query-depth", 127438fd1498Szrj "Maximum recursion depth allowed when querying a property of an" 127538fd1498Szrj " SSA name.", 127638fd1498Szrj 3, 1, 10) 127738fd1498Szrj 127838fd1498SzrjDEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_INSNS, 127938fd1498Szrj "max-rtl-if-conversion-insns", 128038fd1498Szrj "Maximum number of insns in a basic block to consider for RTL " 128138fd1498Szrj "if-conversion.", 128238fd1498Szrj 10, 0, 99) 128338fd1498Szrj 128438fd1498SzrjDEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_PREDICTABLE_COST, 128538fd1498Szrj "max-rtl-if-conversion-predictable-cost", 128638fd1498Szrj "Maximum permissible cost for the sequence that would be " 128738fd1498Szrj "generated by the RTL if-conversion pass for a branch that " 128838fd1498Szrj "is considered predictable.", 128938fd1498Szrj 20, 0, 200) 129038fd1498Szrj 129138fd1498SzrjDEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_UNPREDICTABLE_COST, 129238fd1498Szrj "max-rtl-if-conversion-unpredictable-cost", 129338fd1498Szrj "Maximum permissible cost for the sequence that would be " 129438fd1498Szrj "generated by the RTL if-conversion pass for a branch that " 129538fd1498Szrj "is considered unpredictable.", 129638fd1498Szrj 40, 0, 200) 129738fd1498Szrj 129838fd1498SzrjDEFPARAM (PARAM_HSA_GEN_DEBUG_STORES, 129938fd1498Szrj "hsa-gen-debug-stores", 130038fd1498Szrj "Level of hsa debug stores verbosity", 130138fd1498Szrj 0, 0, 1) 130238fd1498Szrj 130338fd1498SzrjDEFPARAM (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS, 130438fd1498Szrj "max-speculative-devirt-maydefs", 130538fd1498Szrj "Maximum number of may-defs visited when devirtualizing " 130638fd1498Szrj "speculatively", 50, 0, 0) 130738fd1498Szrj 130838fd1498SzrjDEFPARAM (PARAM_MAX_VRP_SWITCH_ASSERTIONS, 130938fd1498Szrj "max-vrp-switch-assertions", 131038fd1498Szrj "Maximum number of assertions to add along the default " 131138fd1498Szrj "edge of a switch statement during VRP", 131238fd1498Szrj 10, 0, 0) 131338fd1498Szrj 131438fd1498SzrjDEFPARAM (PARAM_VECT_EPILOGUES_NOMASK, 131538fd1498Szrj "vect-epilogues-nomask", 131638fd1498Szrj "Enable loop epilogue vectorization using smaller vector size.", 131738fd1498Szrj 0, 0, 1) 131838fd1498Szrj 131938fd1498SzrjDEFPARAM(PARAM_UNROLL_JAM_MIN_PERCENT, 132038fd1498Szrj "unroll-jam-min-percent", 132138fd1498Szrj "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable.", 132238fd1498Szrj 1, 0, 100) 132338fd1498Szrj 132438fd1498SzrjDEFPARAM(PARAM_UNROLL_JAM_MAX_UNROLL, 132538fd1498Szrj "unroll-jam-max-unroll", 132638fd1498Szrj "Maximum unroll factor for the unroll-and-jam transformation.", 132738fd1498Szrj 4, 0, 0) 132838fd1498Szrj 132938fd1498SzrjDEFPARAM(PARAM_AVOID_FMA_MAX_BITS, 133038fd1498Szrj "avoid-fma-max-bits", 133138fd1498Szrj "Maximum number of bits for which we avoid creating FMAs.", 133238fd1498Szrj 0, 0, 512) 133338fd1498Szrj 1334*e215fc28SzrjDEFPARAM(PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT, 1335*e215fc28Szrj "logical-op-non-short-circuit", 1336*e215fc28Szrj "True if a non-short-circuit operation is optimal.", 1337*e215fc28Szrj -1, -1, 1) 1338*e215fc28Szrj 133938fd1498Szrj/* 134038fd1498Szrj 134138fd1498SzrjLocal variables: 134238fd1498Szrjmode:c 134338fd1498SzrjEnd: 134438fd1498Szrj*/ 1345