/* params.def - Run-time parameters. | |

Copyright (C) 2001, 2002 Free Software Foundation, Inc. | |

Written by Mark Mitchell <mark@codesourcery.com>. | |

This file is part of GCC. | |

GCC is free software; you can redistribute it and/or modify it under | |

the terms of the GNU General Public License as published by the Free | |

Software Foundation; either version 2, or (at your option) any later | |

version. | |

GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |

WARRANTY; without even the implied warranty of MERCHANTABILITY or | |

FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |

for more details. | |

You should have received a copy of the GNU General Public License | |

along with GCC; see the file COPYING. If not, write to the Free | |

Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |

02111-1307, USA. | |

*/ | |

/* This file contains definitions for language-independent | |

parameters. The DEFPARAM macro takes 4 arguments: | |

- The enumeral corresponding to this parameter. | |

- The name that can be used to set this parameter using the | |

command-line option `--param <name>=<value>'. | |

- A help string explaining how the parameter is used. | |

- A default value for the parameter. | |

Be sure to add an entry to invoke.texi summarizing the parameter. */ | |

/* The single function inlining limit. This is the maximum size | |

of a function counted in internal gcc instructions (not in | |

real machine instructions) that is eligible for inlining | |

by the tree inliner. | |

The default value is 500. | |

Only functions marked inline (or methods defined in the class | |

definition for C++) are affected by this, unless you set the | |

-finline-functions (included in -O3) compiler option. | |

There are more restrictions to inlining: If inlined functions | |

call other functions, the already inlined instructions are | |

counted and once the recursive inline limit (see | |

"max-inline-insns" parameter) is exceeded, the acceptable size | |

gets decreased. */ | |

DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE, | |

"max-inline-insns-single", | |

"The maximum number of instructions in a single function eligible for inlining", | |

500) | |

/* The single function inlining limit for functions that are | |

inlined by virtue of -finline-functions (-O3). | |

This limit should be chosen to be below or equal to the limit | |

that is applied to functions marked inlined (or defined in the | |

class declaration in C++) given by the "max-inline-insns-single" | |

parameter. | |

The default value is 150. */ | |

DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO, | |

"max-inline-insns-auto", | |

"The maximum number of instructions when automatically inlining", | |

100) | |

/* For languages that (still) use the RTL inliner, we can specify | |

limits for the RTL inliner separately. | |

The parameter here defines the maximum number of RTL instructions | |

a function may have to be eligible for inlining in the RTL inliner. | |

The default value is 600. */ | |

DEFPARAM (PARAM_MAX_INLINE_INSNS_RTL, | |

"max-inline-insns-rtl", | |

"The maximum number of instructions for the RTL inliner", | |

600) | |

/* The maximum number of instructions to consider when looking for an | |

instruction to fill a delay slot. If more than this arbitrary | |

number of instructions is searched, the time savings from filling | |

the delay slot will be minimal so stop searching. Increasing | |

values mean more aggressive optimization, making the compile time | |

increase with probably small improvement in executable run time. */ | |

DEFPARAM (PARAM_MAX_DELAY_SLOT_INSN_SEARCH, | |

"max-delay-slot-insn-search", | |

"The maximum number of instructions to consider to fill a delay slot", | |

100) | |

/* When trying to fill delay slots, the maximum number of instructions | |

to consider when searching for a block with valid live register | |

information. Increasing this arbitrarily chosen value means more | |

aggressive optimization, increasing the compile time. This | |

parameter should be removed when the delay slot code is rewritten | |

to maintain the control-flow graph. */ | |

DEFPARAM(PARAM_MAX_DELAY_SLOT_LIVE_SEARCH, | |

"max-delay-slot-live-search", | |

"The maximum number of instructions to consider to find accurate live register information", | |

333) | |

/* This parameter limits the number of branch elements that the | |

scheduler will track anti-dependencies through without resetting | |

the tracking mechanism. Large functions with few calls or barriers | |

can generate lists containing many 1000's of dependencies. Generally | |

the compiler either uses all available memory, or runs for far too long. */ | |

DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH, | |

"max-pending-list-length", | |

"The maximum length of scheduling's pending operations list", | |

32) | |

DEFPARAM(PARAM_LARGE_FUNCTION_INSNS, | |

"large-function-insns", | |

"The size of function body to be considered large", | |

3000) | |

DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH, | |

"large-function-growth", | |

"Maximal growth due to inlining of large function (in percent)", | |

100) | |

DEFPARAM(PARAM_INLINE_UNIT_GROWTH, | |

"inline-unit-growth", | |

"how much can given compilation unit grow because of the inlining (in percent)", | |

50) | |

/* The GCSE optimization will be disabled if it would require | |

significantly more memory than this value. */ | |

DEFPARAM(PARAM_MAX_GCSE_MEMORY, | |

"max-gcse-memory", | |

"The maximum amount of memory to be allocated by GCSE", | |

50 * 1024 * 1024) | |

/* The number of repetitions of copy/const prop and PRE to run. */ | |

DEFPARAM(PARAM_MAX_GCSE_PASSES, | |

"max-gcse-passes", | |

"The maximum number of passes to make when doing GCSE", | |

1) | |

/* This parameter limits the number of insns in a loop that will be unrolled, | |

and by how much the loop is unrolled. | |

This limit should be at most half of the peeling limits: loop unroller | |

decides to not unroll loops that iterate fewer than 2*number of allowed | |

unrollings and thus we would have loops that are neither peeled or unrooled | |

otherwise. */ | |

DEFPARAM(PARAM_MAX_UNROLLED_INSNS, | |

"max-unrolled-insns", | |

"The maximum number of instructions to consider to unroll in a loop", | |

200) | |

/* This parameter limits how many times the loop is unrolled depending | |

on number of insns really executed in each iteration. */ | |

DEFPARAM(PARAM_MAX_AVERAGE_UNROLLED_INSNS, | |

"max-average-unrolled-insns", | |

"The maximum number of instructions to consider to unroll in a loop on average", | |

80) | |

/* The maximum number of unrollings of a single loop. */ | |

DEFPARAM(PARAM_MAX_UNROLL_TIMES, | |

"max-unroll-times", | |

"The maximum number of unrollings of a single loop", | |

8) | |

/* The maximum number of insns of a peeled loop. */ | |

DEFPARAM(PARAM_MAX_PEELED_INSNS, | |

"max-peeled-insns", | |

"The maximum number of insns of a peeled loop", | |

400) | |

/* The maximum number of peelings of a single loop. */ | |

DEFPARAM(PARAM_MAX_PEEL_TIMES, | |

"max-peel-times", | |

"The maximum number of peelings of a single loop", | |

16) | |

/* The maximum number of insns of a peeled loop. */ | |

DEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS, | |

"max-completely-peeled-insns", | |

"The maximum number of insns of a completely peeled loop", | |

400) | |

/* The maximum number of peelings of a single loop that is peeled completely. */ | |

DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES, | |

"max-completely-peel-times", | |

"The maximum number of peelings of a single loop that is peeled completely", | |

16) | |

/* The maximum number of insns of a peeled loop that rolls only once. */ | |

DEFPARAM(PARAM_MAX_ONCE_PEELED_INSNS, | |

"max-once-peeled-insns", | |

"The maximum number of insns of a peeled loop that rolls only once", | |

400) | |

/* The maximum number of insns of an unswitched loop. */ | |

DEFPARAM(PARAM_MAX_UNSWITCH_INSNS, | |

"max-unswitch-insns", | |

"The maximum number of insns of an unswitched loop", | |

50) | |

/* The maximum level of recursion in unswitch_single_loop. */ | |

DEFPARAM(PARAM_MAX_UNSWITCH_LEVEL, | |

"max-unswitch-level", | |

"The maximum number of unswitchings in a single loop", | |

3) | |

DEFPARAM(HOT_BB_COUNT_FRACTION, | |

"hot-bb-count-fraction", | |

"Select fraction of the maximal count of repetitions of basic block in \ | |

program given basic block needs to have to be considered hot", | |

10000) | |

DEFPARAM(HOT_BB_FREQUENCY_FRACTION, | |

"hot-bb-frequency-fraction", | |

"Select fraction of the maximal frequency of executions of basic \ | |

block in function given basic block needs to have to be considered hot", | |

1000) | |

DEFPARAM(TRACER_DYNAMIC_COVERAGE_FEEDBACK, | |

"tracer-dynamic-coverage-feedback", | |

"The percentage of function, weighted by execution frequency, that \ | |

must be covered by trace formation. Used when profile feedback is available", | |

95) | |

DEFPARAM(TRACER_DYNAMIC_COVERAGE, | |

"tracer-dynamic-coverage", | |

"The percentage of function, weighted by execution frequency, that \ | |

must be covered by trace formation. Used when profile feedback is not available", | |

75) | |

DEFPARAM(TRACER_MAX_CODE_GROWTH, | |

"tracer-max-code-growth", | |

"Maximal code growth caused by tail duplication (in percent)", | |

100) | |

DEFPARAM(TRACER_MIN_BRANCH_RATIO, | |

"tracer-min-branch-ratio", | |

"Stop reverse growth if the reverse probability of best edge is less \ | |

than this threshold (in percent)", | |

10) | |

DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY_FEEDBACK, | |

"tracer-min-branch-probability-feedback", | |

"Stop forward growth if the probability of best edge is less than \ | |

this threshold (in percent). Used when profile feedback is available", | |

80) | |

DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY, | |

"tracer-min-branch-probability", | |

"Stop forward growth if the probability of best edge is less than \ | |

this threshold (in percent). Used when profile feedback is not available", | |

50) | |

/* The maximum number of incoming edges to consider for crossjumping. */ | |

DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES, | |

"max-crossjump-edges", | |

"The maximum number of incoming edges to consider for crossjumping", | |

100) | |

/* The maximum length of path considered in cse. */ | |

DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH, | |

"max-cse-path-length", | |

"The maximum length of path considered in cse", | |

10) | |

DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS, | |

"max-cselib-memory-locations", | |

"The maximum memory locations recorded by cselib", | |

500) | |

#ifdef ENABLE_GC_ALWAYS_COLLECT | |

# define GGC_MIN_EXPAND_DEFAULT 0 | |

# define GGC_MIN_HEAPSIZE_DEFAULT 0 | |

#else | |

# define GGC_MIN_EXPAND_DEFAULT 30 | |

# define GGC_MIN_HEAPSIZE_DEFAULT 4096 | |

#endif | |

DEFPARAM(GGC_MIN_EXPAND, | |

"ggc-min-expand", | |

"Minimum heap expansion to trigger garbage collection, as \ | |

a percentage of the total size of the heap", | |

GGC_MIN_EXPAND_DEFAULT) | |

DEFPARAM(GGC_MIN_HEAPSIZE, | |

"ggc-min-heapsize", | |

"Minimum heap size before we start collecting garbage, in kilobytes", | |

GGC_MIN_HEAPSIZE_DEFAULT) | |

#undef GGC_MIN_EXPAND_DEFAULT | |

#undef GGC_MIN_HEAPSIZE_DEFAULT | |

DEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS, | |

"max-reload-search-insns", | |

"The maximum number of instructions to search backward when looking for equivalent reload", | |

100) | |

/* | |

Local variables: | |

mode:c | |

End: */ |