]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/params.def
PR tree-optimization/33562
[thirdparty/gcc.git] / gcc / params.def
CommitLineData
9a33a2e8 1/* params.def - Run-time parameters.
aad93da1 2 Copyright (C) 2001-2017 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",
d0abd9e0 54 "The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-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
15ab825d 347/* The maximum number of insns in loop header duplicated by he copy loop
348 headers pass. */
349DEFPARAM(PARAM_MAX_LOOP_HEADER_INSNS,
350 "max-loop-header-insns",
351 "The maximum number of insns in loop header duplicated by he copy loop headers pass.",
352 20, 0, 0)
353
b9d73ea6 354/* The maximum number of iterations of a loop the brute force algorithm
355 for analysis of # of iterations of the loop tries to evaluate. */
356DEFPARAM(PARAM_MAX_ITERATIONS_TO_TRACK,
357 "max-iterations-to-track",
8fb42bbc 358 "Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates.",
1d8a53f4 359 1000, 0, 0)
883bb2bb 360/* A cutoff to avoid costly computations of the number of iterations in
361 the doloop transformation. */
362DEFPARAM(PARAM_MAX_ITERATIONS_COMPUTATION_COST,
363 "max-iterations-computation-cost",
8fb42bbc 364 "Bound on the cost of an expression to compute the number of iterations.",
883bb2bb 365 10, 0, 0)
b9d73ea6 366
406a73e7 367/* This parameter is used to tune SMS MAX II calculations. */
368DEFPARAM(PARAM_SMS_MAX_II_FACTOR,
369 "sms-max-ii-factor",
8fb42bbc 370 "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop.",
1d8a53f4 371 100, 0, 0)
4f7f77aa 372/* The minimum value of stage count that swing modulo scheduler will generate. */
373DEFPARAM(PARAM_SMS_MIN_SC,
374 "sms-min-sc",
375 "The minimum value of stage count that swing modulo scheduler will generate.",
376 2, 1, 1)
406a73e7 377DEFPARAM(PARAM_SMS_DFA_HISTORY,
378 "sms-dfa-history",
8fb42bbc 379 "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.",
1d8a53f4 380 0, 0, 0)
406a73e7 381DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
382 "sms-loop-average-count-threshold",
8fb42bbc 383 "A threshold on the average loop count considered by the swing modulo scheduler.",
1d8a53f4 384 0, 0, 0)
406a73e7 385
f34acf02 386DEFPARAM(HOT_BB_COUNT_WS_PERMILLE,
387 "hot-bb-count-ws-permille",
388 "A basic block profile count is considered hot if it contributes to "
8fb42bbc 389 "the given permillage of the entire profiled execution.",
f34acf02 390 999, 0, 1000)
429fa7fa 391DEFPARAM(HOT_BB_FREQUENCY_FRACTION,
392 "hot-bb-frequency-fraction",
8fb42bbc 393 "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot.",
1d8a53f4 394 1000, 0, 0)
5d157ac1 395
c1acf60c 396DEFPARAM(UNLIKELY_BB_COUNT_FRACTION,
397 "unlikely-bb-count-fraction",
8fb42bbc 398 "The minimum fraction of profile runs a given basic block execution count must be not to be considered unlikely.",
c1acf60c 399 20, 1, 10000)
400
7bd530d9 401DEFPARAM (PARAM_ALIGN_THRESHOLD,
402 "align-threshold",
8fb42bbc 403 "Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment.",
abf3fde4 404 100, 1, 0)
7bd530d9 405
406DEFPARAM (PARAM_ALIGN_LOOP_ITERATIONS,
407 "align-loop-iterations",
34d36b7a 408 "Loops iterating at least selected number of iterations will get loop alignment..",
7bd530d9 409 4, 0, 0)
410
5d157ac1 411/* For guessed profiles, the loops having unknown number of iterations
412 are predicted to iterate relatively few (10) times at average.
413 For functions containing one loop with large known number of iterations
414 and other loops having unbounded loops we would end up predicting all
7063afc3 415 the other loops cold that is not usually the case. So we need to artificially
48e1416a 416 flatten the profile.
5d157ac1 417
191ec5a2 418 We need to cut the maximal predicted iterations to large enough iterations
f34acf02 419 so the loop appears important, but safely within maximum hotness
5d157ac1 420 range. */
421
422DEFPARAM(PARAM_MAX_PREDICTED_ITERATIONS,
423 "max-predicted-iterations",
8fb42bbc 424 "The maximum number of loop iterations we predict statically.",
5d157ac1 425 100, 0, 0)
21853731 426
427/* This parameter controls the probability of builtin_expect. The default
428 value is 90%. This empirical value is obtained through the weighted
429 probability of FDO counters (with the FDO count value as the weight)
8fb42bbc 430 in some real world programs:
21853731 431 (1) Google performance test benchmarks: the probability is 0.9081.
432 (2) Linux 3.3 kernel running Google search workload: the probability
433 is 0.8717. */
434
435DEFPARAM(BUILTIN_EXPECT_PROBABILITY,
436 "builtin-expect-probability",
437 "Set the estimated probability in percentage for builtin expect. The default value is 90% probability.",
438 90, 0, 100)
fa99ab3d 439DEFPARAM(TRACER_DYNAMIC_COVERAGE_FEEDBACK,
440 "tracer-dynamic-coverage-feedback",
8fb42bbc 441 "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available.",
1d8a53f4 442 95, 0, 100)
fa99ab3d 443DEFPARAM(TRACER_DYNAMIC_COVERAGE,
444 "tracer-dynamic-coverage",
8fb42bbc 445 "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available.",
1d8a53f4 446 75, 0, 100)
fa99ab3d 447DEFPARAM(TRACER_MAX_CODE_GROWTH,
448 "tracer-max-code-growth",
8fb42bbc 449 "Maximal code growth caused by tail duplication (in percent).",
1d8a53f4 450 100, 0, 0)
fa99ab3d 451DEFPARAM(TRACER_MIN_BRANCH_RATIO,
452 "tracer-min-branch-ratio",
8fb42bbc 453 "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent).",
1d8a53f4 454 10, 0, 100)
fa99ab3d 455DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY_FEEDBACK,
456 "tracer-min-branch-probability-feedback",
8fb42bbc 457 "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available.",
1d8a53f4 458 80, 0, 100)
fa99ab3d 459DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY,
460 "tracer-min-branch-probability",
8fb42bbc 461 "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available.",
1d8a53f4 462 50, 0, 100)
2a3edec5 463
2a5b4716 464/* The maximum number of incoming edges to consider for crossjumping. */
465DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES,
466 "max-crossjump-edges",
8fb42bbc 467 "The maximum number of incoming edges to consider for crossjumping.",
1d8a53f4 468 100, 0, 0)
2a5b4716 469
43341e2f 470/* The minimum number of matching instructions to consider for crossjumping. */
471DEFPARAM(PARAM_MIN_CROSSJUMP_INSNS,
472 "min-crossjump-insns",
8fb42bbc 473 "The minimum number of matching instructions to consider for crossjumping.",
ce4f2aee 474 5, 1, 0)
43341e2f 475
6b6a2169 476/* The maximum number expansion factor when copying basic blocks. */
477DEFPARAM(PARAM_MAX_GROW_COPY_BB_INSNS,
478 "max-grow-copy-bb-insns",
8fb42bbc 479 "The maximum expansion factor when copying basic blocks.",
6b6a2169 480 8, 0, 0)
481
b70a5a99 482/* The maximum number of insns to duplicate when unfactoring computed gotos. */
483DEFPARAM(PARAM_MAX_GOTO_DUPLICATION_INSNS,
484 "max-goto-duplication-insns",
8fb42bbc 485 "The maximum number of insns to duplicate when unfactoring computed gotos.",
b70a5a99 486 8, 0, 0)
487
38ccff25 488/* The maximum length of path considered in cse. */
489DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH,
490 "max-cse-path-length",
8fb42bbc 491 "The maximum length of path considered in cse.",
efbfe80e 492 10, 1, 0)
5d157ac1 493DEFPARAM(PARAM_MAX_CSE_INSNS,
0ed224e1 494 "max-cse-insns",
8fb42bbc 495 "The maximum instructions CSE process before flushing.",
5d157ac1 496 1000, 0, 0)
38ccff25 497
7d23383d 498/* The cost of expression in loop invariant motion that is considered
499 expensive. */
500DEFPARAM(PARAM_LIM_EXPENSIVE,
501 "lim-expensive",
8fb42bbc 502 "The minimum cost of an expensive expression in the loop invariant motion.",
1d8a53f4 503 20, 0, 0)
7d23383d 504
dec41e98 505/* Bound on number of candidates for induction variables below that
506 all candidates are considered for each use in induction variable
507 optimizations. */
508
509DEFPARAM(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
510 "iv-consider-all-candidates-bound",
8fb42bbc 511 "Bound on number of candidates below that all candidates are considered in iv optimizations.",
4c020700 512 40, 0, 0)
dec41e98 513
514/* The induction variable optimizations give up on loops that contain more
515 induction variable uses. */
516
517DEFPARAM(PARAM_IV_MAX_CONSIDERED_USES,
518 "iv-max-considered-uses",
8fb42bbc 519 "Bound on number of iv uses in loop optimized in iv optimizations.",
1d8a53f4 520 250, 0, 0)
dec41e98 521
13ea2c1f 522/* If there are at most this number of ivs in the set, try removing unnecessary
523 ivs from the set always. */
524
525DEFPARAM(PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND,
526 "iv-always-prune-cand-set-bound",
8fb42bbc 527 "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization.",
13ea2c1f 528 10, 0, 0)
529
91188633 530DEFPARAM(PARAM_AVG_LOOP_NITER,
531 "avg-loop-niter",
532 "Average number of iterations of a loop.",
533 10, 1, 0)
534
a89ef955 535DEFPARAM(PARAM_SCEV_MAX_EXPR_SIZE,
536 "scev-max-expr-size",
8fb42bbc 537 "Bound on size of expressions used in the scalar evolutions analyzer.",
99df7432 538 100, 0, 0)
539
540DEFPARAM(PARAM_SCEV_MAX_EXPR_COMPLEXITY,
541 "scev-max-expr-complexity",
8fb42bbc 542 "Bound on the complexity of the expressions in the scalar evolutions analyzer.",
99df7432 543 10, 0, 0)
a89ef955 544
9ab8df54 545DEFPARAM (PARAM_MAX_TREE_IF_CONVERSION_PHI_ARGS,
546 "max-tree-if-conversion-phi-args",
547 "Maximum number of arguments in a PHI supported by TREE if-conversion "
548 "unless the loop is marked with simd pragma.",
549 4, 2, 0)
550
45b13dc3 551DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS,
552 "vect-max-version-for-alignment-checks",
8fb42bbc 553 "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check.",
25e3c2e8 554 6, 0, 0)
555
45b13dc3 556DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS,
557 "vect-max-version-for-alias-checks",
8fb42bbc 558 "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check.",
45b13dc3 559 10, 0, 0)
560
d7d7032a 561DEFPARAM(PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT,
562 "vect-max-peeling-for-alignment",
8fb42bbc 563 "Max number of loop peels to enhancement alignment of data references in a loop.",
d7d7032a 564 -1, -1, 64)
565
f391504c 566DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS,
567 "max-cselib-memory-locations",
8fb42bbc 568 "The maximum memory locations recorded by cselib.",
1d8a53f4 569 500, 0, 0)
f391504c 570
2a3edec5 571#ifdef ENABLE_GC_ALWAYS_COLLECT
572# define GGC_MIN_EXPAND_DEFAULT 0
950b639c 573# define GGC_MIN_HEAPSIZE_DEFAULT 0
2a3edec5 574#else
575# define GGC_MIN_EXPAND_DEFAULT 30
950b639c 576# define GGC_MIN_HEAPSIZE_DEFAULT 4096
2a3edec5 577#endif
578
579DEFPARAM(GGC_MIN_EXPAND,
580 "ggc-min-expand",
8fb42bbc 581 "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap.",
1d8a53f4 582 GGC_MIN_EXPAND_DEFAULT, 0, 0)
2a3edec5 583
2a3edec5 584DEFPARAM(GGC_MIN_HEAPSIZE,
585 "ggc-min-heapsize",
8fb42bbc 586 "Minimum heap size before we start collecting garbage, in kilobytes.",
1d8a53f4 587 GGC_MIN_HEAPSIZE_DEFAULT, 0, 0)
950b639c 588
589#undef GGC_MIN_EXPAND_DEFAULT
590#undef GGC_MIN_HEAPSIZE_DEFAULT
2a3edec5 591
c15bc0ce 592DEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS,
593 "max-reload-search-insns",
8fb42bbc 594 "The maximum number of instructions to search backward when looking for equivalent reload.",
1d8a53f4 595 100, 0, 0)
c15bc0ce 596
77ecaaba 597DEFPARAM(PARAM_SINK_FREQUENCY_THRESHOLD,
598 "sink-frequency-threshold",
8fb42bbc 599 "Target block's relative execution frequency (as a percentage) required to sink a statement.",
77ecaaba 600 75, 0, 100)
601
4c50e1f4 602DEFPARAM(PARAM_MAX_SCHED_REGION_BLOCKS,
603 "max-sched-region-blocks",
8fb42bbc 604 "The maximum number of blocks in a region to be considered for interblock scheduling.",
1d8a53f4 605 10, 0, 0)
4c50e1f4 606
607DEFPARAM(PARAM_MAX_SCHED_REGION_INSNS,
608 "max-sched-region-insns",
8fb42bbc 609 "The maximum number of insns in a region to be considered for interblock scheduling.",
1d8a53f4 610 100, 0, 0)
4c50e1f4 611
e1ab7874 612DEFPARAM(PARAM_MAX_PIPELINE_REGION_BLOCKS,
613 "max-pipeline-region-blocks",
8fb42bbc 614 "The maximum number of blocks in a region to be considered for interblock scheduling.",
e1ab7874 615 15, 0, 0)
616
617DEFPARAM(PARAM_MAX_PIPELINE_REGION_INSNS,
618 "max-pipeline-region-insns",
8fb42bbc 619 "The maximum number of insns in a region to be considered for interblock scheduling.",
e1ab7874 620 200, 0, 0)
621
fbf0ba35 622DEFPARAM(PARAM_MIN_SPEC_PROB,
623 "min-spec-prob",
8fb42bbc 624 "The minimum probability of reaching a source block for interblock speculative scheduling.",
fbf0ba35 625 40, 0, 0)
626
4bfe0e7b 627DEFPARAM(PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS,
628 "max-sched-extend-regions-iters",
8fb42bbc 629 "The maximum number of iterations through CFG to extend regions.",
475a74e0 630 0, 0, 0)
4bfe0e7b 631
6a1cdb4d 632DEFPARAM(PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
633 "max-sched-insn-conflict-delay",
8fb42bbc 634 "The maximum conflict delay for an insn to be considered for speculative motion.",
6a1cdb4d 635 3, 1, 10)
636
637DEFPARAM(PARAM_SCHED_SPEC_PROB_CUTOFF,
638 "sched-spec-prob-cutoff",
639 "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled.",
640 40, 0, 100)
641
0a15667c 642DEFPARAM(PARAM_SCHED_STATE_EDGE_PROB_CUTOFF,
643 "sched-state-edge-prob-cutoff",
644 "The minimum probability an edge must have for the scheduler to save its state across it.",
645 10, 0, 100)
646
e1ab7874 647DEFPARAM(PARAM_SELSCHED_MAX_LOOKAHEAD,
648 "selsched-max-lookahead",
8fb42bbc 649 "The maximum size of the lookahead window of selective scheduling.",
e1ab7874 650 50, 0, 0)
651
652DEFPARAM(PARAM_SELSCHED_MAX_SCHED_TIMES,
653 "selsched-max-sched-times",
8fb42bbc 654 "Maximum number of times that an insn could be scheduled.",
e1ab7874 655 2, 0, 0)
656
657DEFPARAM(PARAM_SELSCHED_INSNS_TO_RENAME,
658 "selsched-insns-to-rename",
8fb42bbc 659 "Maximum number of instructions in the ready list that are considered eligible for renaming.",
e1ab7874 660 2, 0, 0)
661
662DEFPARAM (PARAM_SCHED_MEM_TRUE_DEP_COST,
663 "sched-mem-true-dep-cost",
8fb42bbc 664 "Minimal distance between possibly conflicting store and load.",
e1ab7874 665 1, 0, 0)
666
34aaed43 667DEFPARAM (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH,
668 "sched-autopref-queue-depth",
669 "Hardware autoprefetcher scheduler model control flag. Number of lookahead cycles the model looks into; at '0' only enable instruction sorting heuristic. Disabled by default.",
670 -1, 0, 0)
671
9c8b7028 672DEFPARAM(PARAM_MAX_LAST_VALUE_RTL,
673 "max-last-value-rtl",
8fb42bbc 674 "The maximum number of RTL nodes that can be recorded as combiner's last value.",
9c8b7028 675 10000, 0, 0)
676
5b3d4832 677DEFPARAM(PARAM_MAX_COMBINE_INSNS,
678 "max-combine-insns",
8fb42bbc 679 "The maximum number of insns combine tries to combine.",
5b3d4832 680 4, 2, 4)
681
00b76131 682/* INTEGER_CST nodes are shared for values [{-1,0} .. N) for
683 {signed,unsigned} integral types. This determines N.
a4c52080 684 Experimentation shows 251 to be a good value that generates the
685 least amount of garbage for allocating the TREE_VEC storage. */
00b76131 686DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
687 "integer-share-limit",
8fb42bbc 688 "The upper bound for sharing integer constants.",
a4c52080 689 251, 2, 2)
00b76131 690
f1a0edff 691DEFPARAM (PARAM_SSP_BUFFER_SIZE,
692 "ssp-buffer-size",
8fb42bbc 693 "The lower bound for a buffer to be considered for stack smashing protection.",
f1a0edff 694 8, 1, 0)
695
1906368d 696DEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING,
697 "min-size-for-stack-sharing",
698 "The minimum size of variables taking part in stack slot sharing "
8fb42bbc 699 "when not optimizing.",
1906368d 700 32, 0, 0)
701
cf024d22 702/* When we thread through a block we have to make copies of the
703 statements within the block. Clearly for large blocks the code
704 duplication is bad.
705
706 PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS specifies the maximum number
707 of statements and PHI nodes allowed in a block which is going to
708 be duplicated for thread jumping purposes.
709
710 Some simple analysis showed that more than 99% of the jump
711 threading opportunities are for blocks with less than 15
712 statements. So we can get the benefits of jump threading
713 without excessive code bloat for pathological cases with the
714 throttle set at 15 statements. */
715DEFPARAM (PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS,
716 "max-jump-thread-duplication-stmts",
8fb42bbc 717 "Maximum number of statements allowed in a block that needs to be duplicated when threading jumps.",
cf024d22 718 15, 0, 0)
f0ee0b5b 719
720/* This is the maximum number of fields a variable may have before the pointer analysis machinery
48e1416a 721 will stop trying to treat it in a field-sensitive manner.
f0ee0b5b 722 There are programs out there with thousands of fields per structure, and handling them
723 field-sensitively is not worth the cost. */
724DEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
725 "max-fields-for-field-sensitive",
8fb42bbc 726 "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable.",
77975172 727 0, 0, 0)
23df5e5b 728
729DEFPARAM(PARAM_MAX_SCHED_READY_INSNS,
730 "max-sched-ready-insns",
8fb42bbc 731 "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass.",
23df5e5b 732 100, 0, 0)
733
1242bee6 734/* This is the maximum number of active local stores RTL DSE will consider. */
735DEFPARAM (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES,
736 "max-dse-active-local-stores",
8fb42bbc 737 "Maximum number of active local stores in RTL dead store elimination.",
1242bee6 738 5000, 0, 0)
739
07804af5 740/* Prefetching and cache-optimizations related parameters. Default values are
741 usually set by machine description. */
742
743/* The number of insns executed before prefetch is completed. */
744
745DEFPARAM (PARAM_PREFETCH_LATENCY,
746 "prefetch-latency",
8fb42bbc 747 "The number of insns executed before prefetch is completed.",
07804af5 748 200, 0, 0)
749
750/* The number of prefetches that can run at the same time. */
751
752DEFPARAM (PARAM_SIMULTANEOUS_PREFETCHES,
753 "simultaneous-prefetches",
8fb42bbc 754 "The number of prefetches that can run at the same time.",
07804af5 755 3, 0, 0)
756
0c916a7b 757/* The size of L1 cache in kB. */
07804af5 758
759DEFPARAM (PARAM_L1_CACHE_SIZE,
760 "l1-cache-size",
8fb42bbc 761 "The size of L1 cache.",
0c916a7b 762 64, 0, 0)
07804af5 763
764/* The size of L1 cache line in bytes. */
765
766DEFPARAM (PARAM_L1_CACHE_LINE_SIZE,
767 "l1-cache-line-size",
8fb42bbc 768 "The size of L1 cache line.",
07804af5 769 32, 0, 0)
770
0c916a7b 771/* The size of L2 cache in kB. */
772
773DEFPARAM (PARAM_L2_CACHE_SIZE,
774 "l2-cache-size",
8fb42bbc 775 "The size of L2 cache.",
0c916a7b 776 512, 0, 0)
777
a1406b2e 778/* Whether we should use canonical types rather than deep "structural"
779 type checking. Setting this value to 1 (the default) improves
780 compilation performance in the C++ and Objective-C++ front end;
781 this value should only be set to zero to work around bugs in the
782 canonical type system by disabling it. */
783
784DEFPARAM (PARAM_USE_CANONICAL_TYPES,
785 "use-canonical-types",
8fb42bbc 786 "Whether to use canonical types.",
a1406b2e 787 1, 0, 1)
82a67b2c 788
789DEFPARAM (PARAM_MAX_PARTIAL_ANTIC_LENGTH,
790 "max-partial-antic-length",
8fb42bbc 791 "Maximum length of partial antic set when performing tree pre optimization.",
82a67b2c 792 100, 0, 0)
793
a9b2282e 794/* The following is used as a stop-gap limit for cases where really huge
795 SCCs blow up memory and compile-time use too much. If we hit this limit,
796 SCCVN and such FRE and PRE will be not done at all for the current
797 function. */
798
799DEFPARAM (PARAM_SCCVN_MAX_SCC_SIZE,
800 "sccvn-max-scc-size",
8fb42bbc 801 "Maximum size of a SCC before SCCVN stops processing a function.",
a9b2282e 802 10000, 10, 0)
803
297a2110 804/* The following is used as a stop-gap limit for cases where really huge
805 functions blow up compile-time use too much. It limits the number of
806 alias-queries we do for finding common subexpressions for memory loads and
807 stores. The number of alias-queries is otherwise limited by the number of
808 stores on paths to function entry. */
809
810DEFPARAM (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS,
811 "sccvn-max-alias-queries-per-access",
8fb42bbc 812 "Maximum number of disambiguations to perform per memory access.",
297a2110 813 1000, 0, 0)
814
47dd2e78 815DEFPARAM (PARAM_IRA_MAX_LOOPS_NUM,
816 "ira-max-loops-num",
8fb42bbc 817 "Max loops number for regional RA.",
ddf888a5 818 100, 0, 0)
47dd2e78 819
95c83f01 820DEFPARAM (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE,
821 "ira-max-conflict-table-size",
8fb42bbc 822 "Max size of conflict table in MB.",
d0388252 823 1000, 0, 0)
95c83f01 824
e8eed2f8 825DEFPARAM (PARAM_IRA_LOOP_RESERVED_REGS,
826 "ira-loop-reserved-regs",
8fb42bbc 827 "The number of registers in each class kept unused by loop invariant motion.",
e8eed2f8 828 2, 0, 0)
829
eb3db740 830DEFPARAM (PARAM_LRA_MAX_CONSIDERED_RELOAD_PSEUDOS,
831 "lra-max-considered-reload-pseudos",
8fb42bbc 832 "The max number of reload pseudos which are considered during spilling a non-reload pseudo.",
eb3db740 833 500, 0, 0)
834
4b69081d 835DEFPARAM (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF,
836 "lra-inheritance-ebb-probability-cutoff",
8fb42bbc 837 "Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA.",
4b69081d 838 40, 0, 100)
839
a347af29 840/* Switch initialization conversion will refuse to create arrays that are
841 bigger than this parameter times the number of switch branches. */
842
843DEFPARAM (PARAM_SWITCH_CONVERSION_BRANCH_RATIO,
844 "switch-conversion-max-branch-ratio",
845 "The maximum ratio between array size and switch branches for "
8fb42bbc 846 "a switch conversion to take place.",
a347af29 847 8, 1, 0)
848
b8ad26cc 849/* Size of tiles when doing loop blocking. */
850
851DEFPARAM (PARAM_LOOP_BLOCK_TILE_SIZE,
852 "loop-block-tile-size",
8fb42bbc 853 "size of tiles for loop blocking.",
b8ad26cc 854 51, 0, 0)
855
c2e502a5 856/* Maximal number of parameters that we allow in a SCoP. */
857
858DEFPARAM (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS,
859 "graphite-max-nb-scop-params",
8fb42bbc 860 "maximum number of parameters in a SCoP.",
a4e17a42 861 7, 0, 0)
c2e502a5 862
94ba21de 863/* Maximal number of basic blocks in the functions analyzed by Graphite. */
864
865DEFPARAM (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION,
866 "graphite-max-bbs-per-function",
8fb42bbc 867 "maximum number of basic blocks per function to be analyzed by Graphite.",
94ba21de 868 100, 0, 0)
869
84e96705 870/* Maximal number of array references in a scop. */
871
872DEFPARAM (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP,
873 "graphite-max-arrays-per-scop",
8fb42bbc 874 "maximum number of arrays per scop.",
84e96705 875 100, 0, 0)
876
7eb20e71 877/* Maximal number of basic blocks in the functions analyzed by Graphite. */
878
879DEFPARAM (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION,
880 "graphite-min-loops-per-function",
8fb42bbc 881 "minimal number of loops per function to be analyzed by Graphite.",
7eb20e71 882 2, 0, 0)
883
36620673 884DEFPARAM (PARAM_MAX_ISL_OPERATIONS,
885 "max-isl-operations",
71130ef8 886 "maximum number of isl operations, 0 means unlimited",
36620673 887 350000, 0, 0)
888
c7af8ae7 889/* Avoid data dependence analysis on very large loops. */
890DEFPARAM (PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS,
891 "loop-max-datarefs-for-datadeps",
8fb42bbc 892 "Maximum number of datarefs in loop for building loop data dependencies.",
c7af8ae7 893 1000, 0, 0)
894
86482d6b 895/* Avoid doing loop invariant motion on very large loops. */
896
897DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP,
898 "loop-invariant-max-bbs-in-loop",
8fb42bbc 899 "Max basic blocks number in loop for loop invariant motion.",
86482d6b 900 10000, 0, 0)
901
d9e50003 902/* When the parameter is 1, use the internal function id
903 to look up for profile data. Otherwise, use a more stable
904 external id based on assembler name and source location. */
905DEFPARAM (PARAM_PROFILE_FUNC_INTERNAL_ID,
906 "profile-func-internal-id",
8fb42bbc 907 "use internal function id in profile lookup.",
d9e50003 908 0, 0, 1)
b74245ec 909
910/* When the parameter is 1, track the most frequent N target
911 addresses in indirect-call profile. This disables
912 indirect_call_profiler_v2 which tracks single target. */
913DEFPARAM (PARAM_INDIR_CALL_TOPN_PROFILE,
914 "indir-call-topn-profile",
8fb42bbc 915 "track topn target addresses in indirect-call profile.",
b74245ec 916 0, 0, 1)
d9e50003 917
37545e54 918/* Avoid SLP vectorization of large basic blocks. */
919DEFPARAM (PARAM_SLP_MAX_INSNS_IN_BB,
920 "slp-max-insns-in-bb",
8fb42bbc 921 "Maximum number of instructions in basic block to be considered for SLP vectorization.",
37545e54 922 1000, 0, 0)
923
0ab353e1 924DEFPARAM (PARAM_MIN_INSN_TO_PREFETCH_RATIO,
925 "min-insn-to-prefetch-ratio",
17d6d879 926 "Min. ratio of insns to prefetches to enable prefetching for "
8fb42bbc 927 "a loop with an unknown trip count.",
cd0925e2 928 9, 0, 0)
0ab353e1 929
930DEFPARAM (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO,
931 "prefetch-min-insn-to-mem-ratio",
8fb42bbc 932 "Min. ratio of insns to mem ops to enable prefetching in a loop.",
0ab353e1 933 3, 0, 0)
934
76f4ab1c 935/* Set maximum hash table size for var tracking. */
936
937DEFPARAM (PARAM_MAX_VARTRACK_SIZE,
938 "max-vartrack-size",
8fb42bbc 939 "Max. size of var tracking hash tables.",
76f4ab1c 940 50000000, 0, 0)
941
b5c80997 942/* Set maximum recursion depth for var tracking expression expansion
943 and resolution. */
944
945DEFPARAM (PARAM_MAX_VARTRACK_EXPR_DEPTH,
946 "max-vartrack-expr-depth",
8fb42bbc 947 "Max. recursion depth for expanding var tracking expressions.",
2e337e8f 948 12, 0, 0)
b5c80997 949
78ea005d 950/* Set maximum length of value location list for which var tracking
951 should add reverse operations. */
952
953DEFPARAM (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE,
954 "max-vartrack-reverse-op-size",
8fb42bbc 955 "Max. size of loc list for which reverse ops should be added.",
78ea005d 956 50, 0, 0)
957
9845d120 958/* Set minimum insn uid for non-debug insns. */
959
960DEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID,
961 "min-nondebug-insn-uid",
8fb42bbc 962 "The minimum UID to be used for a nondebug insn.",
9845d120 963 0, 1, 0)
964
2f29eac3 965DEFPARAM (PARAM_IPA_SRA_PTR_GROWTH_FACTOR,
966 "ipa-sra-ptr-growth-factor",
17d6d879 967 "Maximum allowed growth of size of new parameters ipa-sra replaces "
8fb42bbc 968 "a pointer to an aggregate with.",
2f29eac3 969 2, 0, 0)
970
4c0315d0 971DEFPARAM (PARAM_TM_MAX_AGGREGATE_SIZE,
972 "tm-max-aggregate-size",
973 "Size in bytes after which thread-local aggregates should be "
974 "instrumented with the logging functions instead of save/restore "
8fb42bbc 975 "pairs.",
4c0315d0 976 9, 0, 0)
977
67622758 978DEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SPEED,
979 "sra-max-scalarization-size-Ospeed",
980 "Maximum size, in storage units, of an aggregate which should be "
8fb42bbc 981 "considered for scalarization when compiling for speed.",
67622758 982 0, 0, 0)
983
984DEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SIZE,
985 "sra-max-scalarization-size-Osize",
986 "Maximum size, in storage units, of an aggregate which should be "
8fb42bbc 987 "considered for scalarization when compiling for size.",
67622758 988 0, 0, 0)
989
821d0e0f 990DEFPARAM (PARAM_IPA_CP_VALUE_LIST_SIZE,
991 "ipa-cp-value-list-size",
992 "Maximum size of a list of values associated with each parameter for "
8fb42bbc 993 "interprocedural constant propagation.",
1caef38b 994 8, 0, 0)
995
821d0e0f 996DEFPARAM (PARAM_IPA_CP_EVAL_THRESHOLD,
997 "ipa-cp-eval-threshold",
998 "Threshold ipa-cp opportunity evaluation that is still considered "
8fb42bbc 999 "beneficial to clone..",
821d0e0f 1000 500, 0, 0)
1001
39fcd838 1002DEFPARAM (PARAM_IPA_CP_RECURSION_PENALTY,
1003 "ipa-cp-recursion-penalty",
1004 "Percentage penalty the recursive functions will receive when they "
8fb42bbc 1005 "are evaluated for cloning..",
39fcd838 1006 40, 0, 100)
1007
1008DEFPARAM (PARAM_IPA_CP_SINGLE_CALL_PENALTY,
1009 "ipa-cp-single-call-penalty",
d0abd9e0 1010 "Percentage penalty functions containing a single call to another "
8fb42bbc 1011 "function will receive when they are evaluated for cloning..",
39fcd838 1012 15, 0, 100)
1013
699f00b5 1014DEFPARAM (PARAM_IPA_MAX_AGG_ITEMS,
1015 "ipa-max-agg-items",
1016 "Maximum number of aggregate content items for a parameter in "
8fb42bbc 1017 "jump functions and lattices.",
699f00b5 1018 16, 0, 0)
1019
803a7988 1020DEFPARAM (PARAM_IPA_CP_LOOP_HINT_BONUS,
1021 "ipa-cp-loop-hint-bonus",
1022 "Compile-time bonus IPA-CP assigns to candidates which make loop "
8fb42bbc 1023 "bounds or strides known..",
803a7988 1024 64, 0, 0)
1025
3a1cb879 1026DEFPARAM (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS,
1027 "ipa-cp-array-index-hint-bonus",
1028 "Compile-time bonus IPA-CP assigns to candidates which make an array "
8fb42bbc 1029 "index known..",
3a1cb879 1030 48, 0, 0)
1031
24430d08 1032DEFPARAM (PARAM_IPA_MAX_AA_STEPS,
1033 "ipa-max-aa-steps",
1034 "Maximum number of statements that will be visited by IPA formal "
8fb42bbc 1035 "parameter analysis based on alias analysis in any given function.",
24430d08 1036 25000, 0, 0)
1037
48e3ea52 1038/* WHOPR partitioning configuration. */
1039
1040DEFPARAM (PARAM_LTO_PARTITIONS,
1041 "lto-partitions",
8fb42bbc 1042 "Number of partitions the program should be split to.",
f94df44d 1043 32, 1, 0)
48e3ea52 1044
1045DEFPARAM (MIN_PARTITION_SIZE,
1046 "lto-min-partition",
8fb42bbc 1047 "Minimal size of a partition for LTO (in estimated instructions).",
0ef04789 1048 10000, 0, 0)
f91726b4 1049
49547b8a 1050DEFPARAM (MAX_PARTITION_SIZE,
1051 "lto-max-partition",
1052 "Maximal size of a partition for LTO (in estimated instructions).",
1053 1000000, 0, INT_MAX)
1054
f91726b4 1055/* Diagnostic parameters. */
1056
1057DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP,
1058 "cxx-max-namespaces-for-diagnostic-help",
1059 "Maximum number of namespaces to search for alternatives when "
8fb42bbc 1060 "name lookup fails.",
f91726b4 1061 1000, 0, 0)
1062
ec611e12 1063/* Maximum number of conditional store pairs that can be sunk. */
1064DEFPARAM (PARAM_MAX_STORES_TO_SINK,
1065 "max-stores-to-sink",
8fb42bbc 1066 "Maximum number of conditional store pairs that can be sunk.",
ec611e12 1067 2, 0, 0)
1068
7e0c8808 1069/* Override CASE_VALUES_THRESHOLD of when to switch from doing switch
1070 statements via if statements to using a table jump operation. If the value
1071 is 0, the default CASE_VALUES_THRESHOLD will be used. */
1072DEFPARAM (PARAM_CASE_VALUES_THRESHOLD,
1073 "case-values-threshold",
1074 "The smallest number of different values for which it is best to "
1075 "use a jump-table instead of a tree of conditional branches, "
8fb42bbc 1076 "if 0, use the default for the machine.",
7e0c8808 1077 0, 0, 0)
1078
4bb60ec7 1079/* Data race flags for C++0x memory model compliance. */
1080DEFPARAM (PARAM_ALLOW_STORE_DATA_RACES,
1081 "allow-store-data-races",
8fb42bbc 1082 "Allow new data races on stores to be introduced.",
f4d15364 1083 0, 0, 1)
1cd6e20d 1084
5b1c765d 1085/* Reassociation width to be used by tree reassoc optimization. */
1086DEFPARAM (PARAM_TREE_REASSOC_WIDTH,
1087 "tree-reassoc-width",
1088 "Set the maximum number of instructions executed in parallel in "
8fb42bbc 1089 "reassociated tree. If 0, use the target dependent heuristic..",
5b1c765d 1090 0, 0, 0)
1091
51385f30 1092DEFPARAM (PARAM_MAX_TAIL_MERGE_COMPARISONS,
1093 "max-tail-merge-comparisons",
8fb42bbc 1094 "Maximum amount of similar bbs to compare a bb with.",
51385f30 1095 10, 0, 0)
1096
3d3e04ac 1097DEFPARAM (PARAM_STORE_MERGING_ALLOW_UNALIGNED,
1098 "store-merging-allow-unaligned",
1099 "Allow the store merging pass to introduce unaligned stores "
1100 "if it is legal to do so",
1101 1, 0, 1)
1102
1103DEFPARAM (PARAM_MAX_STORES_TO_MERGE,
1104 "max-stores-to-merge",
32bb76c6 1105 "Maximum number of constant stores to merge in the "
3d3e04ac 1106 "store merging pass",
1107 64, 2, 0)
1108
51385f30 1109DEFPARAM (PARAM_MAX_TAIL_MERGE_ITERATIONS,
1110 "max-tail-merge-iterations",
8fb42bbc 1111 "Maximum amount of iterations of the pass over a function.",
51385f30 1112 2, 0, 0)
ec611e12 1113
2d64dc70 1114/* Maximum number of strings for which strlen optimization pass will
1115 track string lenths. */
1116DEFPARAM (PARAM_MAX_TRACKED_STRLENS,
1117 "max-tracked-strlens",
1118 "Maximum number of strings for which strlen optimization pass will "
8fb42bbc 1119 "track string lengths.",
150a0f7d 1120 10000, 0, 0)
2d64dc70 1121
d86dbf92 1122/* Keep this in sync with the sched_pressure_algorithm enum. */
1123DEFPARAM (PARAM_SCHED_PRESSURE_ALGORITHM,
1124 "sched-pressure-algorithm",
8fb42bbc 1125 "Which -fsched-pressure algorithm to apply.",
d86dbf92 1126 1, 1, 2)
1127
df4c32b3 1128/* Maximum length of candidate scans in straight-line strength reduction. */
1129DEFPARAM (PARAM_MAX_SLSR_CANDIDATE_SCAN,
1130 "max-slsr-cand-scan",
1131 "Maximum length of candidate scans for straight-line "
8fb42bbc 1132 "strength reduction.",
df4c32b3 1133 50, 1, 999999)
1134
bf2b7c22 1135DEFPARAM (PARAM_ASAN_STACK,
1136 "asan-stack",
8fb42bbc 1137 "Enable asan stack protection.",
bf2b7c22 1138 1, 0, 1)
1139
1140DEFPARAM (PARAM_ASAN_GLOBALS,
1141 "asan-globals",
8fb42bbc 1142 "Enable asan globals protection.",
bf2b7c22 1143 1, 0, 1)
1144
1145DEFPARAM (PARAM_ASAN_INSTRUMENT_WRITES,
1146 "asan-instrument-writes",
8fb42bbc 1147 "Enable asan store operations protection.",
bf2b7c22 1148 1, 0, 1)
1149
1150DEFPARAM (PARAM_ASAN_INSTRUMENT_READS,
1151 "asan-instrument-reads",
8fb42bbc 1152 "Enable asan load operations protection.",
bf2b7c22 1153 1, 0, 1)
1154
1155DEFPARAM (PARAM_ASAN_MEMINTRIN,
1156 "asan-memintrin",
8fb42bbc 1157 "Enable asan builtin functions protection.",
bf2b7c22 1158 1, 0, 1)
1159
1160DEFPARAM (PARAM_ASAN_USE_AFTER_RETURN,
1161 "asan-use-after-return",
8fb42bbc 1162 "Enable asan detection of use-after-return bugs.",
bf2b7c22 1163 1, 0, 1)
13e8ebe8 1164
4f86f720 1165DEFPARAM (PARAM_ASAN_INSTRUMENTATION_WITH_CALL_THRESHOLD,
1166 "asan-instrumentation-with-call-threshold",
ff326078 1167 "Use callbacks instead of inline code if number of accesses "
8fb42bbc 1168 "in function becomes greater or equal to this number.",
ff326078 1169 7000, 0, INT_MAX)
4f86f720 1170
629b6abc 1171DEFPARAM (PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD,
1172 "use-after-scope-direct-emission-threshold",
d0abd9e0 1173 "Use direct poisoning/unpoisoning instructions for variables "
629b6abc 1174 "smaller or equal to this number.",
1175 256, 0, INT_MAX)
1176
13e8ebe8 1177DEFPARAM (PARAM_UNINIT_CONTROL_DEP_ATTEMPTS,
1178 "uninit-control-dep-attempts",
1179 "Maximum number of nested calls to search for control dependencies "
8fb42bbc 1180 "during uninitialized variable analysis.",
13e8ebe8 1181 1000, 1, 0)
058a1b7a 1182
1183DEFPARAM (PARAM_CHKP_MAX_CTOR_SIZE,
1184 "chkp-max-ctor-size",
1185 "Maximum number of statements to be included into a single static "
8fb42bbc 1186 "constructor generated by Pointer Bounds Checker.",
058a1b7a 1187 5000, 100, 0)
ded1c768 1188
9b849350 1189DEFPARAM (PARAM_FSM_SCALE_PATH_STMTS,
1190 "fsm-scale-path-stmts",
1191 "Scale factor to apply to the number of statements in a threading path when comparing to the number of (scaled) blocks.",
1192 2, 1, 10)
1193
499b8575 1194DEFPARAM (PARAM_FSM_MAXIMUM_PHI_ARGUMENTS,
1195 "fsm-maximum-phi-arguments",
1196 "Maximum number of arguments a PHI may have before the FSM threader will not try to thread through its block.",
1197 100, 1, 999999)
1198
9b849350 1199DEFPARAM (PARAM_FSM_SCALE_PATH_BLOCKS,
1200 "fsm-scale-path-blocks",
1201 "Scale factor to apply to the number of blocks in a threading path when comparing to the number of (scaled) statements.",
1202 3, 1, 10)
1203
ded1c768 1204DEFPARAM (PARAM_MAX_FSM_THREAD_PATH_INSNS,
1205 "max-fsm-thread-path-insns",
8fb42bbc 1206 "Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path.",
ded1c768 1207 100, 1, 999999)
1208
1209DEFPARAM (PARAM_MAX_FSM_THREAD_LENGTH,
1210 "max-fsm-thread-length",
8fb42bbc 1211 "Maximum number of basic blocks on a finite state automaton jump thread path.",
ded1c768 1212 10, 1, 999999)
1213
1214DEFPARAM (PARAM_MAX_FSM_THREAD_PATHS,
1215 "max-fsm-thread-paths",
8fb42bbc 1216 "Maximum number of new jump thread paths to create for a finite state automaton.",
ded1c768 1217 50, 1, 999999)
9a782341 1218
1219DEFPARAM (PARAM_PARLOOPS_CHUNK_SIZE,
1220 "parloops-chunk-size",
8fb42bbc 1221 "Chunk size of omp schedule for loops parallelized by parloops.",
9a782341 1222 0, 0, 0)
ee230333 1223
2331aa43 1224DEFPARAMENUM5 (PARAM_PARLOOPS_SCHEDULE,
1225 "parloops-schedule",
1226 "Schedule type of omp schedule for loops parallelized by "
8fb42bbc 1227 "parloops (static, dynamic, guided, auto, runtime).",
2331aa43 1228 static,
1229 static, dynamic, guided, auto, runtime)
1230
ee230333 1231DEFPARAM (PARAM_MAX_SSA_NAME_QUERY_DEPTH,
1232 "max-ssa-name-query-depth",
1233 "Maximum recursion depth allowed when querying a property of an"
8fb42bbc 1234 " SSA name.",
698357bd 1235 3, 1, 0)
bd8bece2 1236
1237DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_INSNS,
1238 "max-rtl-if-conversion-insns",
1239 "Maximum number of insns in a basic block to consider for RTL "
1240 "if-conversion.",
1241 10, 0, 99)
56686608 1242
1019399a 1243DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_PREDICTABLE_COST,
1244 "max-rtl-if-conversion-predictable-cost",
1245 "Maximum permissible cost for the sequence that would be "
1246 "generated by the RTL if-conversion pass for a branch that "
1247 "is considered predictable.",
1248 20, 0, 200)
1249
1250DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_UNPREDICTABLE_COST,
1251 "max-rtl-if-conversion-unpredictable-cost",
1252 "Maximum permissible cost for the sequence that would be "
1253 "generated by the RTL if-conversion pass for a branch that "
1254 "is considered unpredictable.",
1255 40, 0, 200)
1256
56686608 1257DEFPARAM (PARAM_HSA_GEN_DEBUG_STORES,
1258 "hsa-gen-debug-stores",
1259 "Level of hsa debug stores verbosity",
1260 0, 0, 1)
1140bac5 1261
1262DEFPARAM (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS,
1263 "max-speculative-devirt-maydefs",
1264 "Maximum number of may-defs visited when devirtualizing "
1265 "speculatively", 50, 0, 0)
1266
7e1856f1 1267DEFPARAM (PARAM_MAX_VRP_SWITCH_ASSERTIONS,
1268 "max-vrp-switch-assertions",
1269 "Maximum number of assertions to add along the default "
1270 "edge of a switch statement during VRP",
1271 10, 0, 0)
1272
5b631e09 1273DEFPARAM (PARAM_VECT_EPILOGUES_NOMASK,
1274 "vect-epilogues-nomask",
1275 "Enable loop epilogue vectorization using smaller vector size.",
1276 0, 0, 1)
1277
9a33a2e8 1278/*
bf2b7c22 1279
9a33a2e8 1280Local variables:
1281mode:c
8747a9a4 1282End:
1283*/