]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/params.h
Remove trailing white spaces.
[thirdparty/gcc.git] / gcc / params.h
CommitLineData
9a33a2e8 1/* params.h - Run-time parameters.
86482d6b 2 Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009
3 Free Software Foundation, Inc.
9a33a2e8 4 Written by Mark Mitchell <mark@codesourcery.com>.
5
f12b58b3 6This file is part of GCC.
9a33a2e8 7
f12b58b3 8GCC is free software; you can redistribute it and/or modify it under
9the terms of the GNU General Public License as published by the Free
8c4c00c1 10Software Foundation; either version 3, or (at your option) any later
f12b58b3 11version.
9a33a2e8 12
f12b58b3 13GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14WARRANTY; without even the implied warranty of MERCHANTABILITY or
15FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16for more details.
9a33a2e8 17
18You should have received a copy of the GNU General Public License
8c4c00c1 19along with GCC; see the file COPYING3. If not see
20<http://www.gnu.org/licenses/>. */
9a33a2e8 21
22/* This module provides a means for setting integral parameters
23 dynamically. Instead of encoding magic numbers in various places,
24 use this module to organize all the magic numbers in a single
25 place. The values of the parameters can be set on the
26 command-line, thereby providing a way to control the amount of
27 effort spent on particular optimization passes, or otherwise tune
21b80b12 28 the behavior of the compiler.
29
30 Since their values can be set on the command-line, these parameters
31 should not be used for non-dynamic memory allocation. */
9a33a2e8 32
2a281353 33#ifndef GCC_PARAMS_H
34#define GCC_PARAMS_H
9a33a2e8 35
36/* No parameter shall have this value. */
37
38#define INVALID_PARAM_VAL (-1)
39
40/* The information associated with each parameter. */
41
42typedef struct param_info
43{
44 /* The name used with the `--param <name>=<value>' switch to set this
45 value. */
e99c3a1d 46 const char *const option;
9a33a2e8 47 /* The associated value. */
48 int value;
1d8a53f4 49
07804af5 50 /* True if the parameter was explicitly set. */
51 bool set;
52
1d8a53f4 53 /* Minimum acceptable value. */
54 int min_value;
48e1416a 55
0975351b 56 /* Maximum acceptable value, if greater than minimum */
1d8a53f4 57 int max_value;
48e1416a 58
a5d654e2 59 /* A short description of the option. */
e99c3a1d 60 const char *const help;
9a33a2e8 61} param_info;
62
63/* An array containing the compiler parameters and their current
64 values. */
65
66extern param_info *compiler_params;
67
68/* Add the N PARAMS to the current list of compiler parameters. */
69
1a97be37 70extern void add_params (const param_info params[], size_t n);
9a33a2e8 71
72/* Set the VALUE associated with the parameter given by NAME. */
73
1a97be37 74extern void set_param_value (const char *name, int value);
9a33a2e8 75
76\f
77/* The parameters in use by language-independent code. */
78
79typedef enum compiler_param
80{
1d8a53f4 81#define DEFPARAM(enumerator, option, msgid, default, min, max) \
25afff2f 82 enumerator,
9a33a2e8 83#include "params.def"
195731ad 84#undef DEFPARAM
9a33a2e8 85 LAST_PARAM
86} compiler_param;
87
88/* The value of the parameter given by ENUM. */
89#define PARAM_VALUE(ENUM) \
90 (compiler_params[(int) ENUM].value)
195731ad 91
07804af5 92/* True if the value of the parameter was explicitly changed. */
93#define PARAM_SET_P(ENUM) \
94 (compiler_params[(int) ENUM].set)
95
9a33a2e8 96/* Macros for the various parameters. */
f27ac341 97#define STRUCT_REORG_COLD_STRUCT_RATIO \
98 PARAM_VALUE (PARAM_STRUCT_REORG_COLD_STRUCT_RATIO)
6cc4057d 99#define MAX_INLINE_INSNS_SINGLE \
100 PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SINGLE)
9a33a2e8 101#define MAX_INLINE_INSNS \
102 PARAM_VALUE (PARAM_MAX_INLINE_INSNS)
6cc4057d 103#define MAX_INLINE_SLOPE \
104 PARAM_VALUE (PARAM_MAX_INLINE_SLOPE)
105#define MIN_INLINE_INSNS \
106 PARAM_VALUE (PARAM_MIN_INLINE_INSNS)
e2b04249 107#define MAX_INLINE_INSNS_AUTO \
108 PARAM_VALUE (PARAM_MAX_INLINE_INSNS_AUTO)
375bb675 109#define MAX_VARIABLE_EXPANSIONS \
110 PARAM_VALUE (PARAM_MAX_VARIABLE_EXPANSIONS)
8964b5be 111#define MIN_VECT_LOOP_BOUND \
112 PARAM_VALUE (PARAM_MIN_VECT_LOOP_BOUND)
21b80b12 113#define MAX_DELAY_SLOT_INSN_SEARCH \
114 PARAM_VALUE (PARAM_MAX_DELAY_SLOT_INSN_SEARCH)
98d5e888 115#define MAX_DELAY_SLOT_LIVE_SEARCH \
116 PARAM_VALUE (PARAM_MAX_DELAY_SLOT_LIVE_SEARCH)
85de291e 117#define MAX_PENDING_LIST_LENGTH \
118 PARAM_VALUE (PARAM_MAX_PENDING_LIST_LENGTH)
9159979b 119#define MAX_GCSE_MEMORY \
120 ((size_t) PARAM_VALUE (PARAM_MAX_GCSE_MEMORY))
839f8415 121#define GCSE_AFTER_RELOAD_PARTIAL_FRACTION \
122 PARAM_VALUE (PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION)
123#define GCSE_AFTER_RELOAD_CRITICAL_FRACTION \
124 PARAM_VALUE (PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION)
0b11ae2e 125#define MAX_UNROLLED_INSNS \
126 PARAM_VALUE (PARAM_MAX_UNROLLED_INSNS)
406a73e7 127#define MAX_SMS_LOOP_NUMBER \
128 PARAM_VALUE (PARAM_MAX_SMS_LOOP_NUMBER)
129#define SMS_MAX_II_FACTOR \
130 PARAM_VALUE (PARAM_SMS_MAX_II_FACTOR)
131#define SMS_DFA_HISTORY \
132 PARAM_VALUE (PARAM_SMS_DFA_HISTORY)
133#define SMS_LOOP_AVERAGE_COUNT_THRESHOLD \
134 PARAM_VALUE (PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD)
00b76131 135#define INTEGER_SHARE_LIMIT \
136 PARAM_VALUE (PARAM_INTEGER_SHARE_LIMIT)
9c8b7028 137#define MAX_LAST_VALUE_RTL \
138 PARAM_VALUE (PARAM_MAX_LAST_VALUE_RTL)
095dcfa3 139#define MIN_VIRTUAL_MAPPINGS \
140 PARAM_VALUE (PARAM_MIN_VIRTUAL_MAPPINGS)
141#define VIRTUAL_MAPPINGS_TO_SYMS_RATIO \
142 PARAM_VALUE (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO)
f0ee0b5b 143#define MAX_FIELDS_FOR_FIELD_SENSITIVE \
144 ((size_t) PARAM_VALUE (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE))
23df5e5b 145#define MAX_SCHED_READY_INSNS \
146 PARAM_VALUE (PARAM_MAX_SCHED_READY_INSNS)
07804af5 147#define PREFETCH_LATENCY \
148 PARAM_VALUE (PARAM_PREFETCH_LATENCY)
149#define SIMULTANEOUS_PREFETCHES \
150 PARAM_VALUE (PARAM_SIMULTANEOUS_PREFETCHES)
151#define L1_CACHE_SIZE \
152 PARAM_VALUE (PARAM_L1_CACHE_SIZE)
153#define L1_CACHE_LINE_SIZE \
154 PARAM_VALUE (PARAM_L1_CACHE_LINE_SIZE)
0c916a7b 155#define L2_CACHE_SIZE \
156 PARAM_VALUE (PARAM_L2_CACHE_SIZE)
a1406b2e 157#define USE_CANONICAL_TYPES \
158 PARAM_VALUE (PARAM_USE_CANONICAL_TYPES)
47dd2e78 159#define IRA_MAX_LOOPS_NUM \
160 PARAM_VALUE (PARAM_IRA_MAX_LOOPS_NUM)
95c83f01 161#define IRA_MAX_CONFLICT_TABLE_SIZE \
162 PARAM_VALUE (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
e8eed2f8 163#define IRA_LOOP_RESERVED_REGS \
164 PARAM_VALUE (PARAM_IRA_LOOP_RESERVED_REGS)
a347af29 165#define SWITCH_CONVERSION_BRANCH_RATIO \
166 PARAM_VALUE (PARAM_SWITCH_CONVERSION_BRANCH_RATIO)
86482d6b 167#define LOOP_INVARIANT_MAX_BBS_IN_LOOP \
168 PARAM_VALUE (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
37545e54 169#define SLP_MAX_INSNS_IN_BB \
170 PARAM_VALUE (PARAM_SLP_MAX_INSNS_IN_BB)
0ab353e1 171#define MIN_INSN_TO_PREFETCH_RATIO \
172 PARAM_VALUE (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
173#define PREFETCH_MIN_INSN_TO_MEM_RATIO \
174 PARAM_VALUE (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
9845d120 175#define MIN_NONDEBUG_INSN_UID \
176 PARAM_VALUE (PARAM_MIN_NONDEBUG_INSN_UID)
2a281353 177#endif /* ! GCC_PARAMS_H */