xref: /dragonfly/contrib/gcc-8.0/gcc/params.def (revision e215fc28)
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