]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/params.def
generalized IPA predicate on parameter
[thirdparty/gcc.git] / gcc / params.def
index 6bedeb5aa2ba4139eb38c99e612b18e814d1648e..322c37f8b96c7c5ade92529b7e725ccb92787903 100644 (file)
@@ -1,5 +1,5 @@
 /* params.def - Run-time parameters.
-   Copyright (C) 2001-2018 Free Software Foundation, Inc.
+   Copyright (C) 2001-2019 Free Software Foundation, Inc.
    Written by Mark Mitchell <mark@codesourcery.com>.
 
 This file is part of GCC.
@@ -51,14 +51,18 @@ DEFPARAM (PARAM_PREDICTABLE_BRANCH_OUTCOME,
 
 DEFPARAM (PARAM_INLINE_MIN_SPEEDUP,
          "inline-min-speedup",
+         "The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto with -O3 and -Ofast.",
+         15, 0, 100)
+
+DEFPARAM (PARAM_INLINE_MIN_SPEEDUP_O2,
+         "inline-min-speedup-O2",
          "The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto.",
-         15, 0, 0)
+         30, 0, 100)
 
 /* 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 400.
    Only functions marked inline (or methods defined in the class
    definition for C++) are affected by this.
    There are more restrictions to inlining: If inlined functions
@@ -68,8 +72,13 @@ DEFPARAM (PARAM_INLINE_MIN_SPEEDUP,
    gets decreased.  */
 DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
          "max-inline-insns-single",
+         "The maximum number of instructions in a single function eligible for inlining with -O3 and -Ofast.",
+         200, 0, 0)
+
+DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE_O2,
+         "max-inline-insns-single-O2",
          "The maximum number of instructions in a single function eligible for inlining.",
-         400, 0, 0)
+         30, 0, 0)
 
 /* The single function inlining limit for functions that are
    inlined by virtue of -finline-functions (-O3).
@@ -80,9 +89,56 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
    The default value is 30.  */
 DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
          "max-inline-insns-auto",
-         "The maximum number of instructions when automatically inlining.",
+         "The maximum number of instructions when automatically inlining with -O3 and -Ofast.",
          30, 0, 0)
 
+DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO_O2,
+         "max-inline-insns-auto-O2",
+         "The maximum number of instructions when automatically inlining.",
+         15, 0, 0)
+
+DEFPARAM (PARAM_MAX_INLINE_INSNS_SMALL,
+         "max-inline-insns-small",
+         "The maximum number of instructions when automatically inlining small functions.",
+         0, 0, 0)
+
+DEFPARAM (PARAM_INLINE_HEURISTICS_HINT_PERCENT,
+         "inline-heuristics-hint-percent",
+         "The scale (in percents) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable with -O3 and -Ofast.",
+         1600, 100, 1000000)
+
+DEFPARAM (PARAM_INLINE_HEURISTICS_HINT_PERCENT_O2,
+         "inline-heuristics-hint-percent-O2",
+         "The scale (in percents) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable.",
+         200, 100, 1000000)
+
+DEFPARAM (PARAM_MAX_INLINE_INSNS_SIZE,
+         "max-inline-insns-size",
+         "The maximum number of instructions when inlining for size.",
+         0, 0, 0)
+
+DEFPARAM (PARAM_UNINLINED_FUNCTION_INSNS,
+         "uninlined-function-insns",
+         "Instruction accounted for function prologue, epilogue and other"
+         " overhead.",
+         2, 0, 1000000)
+
+DEFPARAM (PARAM_UNINLINED_FUNCTION_TIME,
+         "uninlined-function-time",
+         "Time accounted for function prologue, epilogue and other"
+         " overhead.",
+         0, 0, 1000000)
+
+DEFPARAM (PARAM_UNINLINED_FUNCTION_THUNK_INSNS,
+         "uninlined-thunk-insns",
+         "Instruction accounted for function thunk overhead.",
+         2, 0, 1000000)
+
+DEFPARAM (PARAM_UNINLINED_FUNCTION_THUNK_TIME,
+         "uninlined-thunk-time",
+         "Time accounted for function thunk overhead.",
+         2, 0, 1000000)
+
 DEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE,
          "max-inline-insns-recursive",
          "The maximum number of instructions inline function can grow to via recursive inlining.",
@@ -195,15 +251,19 @@ DEFPARAM(PARAM_LARGE_UNIT_INSNS,
 DEFPARAM(PARAM_INLINE_UNIT_GROWTH,
         "inline-unit-growth",
         "How much can given compilation unit grow because of the inlining (in percent).",
-        20, 0, 0)
+        40, 0, 0)
 DEFPARAM(PARAM_IPCP_UNIT_GROWTH,
         "ipcp-unit-growth",
         "How much can given compilation unit grow because of the interprocedural constant propagation (in percent).",
         10, 0, 0)
 DEFPARAM(PARAM_EARLY_INLINING_INSNS,
         "early-inlining-insns",
-        "Maximal estimated growth of function body caused by early inlining of single call.",
+        "Maximal estimated growth of function body caused by early inlining of single call with -O3 and -Ofast.",
         14, 0, 0)
+DEFPARAM(PARAM_EARLY_INLINING_INSNS_O2,
+        "early-inlining-insns-O2",
+        "Maximal estimated growth of function body caused by early inlining of single call with -O1 and -O2.",
+        6, 0, 0)
 DEFPARAM(PARAM_LARGE_STACK_FRAME,
         "large-stack-frame",
         "The size of stack frame to be considered large.",
@@ -213,14 +273,15 @@ DEFPARAM(PARAM_STACK_FRAME_GROWTH,
         "Maximal stack frame growth due to inlining (in percent).",
         1000, 0, 0)
 
+/* Keep these up to date with those in configure.ac.  */
 DEFPARAM(PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
         "stack-clash-protection-guard-size",
-        "Size of the stack guard expressed as a power of two.",
+        "Size of the stack guard expressed as a power of two in bytes.",
         12, 12, 30)
 
 DEFPARAM(PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL,
         "stack-clash-protection-probe-interval",
-        "Interval in which to probe the stack expressed as a power of two.",
+        "Interval in which to probe the stack expressed as a power of two in bytes.",
         12, 10, 16)
 
 /* The GCSE optimization will be disabled if it would require
@@ -393,20 +454,33 @@ DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
         "A threshold on the average loop count considered by the swing modulo scheduler.",
         0, 0, 0)
 
+DEFPARAM(HOT_BB_COUNT_FRACTION,
+        "hot-bb-count-fraction",
+        "The denominator n of fraction 1/n of the maximal execution count of "
+        "a basic block in the entire program that a basic block needs to at "
+        "least have in order to be considered hot (used in non-LTO mode).",
+        10000, 0, 0)
+
 DEFPARAM(HOT_BB_COUNT_WS_PERMILLE,
         "hot-bb-count-ws-permille",
-         "A basic block profile count is considered hot if it contributes to "
-         "the given permillage of the entire profiled execution.",
-        999, 0, 1000)
+        "The number of most executed permilles of the profiled execution of "
+        "the entire program to which the execution count of a basic block "
+        "must be part of in order to be considered hot (used in LTO mode).",
+        990, 0, 1000)
+
 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.",
+        "The denominator n of fraction 1/n of the execution frequency of the "
+        "entry block of a function that a basic block of this function needs "
+        "to at least have in order to be considered hot.",
         1000, 0, 0)
 
 DEFPARAM(UNLIKELY_BB_COUNT_FRACTION,
         "unlikely-bb-count-fraction",
-         "The minimum fraction of profile runs a given basic block execution count must be not to be considered unlikely.",
-        20, 1, 10000)
+        "The denominator n of fraction 1/n of the number of profiled runs of "
+        "the entire program below which the execution count of a basic block "
+        "must be in order for the basic block to be considered unlikely.",
+        20, 0, 0)
 
 DEFPARAM (PARAM_ALIGN_THRESHOLD,
          "align-threshold",
@@ -415,8 +489,8 @@ DEFPARAM (PARAM_ALIGN_THRESHOLD,
 
 DEFPARAM (PARAM_ALIGN_LOOP_ITERATIONS,
          "align-loop-iterations",
-         "Loops iterating at least selected number of iterations will get loop alignment..",
-         4, 0, 0)
+         "Loops iterating at least selected number of iterations will get "
+         "loop alignment.", 4, 0, 0)
 
 /* For guessed profiles, the loops having unknown number of iterations
    are predicted to iterate relatively few (10) times at average.
@@ -828,7 +902,7 @@ DEFPARAM (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS,
 
 DEFPARAM (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO,
          "loop-interchange-stride-ratio",
-         "The minimum stride ratio for loop interchange to be profitable",
+         "The minimum stride ratio for loop interchange to be profitable.",
          2, 0, 0)
 
 /* Whether we should use canonical types rather than deep "structural"
@@ -847,15 +921,15 @@ DEFPARAM (PARAM_MAX_PARTIAL_ANTIC_LENGTH,
          "Maximum length of partial antic set when performing tree pre optimization.",
          100, 0, 0)
 
-/* The following is used as a stop-gap limit for cases where really huge
-   SCCs blow up memory and compile-time use too much.  If we hit this limit,
-   SCCVN and such FRE and PRE will be not done at all for the current
-   function.  */
+/* The following is used as a stop-gap limit for cases where really deep
+   loop nests cause compile-time to blow up.  If we hit this limit,
+   FRE and PRE will value-number outer loops (but the outermost) in a
+   loop nest non-optimistically.  */
 
-DEFPARAM (PARAM_SCCVN_MAX_SCC_SIZE,
-         "sccvn-max-scc-size",
-         "Maximum size of a SCC before SCCVN stops processing a function.",
-         10000, 10, 0)
+DEFPARAM (PARAM_RPO_VN_MAX_LOOP_DEPTH,
+         "rpo-vn-max-loop-depth",
+         "Maximum depth of a loop nest to fully value-number optimistically.",
+         7, 2, 0)
 
 /* The following is used as a stop-gap limit for cases where really huge
    functions blow up compile-time use too much.  It limits the number of
@@ -906,32 +980,32 @@ DEFPARAM (PARAM_SWITCH_CONVERSION_BRANCH_RATIO,
 
 DEFPARAM (PARAM_LOOP_BLOCK_TILE_SIZE,
          "loop-block-tile-size",
-         "size of tiles for loop blocking.",
+         "Size of tiles for loop blocking.",
          51, 0, 0)
 
 /* Maximal number of parameters that we allow in a SCoP.  */
 
 DEFPARAM (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS,
          "graphite-max-nb-scop-params",
-         "maximum number of parameters in a SCoP.",
+         "Maximum number of parameters in a SCoP.",
          10, 0, 0)
 
 /* Maximal number of array references in a scop.  */
 
 DEFPARAM (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP,
          "graphite-max-arrays-per-scop",
-         "maximum number of arrays per scop.",
+         "Maximum number of arrays per SCoP.",
          100, 0, 0)
 
 DEFPARAM (PARAM_MAX_ISL_OPERATIONS,
          "max-isl-operations",
-         "maximum number of isl operations, 0 means unlimited",
+         "Maximum number of isl operations, 0 means unlimited.",
          350000, 0, 0)
 
 /* For testsuite purposes allow to check for codegen error handling.  */
 DEFPARAM (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS,
          "graphite-allow-codegen-errors",
-         "whether codegen errors should be ICEs when -fchecking.",
+         "Whether codegen errors should be ICEs when -fchecking.",
          0, 0, 1)
 
 /* Avoid data dependence analysis on very large loops.  */
@@ -951,23 +1025,15 @@ DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP,
    to look up for profile data. Otherwise, use a more stable
    external id based on assembler name and source location. */
 DEFPARAM (PARAM_PROFILE_FUNC_INTERNAL_ID,
-         "profile-func-internal-id",
-         "use internal function id in profile lookup.",
-          0, 0, 1)
-
-/* When the parameter is 1, track the most frequent N target
-   addresses in indirect-call profile. This disables
-   indirect_call_profiler_v2 which tracks single target.  */
-DEFPARAM (PARAM_INDIR_CALL_TOPN_PROFILE,
-         "indir-call-topn-profile",
-         "track topn target addresses in indirect-call profile.",
-          0, 0, 1)
+         "profile-func-internal-id",
+         "Use internal function id in profile lookup.",
+         0, 0, 1)
 
 /* Avoid SLP vectorization of large basic blocks.  */
 DEFPARAM (PARAM_SLP_MAX_INSNS_IN_BB,
-          "slp-max-insns-in-bb",
-          "Maximum number of instructions in basic block to be considered for SLP vectorization.",
-          1000, 0, 0)
+         "slp-max-insns-in-bb",
+         "Maximum number of instructions in basic block to be considered for "
+         "SLP vectorization.", 1000, 0, 0)
 
 DEFPARAM (PARAM_MIN_INSN_TO_PREFETCH_RATIO,
          "min-insn-to-prefetch-ratio",
@@ -1025,6 +1091,13 @@ DEFPARAM (PARAM_IPA_SRA_PTR_GROWTH_FACTOR,
          "that ipa-sra replaces a pointer to an aggregate with.",
          2, 0, 0)
 
+DEFPARAM (PARAM_IPA_SRA_MAX_REPLACEMENTS,
+         "ipa-sra-max-replacements",
+         "Maximum pieces that IPA-SRA tracks per formal parameter, as "
+         "a consequence, also the maximum number of replacements of a formal "
+         "parameter.",
+         8, 0, 16)
+
 DEFPARAM (PARAM_TM_MAX_AGGREGATE_SIZE,
          "tm-max-aggregate-size",
          "Size in bytes after which thread-local aggregates should be "
@@ -1053,19 +1126,19 @@ DEFPARAM (PARAM_IPA_CP_VALUE_LIST_SIZE,
 DEFPARAM (PARAM_IPA_CP_EVAL_THRESHOLD,
          "ipa-cp-eval-threshold",
          "Threshold ipa-cp opportunity evaluation that is still considered "
-         "beneficial to clone..",
+         "beneficial to clone.",
          500, 0, 0)
 
 DEFPARAM (PARAM_IPA_CP_RECURSION_PENALTY,
          "ipa-cp-recursion-penalty",
          "Percentage penalty the recursive functions will receive when they "
-         "are evaluated for cloning..",
+         "are evaluated for cloning.",
          40, 0, 100)
 
 DEFPARAM (PARAM_IPA_CP_SINGLE_CALL_PENALTY,
          "ipa-cp-single-call-penalty",
          "Percentage penalty functions containing a single call to another "
-         "function will receive when they are evaluated for cloning..",
+         "function will receive when they are evaluated for cloning.",
          15, 0, 100)
 
 DEFPARAM (PARAM_IPA_MAX_AGG_ITEMS,
@@ -1077,27 +1150,33 @@ DEFPARAM (PARAM_IPA_MAX_AGG_ITEMS,
 DEFPARAM (PARAM_IPA_CP_LOOP_HINT_BONUS,
          "ipa-cp-loop-hint-bonus",
          "Compile-time bonus IPA-CP assigns to candidates which make loop "
-         "bounds or strides known..",
+         "bounds or strides known.",
          64, 0, 0)
 
-DEFPARAM (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS,
-         "ipa-cp-array-index-hint-bonus",
-         "Compile-time bonus IPA-CP assigns to candidates which make an array "
-         "index known..",
-         48, 0, 0)
-
 DEFPARAM (PARAM_IPA_MAX_AA_STEPS,
          "ipa-max-aa-steps",
          "Maximum number of statements that will be visited by IPA formal "
          "parameter analysis based on alias analysis in any given function.",
          25000, 0, 0)
 
+DEFPARAM (PARAM_IPA_MAX_SWITCH_PREDICATE_BOUNDS,
+         "ipa-max-switch-predicate-bounds",
+         "Maximal number of boundary endpoints of case ranges of switch "
+         "statement used during IPA functoin summary generation.",
+         5, 0, 0)
+
+DEFPARAM (PARAM_IPA_MAX_PARAM_EXPR_OPS,
+         "ipa-max-param-expr-ops",
+         "Maximum number of operations in a parameter expression that can "
+         "be handled by IPA analysis.",
+         10, 0, 0)
+
 /* WHOPR partitioning configuration.  */
 
 DEFPARAM (PARAM_LTO_PARTITIONS,
          "lto-partitions",
          "Number of partitions the program should be split to.",
-         32, 1, 0)
+         128, 1, 0)
 
 DEFPARAM (MIN_PARTITION_SIZE,
          "lto-min-partition",
@@ -1109,6 +1188,11 @@ DEFPARAM (MAX_PARTITION_SIZE,
          "Maximal size of a partition for LTO (in estimated instructions).",
          1000000, 0, INT_MAX)
 
+DEFPARAM (PARAM_MAX_LTO_STREAMING_PARALLELISM,
+         "lto-max-streaming-parallelism",
+         "maximal number of LTO partitions streamed in parallel.",
+         32, 1, 0)
+
 /* Diagnostic parameters.  */
 
 DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP,
@@ -1133,17 +1217,25 @@ DEFPARAM (PARAM_CASE_VALUES_THRESHOLD,
          "if 0, use the default for the machine.",
           0, 0, 0)
 
-/* Data race flags for C++0x memory model compliance.  */
-DEFPARAM (PARAM_ALLOW_STORE_DATA_RACES,
-         "allow-store-data-races",
-         "Allow new data races on stores to be introduced.",
-         0, 0, 1)
+DEFPARAM (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SIZE,
+         "jump-table-max-growth-ratio-for-size",
+         "The maximum code size growth ratio when expanding "
+         "into a jump table (in percent).  The parameter is used when "
+         "optimizing for size.",
+         300, 0, 0)
+
+DEFPARAM (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SPEED,
+         "jump-table-max-growth-ratio-for-speed",
+         "The maximum code size growth ratio when expanding "
+         "into a jump table (in percent).  The parameter is used when "
+         "optimizing for speed.",
+         800, 0, 0)
 
 /* Reassociation width to be used by tree reassoc optimization.  */
 DEFPARAM (PARAM_TREE_REASSOC_WIDTH,
          "tree-reassoc-width",
          "Set the maximum number of instructions executed in parallel in "
-         "reassociated tree. If 0, use the target dependent heuristic..",
+         "reassociated tree.  If 0, use the target dependent heuristic.",
          0, 0, 0)
 
 DEFPARAM (PARAM_MAX_TAIL_MERGE_COMPARISONS,
@@ -1163,6 +1255,11 @@ DEFPARAM (PARAM_MAX_STORES_TO_MERGE,
          "store merging pass.",
          64, 2, 0)
 
+DEFPARAM (PARAM_STORE_MERGING_MAX_SIZE,
+         "store-merging-max-size",
+         "Maximum size of a single store merging region in bytes.",
+         65536, 1, 1)
+
 DEFPARAM (PARAM_MAX_TAIL_MERGE_ITERATIONS,
           "max-tail-merge-iterations",
           "Maximum amount of iterations of the pass over a function.",
@@ -1320,18 +1417,18 @@ DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_UNPREDICTABLE_COST,
 
 DEFPARAM (PARAM_HSA_GEN_DEBUG_STORES,
          "hsa-gen-debug-stores",
-         "Level of hsa debug stores verbosity",
+         "Level of hsa debug stores verbosity.",
          0, 0, 1)
 
 DEFPARAM (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS,
          "max-speculative-devirt-maydefs",
          "Maximum number of may-defs visited when devirtualizing "
-         "speculatively", 50, 0, 0)
+         "speculatively.", 50, 0, 0)
 
 DEFPARAM (PARAM_MAX_VRP_SWITCH_ASSERTIONS,
          "max-vrp-switch-assertions",
          "Maximum number of assertions to add along the default "
-         "edge of a switch statement during VRP",
+         "edge of a switch statement during VRP.",
          10, 0, 0)
 
 DEFPARAM (PARAM_VECT_EPILOGUES_NOMASK,
@@ -1354,6 +1451,42 @@ DEFPARAM(PARAM_AVOID_FMA_MAX_BITS,
         "Maximum number of bits for which we avoid creating FMAs.",
         0, 0, 512)
 
+DEFPARAM(PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT,
+        "logical-op-non-short-circuit",
+        "True if a non-short-circuit operation is optimal.",
+        -1, -1, 1)
+
+DEFPARAM(PARAM_LOOP_VERSIONING_MAX_INNER_INSNS,
+        "loop-versioning-max-inner-insns",
+        "The maximum number of instructions in an inner loop that is being"
+        " considered for versioning.",
+        200, 0, 0)
+
+DEFPARAM(PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS,
+        "loop-versioning-max-outer-insns",
+        "The maximum number of instructions in an outer loop that is being"
+        " considered for versioning, on top of the instructions in inner"
+        " loops.",
+        100, 0, 0)
+
+DEFPARAM(PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD,
+        "gimple-fe-computed-hot-bb-threshold",
+        "The number of executions of a basic block which is considered hot."
+        " The parameter is used only in GIMPLE FE.",
+        0, 0, 0)
+
+DEFPARAM(PARAM_HASH_TABLE_VERIFICATION_LIMIT,
+        "hash-table-verification-limit",
+        "The number of elements for which hash table verification is done for "
+        "each searched element.",
+        10, 0, 0)
+
+DEFPARAM(PARAM_SSA_NAME_DEF_CHAIN_LIMIT,
+        "ssa-name-def-chain-limit",
+        "The maximum number of SSA_NAME assignments to follow in determining "
+        "a value.",
+        512, 0, 0)
+
 /*
 
 Local variables: