⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optimize-options.html

📁 自己收集的linux入门到学懂高级编程书集 包括linux程序设计第三版
💻 HTML
📖 第 1 页 / 共 5 页
字号:
so.  When you specify these options, the assembler and linker willcreate larger object and executable files and will also be slower. You will not be able to use <code>gprof</code> on all systems if youspecify this option and you may have problems with debugging ifyou specify both this option and <code>-g</code>.     <br><dt><code>-fbranch-target-load-optimize</code>     <dd>Perform branch target register load optimization before prologue / epiloguethreading. The use of target registers can typically be exposed only during reload,thus hoisting loads out of loops and doing inter-block scheduling needsa separate optimization pass.     <br><dt><code>-fbranch-target-load-optimize2</code>     <dd>Perform branch target register load optimization after prologue / epiloguethreading.     <br><dt><code>-fbtr-bb-exclusive</code>     <dd>When performing branch target register load optimization, don't reusebranch target registers in within any basic block.     <br><dt><code>--param </code><var>name</var><code>=</code><var>value</var><code></code>     <dd>In some places, GCC uses various constants to control the amount ofoptimization that is done.  For example, GCC will not inline functionsthat contain more that a certain number of instructions.  You cancontrol some of these constants on the command-line using the<code>--param</code> option.     <p>The names of specific parameters, and the meaning of the values, aretied to the internals of the compiler, and are subject to changewithout notice in future releases.     <p>In each case, the <var>value</var> is an integer.  The allowable choices for<var>name</var> are given in the following table:          <dl><dt><code>max-crossjump-edges</code>          <dd>The maximum number of incoming edges to consider for crossjumping. The algorithm used by <code>-fcrossjumping</code> is O(N^2) inthe number of edges incoming to each block.  Increasing values meanmore aggressive optimization, making the compile time increase withprobably small improvement in executable size.          <br><dt><code>max-delay-slot-insn-search</code>          <dd>The maximum number of instructions to consider when looking for aninstruction to fill a delay slot.  If more than this arbitrary number ofinstructions is searched, the time savings from filling the delay slotwill be minimal so stop searching.  Increasing values mean moreaggressive optimization, making the compile time increase with probablysmall improvement in executable run time.          <br><dt><code>max-delay-slot-live-search</code>          <dd>When trying to fill delay slots, the maximum number of instructions toconsider when searching for a block with valid live registerinformation.  Increasing this arbitrarily chosen value means moreaggressive optimization, increasing the compile time.  This parametershould be removed when the delay slot code is rewritten to maintain thecontrol-flow graph.          <br><dt><code>max-gcse-memory</code>          <dd>The approximate maximum amount of memory that will be allocated inorder to perform the global common subexpression eliminationoptimization.  If more memory than specified is required, theoptimization will not be done.          <br><dt><code>max-gcse-passes</code>          <dd>The maximum number of passes of GCSE to run.  The default is 1.          <br><dt><code>max-pending-list-length</code>          <dd>The maximum number of pending dependencies scheduling will allowbefore flushing the current state and starting over.  Large functionswith few branches or calls can create excessively large lists whichneedlessly consume memory and resources.          <br><dt><code>max-inline-insns-single</code>          <dd>Several parameters control the tree inliner used in gcc. This number sets the maximum number of instructions (counted in GCC'sinternal representation) in a single function that the tree inlinerwill consider for inlining.  This only affects functions declaredinline and methods implemented in a class declaration (C++). The default value is 500.          <br><dt><code>max-inline-insns-auto</code>          <dd>When you use <code>-finline-functions</code> (included in <code>-O3</code>),a lot of functions that would otherwise not be considered for inliningby the compiler will be investigated.  To those functions, a different(more restrictive) limit compared to functions declared inline canbe applied. The default value is 120.          <br><dt><code>large-function-insns</code>          <dd>The limit specifying really large functions.  For functions greater than thislimit inlining is constrained by <code>--param large-function-growth</code>. This parameter is useful primarily to avoid extreme compilation time caused by non-linearalgorithms used by the backend. This parameter is ignored when <code>-funit-at-a-time</code> is not used. The default value is 3000.          <br><dt><code>large-function-growth</code>          <dd>Specifies maximal growth of large function caused by inlining in percents. This parameter is ignored when <code>-funit-at-a-time</code> is not used. The default value is 200.          <br><dt><code>inline-unit-growth</code>          <dd>Specifies maximal overall growth of the compilation unit caused by inlining. This parameter is ignored when <code>-funit-at-a-time</code> is not used. The default value is 150.          <br><dt><code>max-inline-insns-rtl</code>          <dd>For languages that use the RTL inliner (this happens at a later stagethan tree inlining), you can set the maximum allowable size (countedin RTL instructions) for the RTL inliner with this parameter. The default value is 600.          <br><dt><code>max-unrolled-insns</code>          <dd>The maximum number of instructions that a loop should have if that loopis unrolled, and if the loop is unrolled, it determines how many timesthe loop code is unrolled.          <br><dt><code>max-average-unrolled-insns</code>          <dd>The maximum number of instructions biased by probabilities of their executionthat a loop should have if that loop is unrolled, and if the loop is unrolled,it determines how many times the loop code is unrolled.          <br><dt><code>max-unroll-times</code>          <dd>The maximum number of unrollings of a single loop.          <br><dt><code>max-peeled-insns</code>          <dd>The maximum number of instructions that a loop should have if that loopis peeled, and if the loop is peeled, it determines how many timesthe loop code is peeled.          <br><dt><code>max-peel-times</code>          <dd>The maximum number of peelings of a single loop.          <br><dt><code>max-completely-peeled-insns</code>          <dd>The maximum number of insns of a completely peeled loop.          <br><dt><code>max-completely-peel-times</code>          <dd>The maximum number of iterations of a loop to be suitable for complete peeling.          <br><dt><code>max-unswitch-insns</code>          <dd>The maximum number of insns of an unswitched loop.          <br><dt><code>max-unswitch-level</code>          <dd>The maximum number of branches unswitched in a single loop.          <br><dt><code>hot-bb-count-fraction</code>          <dd>Select fraction of the maximal count of repetitions of basic block in programgiven basic block needs to have to be considered hot.          <br><dt><code>hot-bb-frequency-fraction</code>          <dd>Select fraction of the maximal frequency of executions of basic block infunction given basic block needs to have to be considered hot          <br><dt><code>tracer-dynamic-coverage</code>          <dd><dt><code>tracer-dynamic-coverage-feedback</code>          <dd>This value is used to limit superblock formation once the given percentage ofexecuted instructions is covered.  This limits unnecessary code sizeexpansion.          <p>The <code>tracer-dynamic-coverage-feedback</code> is used only when profilefeedback is available.  The real profiles (as opposed to statically estimatedones) are much less balanced allowing the threshold to be larger value.          <br><dt><code>tracer-max-code-growth</code>          <dd>Stop tail duplication once code growth has reached given percentage.  This israther hokey argument, as most of the duplicates will be eliminated later incross jumping, so it may be set to much higher values than is the desired codegrowth.          <br><dt><code>tracer-min-branch-ratio</code>          <dd>Stop reverse growth when the reverse probability of best edge is less than thisthreshold (in percent).          <br><dt><code>tracer-min-branch-ratio</code>          <dd><dt><code>tracer-min-branch-ratio-feedback</code>          <dd>Stop forward growth if the best edge do have probability lower than thisthreshold.          <p>Similarly to <code>tracer-dynamic-coverage</code> two values are present, one forcompilation for profile feedback and one for compilation without.  The valuefor compilation with profile feedback needs to be more conservative (higher) inorder to make tracer effective.          <br><dt><code>max-cse-path-length</code>          <dd>Maximum number of basic blocks on path that cse considers.  The default is 10.          <br><dt><code>ggc-min-expand</code>          <dd>GCC uses a garbage collector to manage its own memory allocation.  Thisparameter specifies the minimum percentage by which the garbagecollector's heap should be allowed to expand between collections. Tuning this may improve compilation speed; it has no effect on codegeneration.          <p>The default is 30% + 70% * (RAM/1GB) with an upper bound of 100% whenRAM &gt;= 1GB.  If <code>getrlimit</code> is available, the notion of "RAM" isthe smallest of actual RAM, RLIMIT_RSS, RLIMIT_DATA and RLIMIT_AS.  IfGCC is not able to calculate RAM on a particular platform, the lowerbound of 30% is used.  Setting this parameter and<code>ggc-min-heapsize</code> to zero causes a full collection to occur atevery opportunity.  This is extremely slow, but can be useful fordebugging.          <br><dt><code>ggc-min-heapsize</code>          <dd>Minimum size of the garbage collector's heap before it begins botheringto collect garbage.  The first collection occurs after the heap expandsby <code>ggc-min-expand</code>% beyond <code>ggc-min-heapsize</code>.  Again,tuning this may improve compilation speed, and has no effect on codegeneration.          <p>The default is RAM/8, with a lower bound of 4096 (four megabytes) and anupper bound of 131072 (128 megabytes).  If <code>getrlimit</code> isavailable, the notion of "RAM" is the smallest of actual RAM,RLIMIT_RSS, RLIMIT_DATA and RLIMIT_AS.  If GCC is not able to calculateRAM on a particular platform, the lower bound is used.  Setting thisparameter very large effectively disables garbage collection.  Settingthis parameter and <code>ggc-min-expand</code> to zero causes a fullcollection to occur at every opportunity.          <br><dt><code>max-reload-search-insns</code>          <dd>The maximum number of instruction reload should look backward for equivalentregister.  Increasing values mean more aggressive optimization, making thecompile time increase with probably slightly better performance.  The defaultvalue is 100.          <br><dt><code>max-cselib-memory-location</code>          <dd>The maximum number of memory locations cselib should take into acount. Increasing values mean more aggressive optimization, making the compile timeincrease with probably slightly better performance.  The default value is 500.          <br><dt><code>reorder-blocks-duplicate</code>          <dd><dt><code>reorder-blocks-duplicate-feedback</code>          <dd>Used by basic block reordering pass to decide whether to use unconditionalbranch or duplicate the code on its destination.  Code is duplicated when itsestimated size is smaller than this value multiplied by the estimated size ofunconditional jump in the hot spots of the program.          <p>The <code>reorder-block-duplicate-feedback</code> is used only when profilefeedback is available and may be set to higher values than<code>reorder-block-duplicate</code> since information about the hot spots is moreaccurate.          <br><dt><code>max-sched-region-blocks</code>          <dd>The maximum number of blocks in a region to be considered forinterblock scheduling.  The default value is 10.          <br><dt><code>max-sched-region-insns</code>          <dd>The maximum number of insns in a region to be considered forinterblock scheduling.  The default value is 100. </dl>     </dl>   </body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -