]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/params.def
* ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Return false
[thirdparty/gcc.git] / gcc / params.def
CommitLineData
9a33a2e8 1/* params.def - Run-time parameters.
f1717362 2 Copyright (C) 2001-2016 Free Software Foundation, Inc.
9a33a2e8 3 Written by Mark Mitchell <mark@codesourcery.com>.
4
f12b58b3 5This file is part of GCC.
9a33a2e8 6
f12b58b3 7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
8c4c00c1 9Software Foundation; either version 3, or (at your option) any later
f12b58b3 10version.
9a33a2e8 11
f12b58b3 12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
9a33a2e8 16
17You should have received a copy of the GNU General Public License
8c4c00c1 18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
9a33a2e8 20
21/* This file contains definitions for language-independent
5ecfec12 22 parameters. The DEFPARAM macro takes 6 arguments:
9a33a2e8 23
21b80b12 24 - The enumeral corresponding to this parameter.
9a33a2e8 25
48e1416a 26 - The name that can be used to set this parameter using the
9a33a2e8 27 command-line option `--param <name>=<value>'.
28
29 - A help string explaining how the parameter is used.
30
a5d654e2 31 - A default value for the parameter.
32
0452d664 33 - The minimum acceptable value for the parameter.
5ecfec12 34
0452d664 35 - The maximum acceptable value for the parameter (if greater than
5ecfec12 36 the minimum).
37
2331aa43 38 The DEFPARAMENUM<N> macro is similar, but instead of the minumum and maximum
39 arguments, it contains a list of <N> allowed strings, corresponding to
40 integer values 0..<N>-1. Note that the default argument needs to be
41 specified as one of the allowed strings, rather than an integer value.
42
a5d654e2 43 Be sure to add an entry to invoke.texi summarizing the parameter. */
9a33a2e8 44
4a9d7ef7 45/* When branch is predicted to be taken with probability lower than this
46 threshold (in percent), then it is considered well predictable. */
47DEFPARAM (PARAM_PREDICTABLE_BRANCH_OUTCOME,
48 "predictable-branch-outcome",
8fb42bbc 49 "Maximal estimated outcome of branch considered predictable.",
4a9d7ef7 50 2, 0, 50)
51
50ba0cad 52DEFPARAM (PARAM_INLINE_MIN_SPEEDUP,
53 "inline-min-speedup",
8fb42bbc 54 "The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-isnsns-auto.",
50ba0cad 55 10, 0, 0)
56
6cc4057d 57/* The single function inlining limit. This is the maximum size
58 of a function counted in internal gcc instructions (not in
59 real machine instructions) that is eligible for inlining
60 by the tree inliner.
bc7a14a6 61 The default value is 450.
6cc4057d 62 Only functions marked inline (or methods defined in the class
bc7a14a6 63 definition for C++) are affected by this.
6cc4057d 64 There are more restrictions to inlining: If inlined functions
65 call other functions, the already inlined instructions are
48e1416a 66 counted and once the recursive inline limit (see
6cc4057d 67 "max-inline-insns" parameter) is exceeded, the acceptable size
68 gets decreased. */
69DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
70 "max-inline-insns-single",
8fb42bbc 71 "The maximum number of instructions in a single function eligible for inlining.",
3e02d180 72 400, 0, 0)
6cc4057d 73
e2b04249 74/* The single function inlining limit for functions that are
75 inlined by virtue of -finline-functions (-O3).
76 This limit should be chosen to be below or equal to the limit
77 that is applied to functions marked inlined (or defined in the
78 class declaration in C++) given by the "max-inline-insns-single"
79 parameter.
f925fe89 80 The default value is 40. */
e2b04249 81DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
82 "max-inline-insns-auto",
8fb42bbc 83 "The maximum number of instructions when automatically inlining.",
f925fe89 84 40, 0, 0)
e2b04249 85
4ee9c684 86DEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE,
87 "max-inline-insns-recursive",
8fb42bbc 88 "The maximum number of instructions inline function can grow to via recursive inlining.",
3e02d180 89 450, 0, 0)
4ee9c684 90
91DEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO,
92 "max-inline-insns-recursive-auto",
8fb42bbc 93 "The maximum number of instructions non-inline function can grow to via recursive inlining.",
3e02d180 94 450, 0, 0)
4ee9c684 95
96DEFPARAM (PARAM_MAX_INLINE_RECURSIVE_DEPTH,
97 "max-inline-recursive-depth",
8fb42bbc 98 "The maximum depth of recursive inlining for inline functions.",
1d8a53f4 99 8, 0, 0)
4ee9c684 100
101DEFPARAM (PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO,
102 "max-inline-recursive-depth-auto",
8fb42bbc 103 "The maximum depth of recursive inlining for non-inline functions.",
1d8a53f4 104 8, 0, 0)
4ee9c684 105
0aca0eb6 106DEFPARAM (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY,
107 "min-inline-recursive-probability",
8fb42bbc 108 "Inline recursively only when the probability of call being executed exceeds the parameter.",
0aca0eb6 109 10, 0, 0)
110
a7b61d8c 111/* Limit of iterations of early inliner. This basically bounds number of
112 nested indirect calls early inliner can resolve. Deeper chains are still
113 handled by late inlining. */
114DEFPARAM (PARAM_EARLY_INLINER_MAX_ITERATIONS,
115 "max-early-inliner-iterations",
8fb42bbc 116 "The maximum number of nested indirect inlining performed by early inliner.",
b9b931d9 117 1, 0, 0)
a7b61d8c 118
6a2657be 119/* Limit on probability of entry BB. */
120DEFPARAM (PARAM_COMDAT_SHARING_PROBABILITY,
121 "comdat-sharing-probability",
8fb42bbc 122 "Probability that COMDAT function will be shared with different compilation unit.",
6a2657be 123 20, 0, 0)
124
2862cf88 125/* Limit on probability of entry BB. */
126DEFPARAM (PARAM_PARTIAL_INLINING_ENTRY_PROBABILITY,
127 "partial-inlining-entry-probability",
8fb42bbc 128 "Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen.",
2862cf88 129 70, 0, 0)
130
375bb675 131/* Limit the number of expansions created by the variable expansion
132 optimization to avoid register pressure. */
133DEFPARAM (PARAM_MAX_VARIABLE_EXPANSIONS,
134 "max-variable-expansions-in-unroller",
8fb42bbc 135 "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling.",
1d8a53f4 136 1, 0, 0)
48e1416a 137
8964b5be 138/* Limit loop autovectorization to loops with large enough iteration count. */
139DEFPARAM (PARAM_MIN_VECT_LOOP_BOUND,
140 "min-vect-loop-bound",
8fb42bbc 141 "If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization.",
44483b97 142 1, 1, 0)
8964b5be 143
21b80b12 144/* The maximum number of instructions to consider when looking for an
145 instruction to fill a delay slot. If more than this arbitrary
146 number of instructions is searched, the time savings from filling
147 the delay slot will be minimal so stop searching. Increasing
148 values mean more aggressive optimization, making the compile time
149 increase with probably small improvement in executable run time. */
150DEFPARAM (PARAM_MAX_DELAY_SLOT_INSN_SEARCH,
151 "max-delay-slot-insn-search",
8fb42bbc 152 "The maximum number of instructions to consider to fill a delay slot.",
1d8a53f4 153 100, 0, 0)
21b80b12 154
98d5e888 155/* When trying to fill delay slots, the maximum number of instructions
156 to consider when searching for a block with valid live register
157 information. Increasing this arbitrarily chosen value means more
158 aggressive optimization, increasing the compile time. This
159 parameter should be removed when the delay slot code is rewritten
160 to maintain the control-flow graph. */
161DEFPARAM(PARAM_MAX_DELAY_SLOT_LIVE_SEARCH,
162 "max-delay-slot-live-search",
8fb42bbc 163 "The maximum number of instructions to consider to find accurate live register information.",
1d8a53f4 164 333, 0, 0)
98d5e888 165
48e1416a 166/* This parameter limits the number of branch elements that the
424da949 167 scheduler will track anti-dependencies through without resetting
48e1416a 168 the tracking mechanism. Large functions with few calls or barriers
169 can generate lists containing many 1000's of dependencies. Generally
85de291e 170 the compiler either uses all available memory, or runs for far too long. */
171DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH,
172 "max-pending-list-length",
8fb42bbc 173 "The maximum length of scheduling's pending operations list.",
1d8a53f4 174 32, 0, 0)
85de291e 175
c0457559 176/* This parameter limits the number of backtracking attempts when using the
177 haifa scheduler for modulo scheduling. */
178DEFPARAM(PARAM_MAX_MODULO_BACKTRACK_ATTEMPTS,
179 "max-modulo-backtrack-attempts",
8fb42bbc 180 "The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop.",
c0457559 181 40, 0, 0)
182
d7c6d889 183DEFPARAM(PARAM_LARGE_FUNCTION_INSNS,
184 "large-function-insns",
8fb42bbc 185 "The size of function body to be considered large.",
bc7a14a6 186 2700, 0, 0)
d7c6d889 187DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH,
188 "large-function-growth",
8fb42bbc 189 "Maximal growth due to inlining of large function (in percent).",
1d8a53f4 190 100, 0, 0)
aa976da5 191DEFPARAM(PARAM_LARGE_UNIT_INSNS,
192 "large-unit-insns",
8fb42bbc 193 "The size of translation unit to be considered large.",
aa976da5 194 10000, 0, 0)
d7c6d889 195DEFPARAM(PARAM_INLINE_UNIT_GROWTH,
196 "inline-unit-growth",
8fb42bbc 197 "How much can given compilation unit grow because of the inlining (in percent).",
ec4ff5c6 198 20, 0, 0)
2a15795f 199DEFPARAM(PARAM_IPCP_UNIT_GROWTH,
200 "ipcp-unit-growth",
8fb42bbc 201 "How much can given compilation unit grow because of the interprocedural constant propagation (in percent).",
2a15795f 202 10, 0, 0)
97343302 203DEFPARAM(PARAM_EARLY_INLINING_INSNS,
204 "early-inlining-insns",
8fb42bbc 205 "Maximal estimated growth of function body caused by early inlining of single call.",
c3fed600 206 14, 0, 0)
5a02d67b 207DEFPARAM(PARAM_LARGE_STACK_FRAME,
208 "large-stack-frame",
8fb42bbc 209 "The size of stack frame to be considered large.",
5a02d67b 210 256, 0, 0)
211DEFPARAM(PARAM_STACK_FRAME_GROWTH,
212 "large-stack-frame-growth",
8fb42bbc 213 "Maximal stack frame growth due to inlining (in percent).",
5a02d67b 214 1000, 0, 0)
d7c6d889 215
9159979b 216/* The GCSE optimization will be disabled if it would require
217 significantly more memory than this value. */
218DEFPARAM(PARAM_MAX_GCSE_MEMORY,
219 "max-gcse-memory",
8fb42bbc 220 "The maximum amount of memory to be allocated by GCSE.",
82b9069d 221 128 * 1024 * 1024, 0, 0)
d45a307d 222
b89c219c 223/* The GCSE optimization of an expression will avoided if the ratio of
224 insertions to deletions is greater than this value. */
225DEFPARAM(PARAM_MAX_GCSE_INSERTION_RATIO,
226 "max-gcse-insertion-ratio",
8fb42bbc 227 "The maximum ratio of insertions to deletions of expressions in GCSE.",
b89c219c 228 20, 0, 0)
229
839f8415 230/* This is the threshold ratio when to perform partial redundancy
231 elimination after reload. We perform partial redundancy elimination
232 when the following holds:
233 (Redundant load execution count)
234 ------------------------------- >= GCSE_AFTER_RELOAD_PARTIAL_FRACTION
235 (Added loads execution count) */
236DEFPARAM(PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
237 "gcse-after-reload-partial-fraction",
8fb42bbc 238 "The threshold ratio for performing partial redundancy elimination after reload.",
1d8a53f4 239 3, 0, 0)
839f8415 240/* This is the threshold ratio of the critical edges execution count compared to
241 the redundant loads execution count that permits performing the load
242 redundancy elimination in gcse after reload. */
243DEFPARAM(PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION,
244 "gcse-after-reload-critical-fraction",
8fb42bbc 245 "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload.",
1d8a53f4 246 10, 0, 0)
8b38b150 247
248/* GCSE will use GCSE_COST_DISTANCE_RATION as a scaling factor
249 to calculate maximum distance for which an expression is allowed to move
250 from its rtx_cost. */
251DEFPARAM(PARAM_GCSE_COST_DISTANCE_RATIO,
252 "gcse-cost-distance-ratio",
8fb42bbc 253 "Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations.",
8b38b150 254 10, 0, 0)
255/* GCSE won't restrict distance for which an expression with rtx_cost greater
256 than COSTS_N_INSN(GCSE_UNRESTRICTED_COST) is allowed to move. */
257DEFPARAM(PARAM_GCSE_UNRESTRICTED_COST,
258 "gcse-unrestricted-cost",
8fb42bbc 259 "Cost at which GCSE optimizations will not constraint the distance an expression can travel.",
8b38b150 260 3, 0, 0)
261
c0939130 262/* How deep from a given basic block the dominator tree should be searched
263 for expressions to hoist to the block. The value of 0 will avoid limiting
264 the search. */
265DEFPARAM(PARAM_MAX_HOIST_DEPTH,
266 "max-hoist-depth",
8fb42bbc 267 "Maximum depth of search in the dominator tree for expressions to hoist.",
c0939130 268 30, 0, 0)
269
c3206272 270
271/* When synthesizing expnonentiation by a real constant operations using square
272 roots, this controls how deep sqrt chains we are willing to generate. */
273DEFPARAM(PARAM_MAX_POW_SQRT_DEPTH,
274 "max-pow-sqrt-depth",
8fb42bbc 275 "Maximum depth of sqrt chains to use when synthesizing exponentiation by a real constant.",
c3206272 276 5, 1, 32)
277
0b11ae2e 278/* This parameter limits the number of insns in a loop that will be unrolled,
45c09478 279 and by how much the loop is unrolled.
48e1416a 280
45c09478 281 This limit should be at most half of the peeling limits: loop unroller
282 decides to not unroll loops that iterate fewer than 2*number of allowed
aab2cf92 283 unrollings and thus we would have loops that are neither peeled or unrolled
45c09478 284 otherwise. */
0b11ae2e 285DEFPARAM(PARAM_MAX_UNROLLED_INSNS,
286 "max-unrolled-insns",
8fb42bbc 287 "The maximum number of instructions to consider to unroll in a loop.",
1d8a53f4 288 200, 0, 0)
ce32fe65 289/* This parameter limits how many times the loop is unrolled depending
290 on number of insns really executed in each iteration. */
291DEFPARAM(PARAM_MAX_AVERAGE_UNROLLED_INSNS,
292 "max-average-unrolled-insns",
8fb42bbc 293 "The maximum number of instructions to consider to unroll in a loop on average.",
1d8a53f4 294 80, 0, 0)
ce32fe65 295/* The maximum number of unrollings of a single loop. */
296DEFPARAM(PARAM_MAX_UNROLL_TIMES,
297 "max-unroll-times",
8fb42bbc 298 "The maximum number of unrollings of a single loop.",
1d8a53f4 299 8, 0, 0)
ce32fe65 300/* The maximum number of insns of a peeled loop. */
301DEFPARAM(PARAM_MAX_PEELED_INSNS,
302 "max-peeled-insns",
8fb42bbc 303 "The maximum number of insns of a peeled loop.",
1bce15f4 304 100, 0, 0)
ce32fe65 305/* The maximum number of peelings of a single loop. */
306DEFPARAM(PARAM_MAX_PEEL_TIMES,
307 "max-peel-times",
8fb42bbc 308 "The maximum number of peelings of a single loop.",
1d8a53f4 309 16, 0, 0)
d583c979 310/* The maximum number of peelings of a single loop that is peeled completely. */
311DEFPARAM(PARAM_MAX_PEEL_BRANCHES,
312 "max-peel-branches",
8fb42bbc 313 "The maximum number of branches on the path through the peeled sequence.",
d583c979 314 32, 0, 0)
ce32fe65 315/* The maximum number of insns of a peeled loop. */
316DEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS,
317 "max-completely-peeled-insns",
8fb42bbc 318 "The maximum number of insns of a completely peeled loop.",
3cd0083c 319 200, 0, 0)
ce32fe65 320/* The maximum number of peelings of a single loop that is peeled completely. */
321DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES,
322 "max-completely-peel-times",
8fb42bbc 323 "The maximum number of peelings of a single loop that is peeled completely.",
1d8a53f4 324 16, 0, 0)
ce32fe65 325/* The maximum number of insns of a peeled loop that rolls only once. */
326DEFPARAM(PARAM_MAX_ONCE_PEELED_INSNS,
327 "max-once-peeled-insns",
8fb42bbc 328 "The maximum number of insns of a peeled loop that rolls only once.",
1d8a53f4 329 400, 0, 0)
793a0ab5 330/* The maximum depth of a loop nest we completely peel. */
331DEFPARAM(PARAM_MAX_UNROLL_ITERATIONS,
332 "max-completely-peel-loop-nest-depth",
8fb42bbc 333 "The maximum depth of a loop nest we completely peel.",
793a0ab5 334 8, 0, 0)
429fa7fa 335
6a606e3c 336/* The maximum number of insns of an unswitched loop. */
337DEFPARAM(PARAM_MAX_UNSWITCH_INSNS,
338 "max-unswitch-insns",
8fb42bbc 339 "The maximum number of insns of an unswitched loop.",
1d8a53f4 340 50, 0, 0)
6a606e3c 341/* The maximum level of recursion in unswitch_single_loop. */
342DEFPARAM(PARAM_MAX_UNSWITCH_LEVEL,
343 "max-unswitch-level",
8fb42bbc 344 "The maximum number of unswitchings in a single loop.",
1d8a53f4 345 3, 0, 0)
6a606e3c 346
b9d73ea6 347/* The maximum number of iterations of a loop the brute force algorithm
348 for analysis of # of iterations of the loop tries to evaluate. */
349DEFPARAM(PARAM_MAX_ITERATIONS_TO_TRACK,
350 "max-iterations-to-track",
8fb42bbc 351 "Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates.",
1d8a53f4 352 1000, 0, 0)
883bb2bb 353/* A cutoff to avoid costly computations of the number of iterations in
354 the doloop transformation. */
355DEFPARAM(PARAM_MAX_ITERATIONS_COMPUTATION_COST,
356 "max-iterations-computation-cost",
8fb42bbc 357 "Bound on the cost of an expression to compute the number of iterations.",
883bb2bb 358 10, 0, 0)
b9d73ea6 359
406a73e7 360/* This parameter is used to tune SMS MAX II calculations. */
361DEFPARAM(PARAM_SMS_MAX_II_FACTOR,
362 "sms-max-ii-factor",
8fb42bbc 363 "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop.",
1d8a53f4 364 100, 0, 0)
4f7f77aa 365/* The minimum value of stage count that swing modulo scheduler will generate. */
366DEFPARAM(PARAM_SMS_MIN_SC,
367 "sms-min-sc",
368 "The minimum value of stage count that swing modulo scheduler will generate.",
369 2, 1, 1)
406a73e7 370DEFPARAM(PARAM_SMS_DFA_HISTORY,
371 "sms-dfa-history",
8fb42bbc 372 "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.",
1d8a53f4 373 0, 0, 0)
406a73e7 374DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
375 "sms-loop-average-count-threshold",
8fb42bbc 376 "A threshold on the average loop count considered by the swing modulo scheduler.",
1d8a53f4 377 0, 0, 0)
406a73e7 378
f34acf02 379DEFPARAM(HOT_BB_COUNT_WS_PERMILLE,
380 "hot-bb-count-ws-permille",
381 "A basic block profile count is considered hot if it contributes to "
8fb42bbc 382 "the given permillage of the entire profiled execution.",
f34acf02 383 999, 0, 1000)
429fa7fa 384DEFPARAM(HOT_BB_FREQUENCY_FRACTION,
385 "hot-bb-frequency-fraction",
8fb42bbc 386 "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot.",
1d8a53f4 387 1000, 0, 0)
5d157ac1 388
c1acf60c 389DEFPARAM(UNLIKELY_BB_COUNT_FRACTION,
390 "unlikely-bb-count-fraction",
8fb42bbc 391 "The minimum fraction of profile runs a given basic block execution count must be not to be considered unlikely.",
c1acf60c 392 20, 1, 10000)
393
7bd530d9 394DEFPARAM (PARAM_ALIGN_THRESHOLD,
395 "align-threshold",
8fb42bbc 396 "Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment.",
abf3fde4 397 100, 1, 0)
7bd530d9 398
399DEFPARAM (PARAM_ALIGN_LOOP_ITERATIONS,
400 "align-loop-iterations",
8fb42bbc 401 "Loops iterating at least selected number of iterations will get loop alignement..",
7bd530d9 402 4, 0, 0)
403
5d157ac1 404/* For guessed profiles, the loops having unknown number of iterations
405 are predicted to iterate relatively few (10) times at average.
406 For functions containing one loop with large known number of iterations
407 and other loops having unbounded loops we would end up predicting all
7063afc3 408 the other loops cold that is not usually the case. So we need to artificially
48e1416a 409 flatten the profile.
5d157ac1 410
191ec5a2 411 We need to cut the maximal predicted iterations to large enough iterations
f34acf02 412 so the loop appears important, but safely within maximum hotness
5d157ac1 413 range. */
414
415DEFPARAM(PARAM_MAX_PREDICTED_ITERATIONS,
416 "max-predicted-iterations",
8fb42bbc 417 "The maximum number of loop iterations we predict statically.",
5d157ac1 418 100, 0, 0)
21853731 419
420/* This parameter controls the probability of builtin_expect. The default
421 value is 90%. This empirical value is obtained through the weighted
422 probability of FDO counters (with the FDO count value as the weight)
8fb42bbc 423 in some real world programs:
21853731 424 (1) Google performance test benchmarks: the probability is 0.9081.
425 (2) Linux 3.3 kernel running Google search workload: the probability
426 is 0.8717. */
427
428DEFPARAM(BUILTIN_EXPECT_PROBABILITY,
429 "builtin-expect-probability",
430 "Set the estimated probability in percentage for builtin expect. The default value is 90% probability.",
431 90, 0, 100)
fa99ab3d 432DEFPARAM(TRACER_DYNAMIC_COVERAGE_FEEDBACK,
433 "tracer-dynamic-coverage-feedback",
8fb42bbc 434 "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available.",
1d8a53f4 435 95, 0, 100)
fa99ab3d 436DEFPARAM(TRACER_DYNAMIC_COVERAGE,
437 "tracer-dynamic-coverage",
8fb42bbc 438 "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available.",
1d8a53f4 439 75, 0, 100)
fa99ab3d 440DEFPARAM(TRACER_MAX_CODE_GROWTH,
441 "tracer-max-code-growth",
8fb42bbc 442 "Maximal code growth caused by tail duplication (in percent).",
1d8a53f4 443 100, 0, 0)
fa99ab3d 444DEFPARAM(TRACER_MIN_BRANCH_RATIO,
445 "tracer-min-branch-ratio",
8fb42bbc 446 "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent).",
1d8a53f4 447 10, 0, 100)
fa99ab3d 448DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY_FEEDBACK,
449 "tracer-min-branch-probability-feedback",
8fb42bbc 450 "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available.",
1d8a53f4 451 80, 0, 100)
fa99ab3d 452DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY,
453 "tracer-min-branch-probability",
8fb42bbc 454 "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available.",
1d8a53f4 455 50, 0, 100)
2a3edec5 456
2a5b4716 457/* The maximum number of incoming edges to consider for crossjumping. */
458DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES,
459 "max-crossjump-edges",
8fb42bbc 460 "The maximum number of incoming edges to consider for crossjumping.",
1d8a53f4 461 100, 0, 0)
2a5b4716 462
43341e2f 463/* The minimum number of matching instructions to consider for crossjumping. */
464DEFPARAM(PARAM_MIN_CROSSJUMP_INSNS,
465 "min-crossjump-insns",
8fb42bbc 466 "The minimum number of matching instructions to consider for crossjumping.",
ce4f2aee 467 5, 1, 0)
43341e2f 468
6b6a2169 469/* The maximum number expansion factor when copying basic blocks. */
470DEFPARAM(PARAM_MAX_GROW_COPY_BB_INSNS,
471 "max-grow-copy-bb-insns",
8fb42bbc 472 "The maximum expansion factor when copying basic blocks.",
6b6a2169 473 8, 0, 0)
474
b70a5a99 475/* The maximum number of insns to duplicate when unfactoring computed gotos. */
476DEFPARAM(PARAM_MAX_GOTO_DUPLICATION_INSNS,
477 "max-goto-duplication-insns",
8fb42bbc 478 "The maximum number of insns to duplicate when unfactoring computed gotos.",
b70a5a99 479 8, 0, 0)
480
38ccff25 481/* The maximum length of path considered in cse. */
482DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH,
483 "max-cse-path-length",
8fb42bbc 484 "The maximum length of path considered in cse.",
efbfe80e 485 10, 1, 0)
5d157ac1 486DEFPARAM(PARAM_MAX_CSE_INSNS,
0ed224e1 487 "max-cse-insns",
8fb42bbc 488 "The maximum instructions CSE process before flushing.",
5d157ac1 489 1000, 0, 0)
38ccff25 490
7d23383d 491/* The cost of expression in loop invariant motion that is considered
492 expensive. */
493DEFPARAM(PARAM_LIM_EXPENSIVE,
494 "lim-expensive",
8fb42bbc 495 "The minimum cost of an expensive expression in the loop invariant motion.",
1d8a53f4 496 20, 0, 0)
7d23383d 497
dec41e98 498/* Bound on number of candidates for induction variables below that
499 all candidates are considered for each use in induction variable
500 optimizations. */
501
502DEFPARAM(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
503 "iv-consider-all-candidates-bound",
8fb42bbc 504 "Bound on number of candidates below that all candidates are considered in iv optimizations.",
1d8a53f4 505 30, 0, 0)
dec41e98 506
507/* The induction variable optimizations give up on loops that contain more
508 induction variable uses. */
509
510DEFPARAM(PARAM_IV_MAX_CONSIDERED_USES,
511 "iv-max-considered-uses",
8fb42bbc 512 "Bound on number of iv uses in loop optimized in iv optimizations.",
1d8a53f4 513 250, 0, 0)
dec41e98 514
13ea2c1f 515/* If there are at most this number of ivs in the set, try removing unnecessary
516 ivs from the set always. */
517
518DEFPARAM(PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND,
519 "iv-always-prune-cand-set-bound",
8fb42bbc 520 "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization.",
13ea2c1f 521 10, 0, 0)
522
a89ef955 523DEFPARAM(PARAM_SCEV_MAX_EXPR_SIZE,
524 "scev-max-expr-size",
8fb42bbc 525 "Bound on size of expressions used in the scalar evolutions analyzer.",
99df7432 526 100, 0, 0)
527
528DEFPARAM(PARAM_SCEV_MAX_EXPR_COMPLEXITY,
529 "scev-max-expr-complexity",
8fb42bbc 530 "Bound on the complexity of the expressions in the scalar evolutions analyzer.",
99df7432 531 10, 0, 0)
a89ef955 532
45b13dc3 533DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS,
534 "vect-max-version-for-alignment-checks",
8fb42bbc 535 "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check.",
25e3c2e8 536 6, 0, 0)
537
45b13dc3 538DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS,
539 "vect-max-version-for-alias-checks",
8fb42bbc 540 "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check.",
45b13dc3 541 10, 0, 0)
542
d7d7032a 543DEFPARAM(PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT,
544 "vect-max-peeling-for-alignment",
8fb42bbc 545 "Max number of loop peels to enhancement alignment of data references in a loop.",
d7d7032a 546 -1, -1, 64)
547
f391504c 548DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS,
549 "max-cselib-memory-locations",
8fb42bbc 550 "The maximum memory locations recorded by cselib.",
1d8a53f4 551 500, 0, 0)
f391504c 552
2a3edec5 553#ifdef ENABLE_GC_ALWAYS_COLLECT
554# define GGC_MIN_EXPAND_DEFAULT 0
950b639c 555# define GGC_MIN_HEAPSIZE_DEFAULT 0
2a3edec5 556#else
557# define GGC_MIN_EXPAND_DEFAULT 30
950b639c 558# define GGC_MIN_HEAPSIZE_DEFAULT 4096
2a3edec5 559#endif
560
561DEFPARAM(GGC_MIN_EXPAND,
562 "ggc-min-expand",
8fb42bbc 563 "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap.",
1d8a53f4 564 GGC_MIN_EXPAND_DEFAULT, 0, 0)
2a3edec5 565
2a3edec5 566DEFPARAM(GGC_MIN_HEAPSIZE,
567 "ggc-min-heapsize",
8fb42bbc 568 "Minimum heap size before we start collecting garbage, in kilobytes.",
1d8a53f4 569 GGC_MIN_HEAPSIZE_DEFAULT, 0, 0)
950b639c 570
571#undef GGC_MIN_EXPAND_DEFAULT
572#undef GGC_MIN_HEAPSIZE_DEFAULT
2a3edec5 573
c15bc0ce 574DEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS,
575 "max-reload-search-insns",
8fb42bbc 576 "The maximum number of instructions to search backward when looking for equivalent reload.",
1d8a53f4 577 100, 0, 0)
c15bc0ce 578
77ecaaba 579DEFPARAM(PARAM_SINK_FREQUENCY_THRESHOLD,
580 "sink-frequency-threshold",
8fb42bbc 581 "Target block's relative execution frequency (as a percentage) required to sink a statement.",
77ecaaba 582 75, 0, 100)
583
4c50e1f4 584DEFPARAM(PARAM_MAX_SCHED_REGION_BLOCKS,
585 "max-sched-region-blocks",
8fb42bbc 586 "The maximum number of blocks in a region to be considered for interblock scheduling.",
1d8a53f4 587 10, 0, 0)
4c50e1f4 588
589DEFPARAM(PARAM_MAX_SCHED_REGION_INSNS,
590 "max-sched-region-insns",
8fb42bbc 591 "The maximum number of insns in a region to be considered for interblock scheduling.",
1d8a53f4 592 100, 0, 0)
4c50e1f4 593
e1ab7874 594DEFPARAM(PARAM_MAX_PIPELINE_REGION_BLOCKS,
595 "max-pipeline-region-blocks",
8fb42bbc 596 "The maximum number of blocks in a region to be considered for interblock scheduling.",
e1ab7874 597 15, 0, 0)
598
599DEFPARAM(PARAM_MAX_PIPELINE_REGION_INSNS,
600 "max-pipeline-region-insns",
8fb42bbc 601 "The maximum number of insns in a region to be considered for interblock scheduling.",
e1ab7874 602 200, 0, 0)
603
fbf0ba35 604DEFPARAM(PARAM_MIN_SPEC_PROB,
605 "min-spec-prob",
8fb42bbc 606 "The minimum probability of reaching a source block for interblock speculative scheduling.",
fbf0ba35 607 40, 0, 0)
608
4bfe0e7b 609DEFPARAM(PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS,
610 "max-sched-extend-regions-iters",
8fb42bbc 611 "The maximum number of iterations through CFG to extend regions.",
475a74e0 612 0, 0, 0)
4bfe0e7b 613
6a1cdb4d 614DEFPARAM(PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
615 "max-sched-insn-conflict-delay",
8fb42bbc 616 "The maximum conflict delay for an insn to be considered for speculative motion.",
6a1cdb4d 617 3, 1, 10)
618
619DEFPARAM(PARAM_SCHED_SPEC_PROB_CUTOFF,
620 "sched-spec-prob-cutoff",
621 "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled.",
622 40, 0, 100)
623
0a15667c 624DEFPARAM(PARAM_SCHED_STATE_EDGE_PROB_CUTOFF,
625 "sched-state-edge-prob-cutoff",
626 "The minimum probability an edge must have for the scheduler to save its state across it.",
627 10, 0, 100)
628
e1ab7874 629DEFPARAM(PARAM_SELSCHED_MAX_LOOKAHEAD,
630 "selsched-max-lookahead",
8fb42bbc 631 "The maximum size of the lookahead window of selective scheduling.",
e1ab7874 632 50, 0, 0)
633
634DEFPARAM(PARAM_SELSCHED_MAX_SCHED_TIMES,
635 "selsched-max-sched-times",
8fb42bbc 636 "Maximum number of times that an insn could be scheduled.",
e1ab7874 637 2, 0, 0)
638
639DEFPARAM(PARAM_SELSCHED_INSNS_TO_RENAME,
640 "selsched-insns-to-rename",
8fb42bbc 641 "Maximum number of instructions in the ready list that are considered eligible for renaming.",
e1ab7874 642 2, 0, 0)
643
644DEFPARAM (PARAM_SCHED_MEM_TRUE_DEP_COST,
645 "sched-mem-true-dep-cost",
8fb42bbc 646 "Minimal distance between possibly conflicting store and load.",
e1ab7874 647 1, 0, 0)
648
34aaed43 649DEFPARAM (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH,
650 "sched-autopref-queue-depth",
651 "Hardware autoprefetcher scheduler model control flag. Number of lookahead cycles the model looks into; at '0' only enable instruction sorting heuristic. Disabled by default.",
652 -1, 0, 0)
653
9c8b7028 654DEFPARAM(PARAM_MAX_LAST_VALUE_RTL,
655 "max-last-value-rtl",
8fb42bbc 656 "The maximum number of RTL nodes that can be recorded as combiner's last value.",
9c8b7028 657 10000, 0, 0)
658
5b3d4832 659DEFPARAM(PARAM_MAX_COMBINE_INSNS,
660 "max-combine-insns",
8fb42bbc 661 "The maximum number of insns combine tries to combine.",
5b3d4832 662 4, 2, 4)
663
00b76131 664/* INTEGER_CST nodes are shared for values [{-1,0} .. N) for
665 {signed,unsigned} integral types. This determines N.
a4c52080 666 Experimentation shows 251 to be a good value that generates the
667 least amount of garbage for allocating the TREE_VEC storage. */
00b76131 668DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
669 "integer-share-limit",
8fb42bbc 670 "The upper bound for sharing integer constants.",
a4c52080 671 251, 2, 2)
00b76131 672
f1a0edff 673DEFPARAM (PARAM_SSP_BUFFER_SIZE,
674 "ssp-buffer-size",
8fb42bbc 675 "The lower bound for a buffer to be considered for stack smashing protection.",
f1a0edff 676 8, 1, 0)
677
1906368d 678DEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING,
679 "min-size-for-stack-sharing",
680 "The minimum size of variables taking part in stack slot sharing "
8fb42bbc 681 "when not optimizing.",
1906368d 682 32, 0, 0)
683
cf024d22 684/* When we thread through a block we have to make copies of the
685 statements within the block. Clearly for large blocks the code
686 duplication is bad.
687
688 PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS specifies the maximum number
689 of statements and PHI nodes allowed in a block which is going to
690 be duplicated for thread jumping purposes.
691
692 Some simple analysis showed that more than 99% of the jump
693 threading opportunities are for blocks with less than 15
694 statements. So we can get the benefits of jump threading
695 without excessive code bloat for pathological cases with the
696 throttle set at 15 statements. */
697DEFPARAM (PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS,
698 "max-jump-thread-duplication-stmts",
8fb42bbc 699 "Maximum number of statements allowed in a block that needs to be duplicated when threading jumps.",
cf024d22 700 15, 0, 0)
f0ee0b5b 701
702/* This is the maximum number of fields a variable may have before the pointer analysis machinery
48e1416a 703 will stop trying to treat it in a field-sensitive manner.
f0ee0b5b 704 There are programs out there with thousands of fields per structure, and handling them
705 field-sensitively is not worth the cost. */
706DEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
707 "max-fields-for-field-sensitive",
8fb42bbc 708 "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable.",
77975172 709 0, 0, 0)
23df5e5b 710
711DEFPARAM(PARAM_MAX_SCHED_READY_INSNS,
712 "max-sched-ready-insns",
8fb42bbc 713 "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass.",
23df5e5b 714 100, 0, 0)
715
1242bee6 716/* This is the maximum number of active local stores RTL DSE will consider. */
717DEFPARAM (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES,
718 "max-dse-active-local-stores",
8fb42bbc 719 "Maximum number of active local stores in RTL dead store elimination.",
1242bee6 720 5000, 0, 0)
721
07804af5 722/* Prefetching and cache-optimizations related parameters. Default values are
723 usually set by machine description. */
724
725/* The number of insns executed before prefetch is completed. */
726
727DEFPARAM (PARAM_PREFETCH_LATENCY,
728 "prefetch-latency",
8fb42bbc 729 "The number of insns executed before prefetch is completed.",
07804af5 730 200, 0, 0)
731
732/* The number of prefetches that can run at the same time. */
733
734DEFPARAM (PARAM_SIMULTANEOUS_PREFETCHES,
735 "simultaneous-prefetches",
8fb42bbc 736 "The number of prefetches that can run at the same time.",
07804af5 737 3, 0, 0)
738
0c916a7b 739/* The size of L1 cache in kB. */
07804af5 740
741DEFPARAM (PARAM_L1_CACHE_SIZE,
742 "l1-cache-size",
8fb42bbc 743 "The size of L1 cache.",
0c916a7b 744 64, 0, 0)
07804af5 745
746/* The size of L1 cache line in bytes. */
747
748DEFPARAM (PARAM_L1_CACHE_LINE_SIZE,
749 "l1-cache-line-size",
8fb42bbc 750 "The size of L1 cache line.",
07804af5 751 32, 0, 0)
752
0c916a7b 753/* The size of L2 cache in kB. */
754
755DEFPARAM (PARAM_L2_CACHE_SIZE,
756 "l2-cache-size",
8fb42bbc 757 "The size of L2 cache.",
0c916a7b 758 512, 0, 0)
759
a1406b2e 760/* Whether we should use canonical types rather than deep "structural"
761 type checking. Setting this value to 1 (the default) improves
762 compilation performance in the C++ and Objective-C++ front end;
763 this value should only be set to zero to work around bugs in the
764 canonical type system by disabling it. */
765
766DEFPARAM (PARAM_USE_CANONICAL_TYPES,
767 "use-canonical-types",
8fb42bbc 768 "Whether to use canonical types.",
a1406b2e 769 1, 0, 1)
82a67b2c 770
771DEFPARAM (PARAM_MAX_PARTIAL_ANTIC_LENGTH,
772 "max-partial-antic-length",
8fb42bbc 773 "Maximum length of partial antic set when performing tree pre optimization.",
82a67b2c 774 100, 0, 0)
775
a9b2282e 776/* The following is used as a stop-gap limit for cases where really huge
777 SCCs blow up memory and compile-time use too much. If we hit this limit,
778 SCCVN and such FRE and PRE will be not done at all for the current
779 function. */
780
781DEFPARAM (PARAM_SCCVN_MAX_SCC_SIZE,
782 "sccvn-max-scc-size",
8fb42bbc 783 "Maximum size of a SCC before SCCVN stops processing a function.",
a9b2282e 784 10000, 10, 0)
785
297a2110 786/* The following is used as a stop-gap limit for cases where really huge
787 functions blow up compile-time use too much. It limits the number of
788 alias-queries we do for finding common subexpressions for memory loads and
789 stores. The number of alias-queries is otherwise limited by the number of
790 stores on paths to function entry. */
791
792DEFPARAM (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS,
793 "sccvn-max-alias-queries-per-access",
8fb42bbc 794 "Maximum number of disambiguations to perform per memory access.",
297a2110 795 1000, 0, 0)
796
47dd2e78 797DEFPARAM (PARAM_IRA_MAX_LOOPS_NUM,
798 "ira-max-loops-num",
8fb42bbc 799 "Max loops number for regional RA.",
ddf888a5 800 100, 0, 0)
47dd2e78 801
95c83f01 802DEFPARAM (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE,
803 "ira-max-conflict-table-size",
8fb42bbc 804 "Max size of conflict table in MB.",
d0388252 805 1000, 0, 0)
95c83f01 806
e8eed2f8 807DEFPARAM (PARAM_IRA_LOOP_RESERVED_REGS,
808 "ira-loop-reserved-regs",
8fb42bbc 809 "The number of registers in each class kept unused by loop invariant motion.",
e8eed2f8 810 2, 0, 0)
811
eb3db740 812DEFPARAM (PARAM_LRA_MAX_CONSIDERED_RELOAD_PSEUDOS,
813 "lra-max-considered-reload-pseudos",
8fb42bbc 814 "The max number of reload pseudos which are considered during spilling a non-reload pseudo.",
eb3db740 815 500, 0, 0)
816
4b69081d 817DEFPARAM (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF,
818 "lra-inheritance-ebb-probability-cutoff",
8fb42bbc 819 "Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA.",
4b69081d 820 40, 0, 100)
821
a347af29 822/* Switch initialization conversion will refuse to create arrays that are
823 bigger than this parameter times the number of switch branches. */
824
825DEFPARAM (PARAM_SWITCH_CONVERSION_BRANCH_RATIO,
826 "switch-conversion-max-branch-ratio",
827 "The maximum ratio between array size and switch branches for "
8fb42bbc 828 "a switch conversion to take place.",
a347af29 829 8, 1, 0)
830
b8ad26cc 831/* Size of tiles when doing loop blocking. */
832
833DEFPARAM (PARAM_LOOP_BLOCK_TILE_SIZE,
834 "loop-block-tile-size",
8fb42bbc 835 "size of tiles for loop blocking.",
b8ad26cc 836 51, 0, 0)
837
c2e502a5 838/* Maximal number of parameters that we allow in a SCoP. */
839
840DEFPARAM (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS,
841 "graphite-max-nb-scop-params",
8fb42bbc 842 "maximum number of parameters in a SCoP.",
a4e17a42 843 7, 0, 0)
c2e502a5 844
94ba21de 845/* Maximal number of basic blocks in the functions analyzed by Graphite. */
846
847DEFPARAM (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION,
848 "graphite-max-bbs-per-function",
8fb42bbc 849 "maximum number of basic blocks per function to be analyzed by Graphite.",
94ba21de 850 100, 0, 0)
851
84e96705 852/* Maximal number of array references in a scop. */
853
854DEFPARAM (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP,
855 "graphite-max-arrays-per-scop",
8fb42bbc 856 "maximum number of arrays per scop.",
84e96705 857 100, 0, 0)
858
7eb20e71 859/* Maximal number of basic blocks in the functions analyzed by Graphite. */
860
861DEFPARAM (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION,
862 "graphite-min-loops-per-function",
8fb42bbc 863 "minimal number of loops per function to be analyzed by Graphite.",
7eb20e71 864 2, 0, 0)
865
36620673 866DEFPARAM (PARAM_MAX_ISL_OPERATIONS,
867 "max-isl-operations",
71130ef8 868 "maximum number of isl operations, 0 means unlimited",
36620673 869 350000, 0, 0)
870
c7af8ae7 871/* Avoid data dependence analysis on very large loops. */
872DEFPARAM (PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS,
873 "loop-max-datarefs-for-datadeps",
8fb42bbc 874 "Maximum number of datarefs in loop for building loop data dependencies.",
c7af8ae7 875 1000, 0, 0)
876
86482d6b 877/* Avoid doing loop invariant motion on very large loops. */
878
879DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP,
880 "loop-invariant-max-bbs-in-loop",
8fb42bbc 881 "Max basic blocks number in loop for loop invariant motion.",
86482d6b 882 10000, 0, 0)
883
d9e50003 884/* When the parameter is 1, use the internal function id
885 to look up for profile data. Otherwise, use a more stable
886 external id based on assembler name and source location. */
887DEFPARAM (PARAM_PROFILE_FUNC_INTERNAL_ID,
888 "profile-func-internal-id",
8fb42bbc 889 "use internal function id in profile lookup.",
d9e50003 890 0, 0, 1)
b74245ec 891
892/* When the parameter is 1, track the most frequent N target
893 addresses in indirect-call profile. This disables
894 indirect_call_profiler_v2 which tracks single target. */
895DEFPARAM (PARAM_INDIR_CALL_TOPN_PROFILE,
896 "indir-call-topn-profile",
8fb42bbc 897 "track topn target addresses in indirect-call profile.",
b74245ec 898 0, 0, 1)
d9e50003 899
37545e54 900/* Avoid SLP vectorization of large basic blocks. */
901DEFPARAM (PARAM_SLP_MAX_INSNS_IN_BB,
902 "slp-max-insns-in-bb",
8fb42bbc 903 "Maximum number of instructions in basic block to be considered for SLP vectorization.",
37545e54 904 1000, 0, 0)
905
0ab353e1 906DEFPARAM (PARAM_MIN_INSN_TO_PREFETCH_RATIO,
907 "min-insn-to-prefetch-ratio",
17d6d879 908 "Min. ratio of insns to prefetches to enable prefetching for "
8fb42bbc 909 "a loop with an unknown trip count.",
cd0925e2 910 9, 0, 0)
0ab353e1 911
912DEFPARAM (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO,
913 "prefetch-min-insn-to-mem-ratio",
8fb42bbc 914 "Min. ratio of insns to mem ops to enable prefetching in a loop.",
0ab353e1 915 3, 0, 0)
916
76f4ab1c 917/* Set maximum hash table size for var tracking. */
918
919DEFPARAM (PARAM_MAX_VARTRACK_SIZE,
920 "max-vartrack-size",
8fb42bbc 921 "Max. size of var tracking hash tables.",
76f4ab1c 922 50000000, 0, 0)
923
b5c80997 924/* Set maximum recursion depth for var tracking expression expansion
925 and resolution. */
926
927DEFPARAM (PARAM_MAX_VARTRACK_EXPR_DEPTH,
928 "max-vartrack-expr-depth",
8fb42bbc 929 "Max. recursion depth for expanding var tracking expressions.",
2e337e8f 930 12, 0, 0)
b5c80997 931
78ea005d 932/* Set maximum length of value location list for which var tracking
933 should add reverse operations. */
934
935DEFPARAM (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE,
936 "max-vartrack-reverse-op-size",
8fb42bbc 937 "Max. size of loc list for which reverse ops should be added.",
78ea005d 938 50, 0, 0)
939
9845d120 940/* Set minimum insn uid for non-debug insns. */
941
942DEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID,
943 "min-nondebug-insn-uid",
8fb42bbc 944 "The minimum UID to be used for a nondebug insn.",
9845d120 945 0, 1, 0)
946
2f29eac3 947DEFPARAM (PARAM_IPA_SRA_PTR_GROWTH_FACTOR,
948 "ipa-sra-ptr-growth-factor",
17d6d879 949 "Maximum allowed growth of size of new parameters ipa-sra replaces "
8fb42bbc 950 "a pointer to an aggregate with.",
2f29eac3 951 2, 0, 0)
952
4c0315d0 953DEFPARAM (PARAM_TM_MAX_AGGREGATE_SIZE,
954 "tm-max-aggregate-size",
955 "Size in bytes after which thread-local aggregates should be "
956 "instrumented with the logging functions instead of save/restore "
8fb42bbc 957 "pairs.",
4c0315d0 958 9, 0, 0)
959
67622758 960DEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SPEED,
961 "sra-max-scalarization-size-Ospeed",
962 "Maximum size, in storage units, of an aggregate which should be "
8fb42bbc 963 "considered for scalarization when compiling for speed.",
67622758 964 0, 0, 0)
965
966DEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SIZE,
967 "sra-max-scalarization-size-Osize",
968 "Maximum size, in storage units, of an aggregate which should be "
8fb42bbc 969 "considered for scalarization when compiling for size.",
67622758 970 0, 0, 0)
971
821d0e0f 972DEFPARAM (PARAM_IPA_CP_VALUE_LIST_SIZE,
973 "ipa-cp-value-list-size",
974 "Maximum size of a list of values associated with each parameter for "
8fb42bbc 975 "interprocedural constant propagation.",
1caef38b 976 8, 0, 0)
977
821d0e0f 978DEFPARAM (PARAM_IPA_CP_EVAL_THRESHOLD,
979 "ipa-cp-eval-threshold",
980 "Threshold ipa-cp opportunity evaluation that is still considered "
8fb42bbc 981 "beneficial to clone..",
821d0e0f 982 500, 0, 0)
983
39fcd838 984DEFPARAM (PARAM_IPA_CP_RECURSION_PENALTY,
985 "ipa-cp-recursion-penalty",
986 "Percentage penalty the recursive functions will receive when they "
8fb42bbc 987 "are evaluated for cloning..",
39fcd838 988 40, 0, 100)
989
990DEFPARAM (PARAM_IPA_CP_SINGLE_CALL_PENALTY,
991 "ipa-cp-single-call-penalty",
992 "Percentage penalty functions containg a single call to another "
8fb42bbc 993 "function will receive when they are evaluated for cloning..",
39fcd838 994 15, 0, 100)
995
699f00b5 996DEFPARAM (PARAM_IPA_MAX_AGG_ITEMS,
997 "ipa-max-agg-items",
998 "Maximum number of aggregate content items for a parameter in "
8fb42bbc 999 "jump functions and lattices.",
699f00b5 1000 16, 0, 0)
1001
803a7988 1002DEFPARAM (PARAM_IPA_CP_LOOP_HINT_BONUS,
1003 "ipa-cp-loop-hint-bonus",
1004 "Compile-time bonus IPA-CP assigns to candidates which make loop "
8fb42bbc 1005 "bounds or strides known..",
803a7988 1006 64, 0, 0)
1007
3a1cb879 1008DEFPARAM (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS,
1009 "ipa-cp-array-index-hint-bonus",
1010 "Compile-time bonus IPA-CP assigns to candidates which make an array "
8fb42bbc 1011 "index known..",
3a1cb879 1012 48, 0, 0)
1013
24430d08 1014DEFPARAM (PARAM_IPA_MAX_AA_STEPS,
1015 "ipa-max-aa-steps",
1016 "Maximum number of statements that will be visited by IPA formal "
8fb42bbc 1017 "parameter analysis based on alias analysis in any given function.",
24430d08 1018 25000, 0, 0)
1019
48e3ea52 1020/* WHOPR partitioning configuration. */
1021
1022DEFPARAM (PARAM_LTO_PARTITIONS,
1023 "lto-partitions",
8fb42bbc 1024 "Number of partitions the program should be split to.",
f94df44d 1025 32, 1, 0)
48e3ea52 1026
1027DEFPARAM (MIN_PARTITION_SIZE,
1028 "lto-min-partition",
8fb42bbc 1029 "Minimal size of a partition for LTO (in estimated instructions).",
48e3ea52 1030 1000, 0, 0)
f91726b4 1031
1032/* Diagnostic parameters. */
1033
1034DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP,
1035 "cxx-max-namespaces-for-diagnostic-help",
1036 "Maximum number of namespaces to search for alternatives when "
8fb42bbc 1037 "name lookup fails.",
f91726b4 1038 1000, 0, 0)
1039
ec611e12 1040/* Maximum number of conditional store pairs that can be sunk. */
1041DEFPARAM (PARAM_MAX_STORES_TO_SINK,
1042 "max-stores-to-sink",
8fb42bbc 1043 "Maximum number of conditional store pairs that can be sunk.",
ec611e12 1044 2, 0, 0)
1045
7e0c8808 1046/* Override CASE_VALUES_THRESHOLD of when to switch from doing switch
1047 statements via if statements to using a table jump operation. If the value
1048 is 0, the default CASE_VALUES_THRESHOLD will be used. */
1049DEFPARAM (PARAM_CASE_VALUES_THRESHOLD,
1050 "case-values-threshold",
1051 "The smallest number of different values for which it is best to "
1052 "use a jump-table instead of a tree of conditional branches, "
8fb42bbc 1053 "if 0, use the default for the machine.",
7e0c8808 1054 0, 0, 0)
1055
4bb60ec7 1056/* Data race flags for C++0x memory model compliance. */
1057DEFPARAM (PARAM_ALLOW_STORE_DATA_RACES,
1058 "allow-store-data-races",
8fb42bbc 1059 "Allow new data races on stores to be introduced.",
f4d15364 1060 0, 0, 1)
1cd6e20d 1061
5b1c765d 1062/* Reassociation width to be used by tree reassoc optimization. */
1063DEFPARAM (PARAM_TREE_REASSOC_WIDTH,
1064 "tree-reassoc-width",
1065 "Set the maximum number of instructions executed in parallel in "
8fb42bbc 1066 "reassociated tree. If 0, use the target dependent heuristic..",
5b1c765d 1067 0, 0, 0)
1068
51385f30 1069DEFPARAM (PARAM_MAX_TAIL_MERGE_COMPARISONS,
1070 "max-tail-merge-comparisons",
8fb42bbc 1071 "Maximum amount of similar bbs to compare a bb with.",
51385f30 1072 10, 0, 0)
1073
1074DEFPARAM (PARAM_MAX_TAIL_MERGE_ITERATIONS,
1075 "max-tail-merge-iterations",
8fb42bbc 1076 "Maximum amount of iterations of the pass over a function.",
51385f30 1077 2, 0, 0)
ec611e12 1078
2d64dc70 1079/* Maximum number of strings for which strlen optimization pass will
1080 track string lenths. */
1081DEFPARAM (PARAM_MAX_TRACKED_STRLENS,
1082 "max-tracked-strlens",
1083 "Maximum number of strings for which strlen optimization pass will "
8fb42bbc 1084 "track string lengths.",
150a0f7d 1085 10000, 0, 0)
2d64dc70 1086
d86dbf92 1087/* Keep this in sync with the sched_pressure_algorithm enum. */
1088DEFPARAM (PARAM_SCHED_PRESSURE_ALGORITHM,
1089 "sched-pressure-algorithm",
8fb42bbc 1090 "Which -fsched-pressure algorithm to apply.",
d86dbf92 1091 1, 1, 2)
1092
df4c32b3 1093/* Maximum length of candidate scans in straight-line strength reduction. */
1094DEFPARAM (PARAM_MAX_SLSR_CANDIDATE_SCAN,
1095 "max-slsr-cand-scan",
1096 "Maximum length of candidate scans for straight-line "
8fb42bbc 1097 "strength reduction.",
df4c32b3 1098 50, 1, 999999)
1099
bf2b7c22 1100DEFPARAM (PARAM_ASAN_STACK,
1101 "asan-stack",
8fb42bbc 1102 "Enable asan stack protection.",
bf2b7c22 1103 1, 0, 1)
1104
1105DEFPARAM (PARAM_ASAN_GLOBALS,
1106 "asan-globals",
8fb42bbc 1107 "Enable asan globals protection.",
bf2b7c22 1108 1, 0, 1)
1109
1110DEFPARAM (PARAM_ASAN_INSTRUMENT_WRITES,
1111 "asan-instrument-writes",
8fb42bbc 1112 "Enable asan store operations protection.",
bf2b7c22 1113 1, 0, 1)
1114
1115DEFPARAM (PARAM_ASAN_INSTRUMENT_READS,
1116 "asan-instrument-reads",
8fb42bbc 1117 "Enable asan load operations protection.",
bf2b7c22 1118 1, 0, 1)
1119
1120DEFPARAM (PARAM_ASAN_MEMINTRIN,
1121 "asan-memintrin",
8fb42bbc 1122 "Enable asan builtin functions protection.",
bf2b7c22 1123 1, 0, 1)
1124
1125DEFPARAM (PARAM_ASAN_USE_AFTER_RETURN,
1126 "asan-use-after-return",
8fb42bbc 1127 "Enable asan detection of use-after-return bugs.",
bf2b7c22 1128 1, 0, 1)
13e8ebe8 1129
4f86f720 1130DEFPARAM (PARAM_ASAN_INSTRUMENTATION_WITH_CALL_THRESHOLD,
1131 "asan-instrumentation-with-call-threshold",
ff326078 1132 "Use callbacks instead of inline code if number of accesses "
8fb42bbc 1133 "in function becomes greater or equal to this number.",
ff326078 1134 7000, 0, INT_MAX)
4f86f720 1135
13e8ebe8 1136DEFPARAM (PARAM_UNINIT_CONTROL_DEP_ATTEMPTS,
1137 "uninit-control-dep-attempts",
1138 "Maximum number of nested calls to search for control dependencies "
8fb42bbc 1139 "during uninitialized variable analysis.",
13e8ebe8 1140 1000, 1, 0)
058a1b7a 1141
1142DEFPARAM (PARAM_CHKP_MAX_CTOR_SIZE,
1143 "chkp-max-ctor-size",
1144 "Maximum number of statements to be included into a single static "
8fb42bbc 1145 "constructor generated by Pointer Bounds Checker.",
058a1b7a 1146 5000, 100, 0)
ded1c768 1147
9b849350 1148DEFPARAM (PARAM_FSM_SCALE_PATH_STMTS,
1149 "fsm-scale-path-stmts",
1150 "Scale factor to apply to the number of statements in a threading path when comparing to the number of (scaled) blocks.",
1151 2, 1, 10)
1152
1153DEFPARAM (PARAM_FSM_SCALE_PATH_BLOCKS,
1154 "fsm-scale-path-blocks",
1155 "Scale factor to apply to the number of blocks in a threading path when comparing to the number of (scaled) statements.",
1156 3, 1, 10)
1157
ded1c768 1158DEFPARAM (PARAM_MAX_FSM_THREAD_PATH_INSNS,
1159 "max-fsm-thread-path-insns",
8fb42bbc 1160 "Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path.",
ded1c768 1161 100, 1, 999999)
1162
1163DEFPARAM (PARAM_MAX_FSM_THREAD_LENGTH,
1164 "max-fsm-thread-length",
8fb42bbc 1165 "Maximum number of basic blocks on a finite state automaton jump thread path.",
ded1c768 1166 10, 1, 999999)
1167
1168DEFPARAM (PARAM_MAX_FSM_THREAD_PATHS,
1169 "max-fsm-thread-paths",
8fb42bbc 1170 "Maximum number of new jump thread paths to create for a finite state automaton.",
ded1c768 1171 50, 1, 999999)
9a782341 1172
1173DEFPARAM (PARAM_PARLOOPS_CHUNK_SIZE,
1174 "parloops-chunk-size",
8fb42bbc 1175 "Chunk size of omp schedule for loops parallelized by parloops.",
9a782341 1176 0, 0, 0)
ee230333 1177
2331aa43 1178DEFPARAMENUM5 (PARAM_PARLOOPS_SCHEDULE,
1179 "parloops-schedule",
1180 "Schedule type of omp schedule for loops parallelized by "
8fb42bbc 1181 "parloops (static, dynamic, guided, auto, runtime).",
2331aa43 1182 static,
1183 static, dynamic, guided, auto, runtime)
1184
ee230333 1185DEFPARAM (PARAM_MAX_SSA_NAME_QUERY_DEPTH,
1186 "max-ssa-name-query-depth",
1187 "Maximum recursion depth allowed when querying a property of an"
8fb42bbc 1188 " SSA name.",
ee230333 1189 2, 1, 0)
bd8bece2 1190
1191DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_INSNS,
1192 "max-rtl-if-conversion-insns",
1193 "Maximum number of insns in a basic block to consider for RTL "
1194 "if-conversion.",
1195 10, 0, 99)
56686608 1196
1197DEFPARAM (PARAM_HSA_GEN_DEBUG_STORES,
1198 "hsa-gen-debug-stores",
1199 "Level of hsa debug stores verbosity",
1200 0, 0, 1)
9a33a2e8 1201/*
bf2b7c22 1202
9a33a2e8 1203Local variables:
1204mode:c
8747a9a4 1205End:
1206*/