params.def revision 146895
1/* params.def - Run-time parameters. 2 Copyright (C) 2001, 2002 Free Software Foundation, Inc. 3 Written by Mark Mitchell <mark@codesourcery.com>. 4 5This file is part of GCC. 6 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 9Software Foundation; either version 2, or (at your option) any later 10version. 11 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. 16 17You should have received a copy of the GNU General Public License 18along with GCC; see the file COPYING. If not, write to the Free 19Software Foundation, 59 Temple Place - Suite 330, Boston, MA 2002111-1307, USA. 21 22*/ 23 24/* This file contains definitions for language-independent 25 parameters. The DEFPARAM macro takes 4 arguments: 26 27 - The enumeral corresponding to this parameter. 28 29 - The name that can be used to set this parameter using the 30 command-line option `--param <name>=<value>'. 31 32 - A help string explaining how the parameter is used. 33 34 - A default value for the parameter. 35 36 Be sure to add an entry to invoke.texi summarizing the parameter. */ 37 38/* The single function inlining limit. This is the maximum size 39 of a function counted in internal gcc instructions (not in 40 real machine instructions) that is eligible for inlining 41 by the tree inliner. 42 The default value is 500. 43 Only functions marked inline (or methods defined in the class 44 definition for C++) are affected by this, unless you set the 45 -finline-functions (included in -O3) compiler option. 46 There are more restrictions to inlining: If inlined functions 47 call other functions, the already inlined instructions are 48 counted and once the recursive inline limit (see 49 "max-inline-insns" parameter) is exceeded, the acceptable size 50 gets decreased. */ 51DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE, 52 "max-inline-insns-single", 53 "The maximum number of instructions in a single function eligible for inlining", 54 500) 55 56/* The single function inlining limit for functions that are 57 inlined by virtue of -finline-functions (-O3). 58 This limit should be chosen to be below or equal to the limit 59 that is applied to functions marked inlined (or defined in the 60 class declaration in C++) given by the "max-inline-insns-single" 61 parameter. 62 The default value is 150. */ 63DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO, 64 "max-inline-insns-auto", 65 "The maximum number of instructions when automatically inlining", 66 100) 67 68/* For languages that (still) use the RTL inliner, we can specify 69 limits for the RTL inliner separately. 70 The parameter here defines the maximum number of RTL instructions 71 a function may have to be eligible for inlining in the RTL inliner. 72 The default value is 600. */ 73DEFPARAM (PARAM_MAX_INLINE_INSNS_RTL, 74 "max-inline-insns-rtl", 75 "The maximum number of instructions for the RTL inliner", 76 600) 77 78/* The maximum number of instructions to consider when looking for an 79 instruction to fill a delay slot. If more than this arbitrary 80 number of instructions is searched, the time savings from filling 81 the delay slot will be minimal so stop searching. Increasing 82 values mean more aggressive optimization, making the compile time 83 increase with probably small improvement in executable run time. */ 84DEFPARAM (PARAM_MAX_DELAY_SLOT_INSN_SEARCH, 85 "max-delay-slot-insn-search", 86 "The maximum number of instructions to consider to fill a delay slot", 87 100) 88 89/* When trying to fill delay slots, the maximum number of instructions 90 to consider when searching for a block with valid live register 91 information. Increasing this arbitrarily chosen value means more 92 aggressive optimization, increasing the compile time. This 93 parameter should be removed when the delay slot code is rewritten 94 to maintain the control-flow graph. */ 95DEFPARAM(PARAM_MAX_DELAY_SLOT_LIVE_SEARCH, 96 "max-delay-slot-live-search", 97 "The maximum number of instructions to consider to find accurate live register information", 98 333) 99 100/* This parameter limits the number of branch elements that the 101 scheduler will track anti-dependencies through without resetting 102 the tracking mechanism. Large functions with few calls or barriers 103 can generate lists containing many 1000's of dependencies. Generally 104 the compiler either uses all available memory, or runs for far too long. */ 105DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH, 106 "max-pending-list-length", 107 "The maximum length of scheduling's pending operations list", 108 32) 109 110DEFPARAM(PARAM_LARGE_FUNCTION_INSNS, 111 "large-function-insns", 112 "The size of function body to be considered large", 113 3000) 114DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH, 115 "large-function-growth", 116 "Maximal growth due to inlining of large function (in percent)", 117 100) 118DEFPARAM(PARAM_INLINE_UNIT_GROWTH, 119 "inline-unit-growth", 120 "how much can given compilation unit grow because of the inlining (in percent)", 121 50) 122 123/* The GCSE optimization will be disabled if it would require 124 significantly more memory than this value. */ 125DEFPARAM(PARAM_MAX_GCSE_MEMORY, 126 "max-gcse-memory", 127 "The maximum amount of memory to be allocated by GCSE", 128 50 * 1024 * 1024) 129/* The number of repetitions of copy/const prop and PRE to run. */ 130DEFPARAM(PARAM_MAX_GCSE_PASSES, 131 "max-gcse-passes", 132 "The maximum number of passes to make when doing GCSE", 133 1) 134 135/* This parameter limits the number of insns in a loop that will be unrolled, 136 and by how much the loop is unrolled. 137 138 This limit should be at most half of the peeling limits: loop unroller 139 decides to not unroll loops that iterate fewer than 2*number of allowed 140 unrollings and thus we would have loops that are neither peeled or unrooled 141 otherwise. */ 142DEFPARAM(PARAM_MAX_UNROLLED_INSNS, 143 "max-unrolled-insns", 144 "The maximum number of instructions to consider to unroll in a loop", 145 200) 146/* This parameter limits how many times the loop is unrolled depending 147 on number of insns really executed in each iteration. */ 148DEFPARAM(PARAM_MAX_AVERAGE_UNROLLED_INSNS, 149 "max-average-unrolled-insns", 150 "The maximum number of instructions to consider to unroll in a loop on average", 151 80) 152/* The maximum number of unrollings of a single loop. */ 153DEFPARAM(PARAM_MAX_UNROLL_TIMES, 154 "max-unroll-times", 155 "The maximum number of unrollings of a single loop", 156 8) 157/* The maximum number of insns of a peeled loop. */ 158DEFPARAM(PARAM_MAX_PEELED_INSNS, 159 "max-peeled-insns", 160 "The maximum number of insns of a peeled loop", 161 400) 162/* The maximum number of peelings of a single loop. */ 163DEFPARAM(PARAM_MAX_PEEL_TIMES, 164 "max-peel-times", 165 "The maximum number of peelings of a single loop", 166 16) 167/* The maximum number of insns of a peeled loop. */ 168DEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS, 169 "max-completely-peeled-insns", 170 "The maximum number of insns of a completely peeled loop", 171 400) 172/* The maximum number of peelings of a single loop that is peeled completely. */ 173DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES, 174 "max-completely-peel-times", 175 "The maximum number of peelings of a single loop that is peeled completely", 176 16) 177/* The maximum number of insns of a peeled loop that rolls only once. */ 178DEFPARAM(PARAM_MAX_ONCE_PEELED_INSNS, 179 "max-once-peeled-insns", 180 "The maximum number of insns of a peeled loop that rolls only once", 181 400) 182 183/* The maximum number of insns of an unswitched loop. */ 184DEFPARAM(PARAM_MAX_UNSWITCH_INSNS, 185 "max-unswitch-insns", 186 "The maximum number of insns of an unswitched loop", 187 50) 188/* The maximum level of recursion in unswitch_single_loop. */ 189DEFPARAM(PARAM_MAX_UNSWITCH_LEVEL, 190 "max-unswitch-level", 191 "The maximum number of unswitchings in a single loop", 192 3) 193 194DEFPARAM(HOT_BB_COUNT_FRACTION, 195 "hot-bb-count-fraction", 196 "Select fraction of the maximal count of repetitions of basic block in \ 197program given basic block needs to have to be considered hot", 198 10000) 199DEFPARAM(HOT_BB_FREQUENCY_FRACTION, 200 "hot-bb-frequency-fraction", 201 "Select fraction of the maximal frequency of executions of basic \ 202block in function given basic block needs to have to be considered hot", 203 1000) 204DEFPARAM(TRACER_DYNAMIC_COVERAGE_FEEDBACK, 205 "tracer-dynamic-coverage-feedback", 206 "The percentage of function, weighted by execution frequency, that \ 207must be covered by trace formation. Used when profile feedback is available", 208 95) 209DEFPARAM(TRACER_DYNAMIC_COVERAGE, 210 "tracer-dynamic-coverage", 211 "The percentage of function, weighted by execution frequency, that \ 212must be covered by trace formation. Used when profile feedback is not available", 213 75) 214DEFPARAM(TRACER_MAX_CODE_GROWTH, 215 "tracer-max-code-growth", 216 "Maximal code growth caused by tail duplication (in percent)", 217 100) 218DEFPARAM(TRACER_MIN_BRANCH_RATIO, 219 "tracer-min-branch-ratio", 220 "Stop reverse growth if the reverse probability of best edge is less \ 221than this threshold (in percent)", 222 10) 223DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY_FEEDBACK, 224 "tracer-min-branch-probability-feedback", 225 "Stop forward growth if the probability of best edge is less than \ 226this threshold (in percent). Used when profile feedback is available", 227 80) 228DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY, 229 "tracer-min-branch-probability", 230 "Stop forward growth if the probability of best edge is less than \ 231this threshold (in percent). Used when profile feedback is not available", 232 50) 233 234/* The maximum number of incoming edges to consider for crossjumping. */ 235DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES, 236 "max-crossjump-edges", 237 "The maximum number of incoming edges to consider for crossjumping", 238 100) 239 240/* The maximum length of path considered in cse. */ 241DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH, 242 "max-cse-path-length", 243 "The maximum length of path considered in cse", 244 10) 245 246DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS, 247 "max-cselib-memory-locations", 248 "The maximum memory locations recorded by cselib", 249 500) 250 251DEFPARAM(PARAM_MAX_LAST_VALUE_RTL, 252 "max-last-value-rtl", 253 "The maximum number of RTL nodes that can be recorded as \ 254combiner's last value", 255 10000) 256 257 /* INTEGER_CST nodes are shared for values [{-1,0} .. N) for 258 {signed,unsigned} integral types. This determines N. 259 Experimentation shows 256 to be a good value. */ 260#ifdef ENABLE_GC_ALWAYS_COLLECT 261# define GGC_MIN_EXPAND_DEFAULT 0 262# define GGC_MIN_HEAPSIZE_DEFAULT 0 263#else 264# define GGC_MIN_EXPAND_DEFAULT 30 265# define GGC_MIN_HEAPSIZE_DEFAULT 4096 266#endif 267 268DEFPARAM(GGC_MIN_EXPAND, 269 "ggc-min-expand", 270 "Minimum heap expansion to trigger garbage collection, as \ 271a percentage of the total size of the heap", 272 GGC_MIN_EXPAND_DEFAULT) 273 274DEFPARAM(GGC_MIN_HEAPSIZE, 275 "ggc-min-heapsize", 276 "Minimum heap size before we start collecting garbage, in kilobytes", 277 GGC_MIN_HEAPSIZE_DEFAULT) 278 279#undef GGC_MIN_EXPAND_DEFAULT 280#undef GGC_MIN_HEAPSIZE_DEFAULT 281 282DEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS, 283 "max-reload-search-insns", 284 "The maximum number of instructions to search backward when looking for equivalent reload", 285 100) 286 287/* 288Local variables: 289mode:c 290End: */ 291