aboutsummaryrefslogtreecommitdiff
path: root/gcc/params.h
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2001-02-14 16:24:45 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2001-02-14 16:24:45 +0000
commitc6d9a88cbc231b27539ebf4be3f0843cbf59841c (patch)
tree358938d277595e7cf94e5146dc0522239e45faf5 /gcc/params.h
parent4806765ec47c11611b78a58908db872b1600e45f (diff)
downloadgcc-c6d9a88cbc231b27539ebf4be3f0843cbf59841c.zip
gcc-c6d9a88cbc231b27539ebf4be3f0843cbf59841c.tar.gz
gcc-c6d9a88cbc231b27539ebf4be3f0843cbf59841c.tar.bz2
Makefile.in (toplev.o): Depend on params.h.
* Makefile.in (toplev.o): Depend on params.h. (intergate.o): Likewise. (params.o): New target. * flags.h (inline_max_insns): Remove. * integrate.c: Include params.h. Use MAX_INLINE_INSNS instead of inline_max_insns. * params.c: New file. * params.h: Likewise. * params.def: Likewise. * toplev.c: Include params.h. (lang_independent_params): New variable. (decode_f_option): Use the param machinery instead of setting max_inline_insns. (independent_decode_option): Handle "--param name=value". (main): Register language-independent parameters. From-SVN: r39683
Diffstat (limited to 'gcc/params.h')
-rw-r--r--gcc/params.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/gcc/params.h b/gcc/params.h
new file mode 100644
index 0000000..c097ad1
--- /dev/null
+++ b/gcc/params.h
@@ -0,0 +1,85 @@
+/* params.h - Run-time parameters.
+ Copyright (C) 2001 Free Software Foundation, Inc.
+ Written by Mark Mitchell <mark@codesourcery.com>.
+
+This file is part of GNU CC.
+
+GNU CC 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.
+
+GNU CC 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 GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+*/
+
+/* This module provides a means for setting integral parameters
+ dynamically. Instead of encoding magic numbers in various places,
+ use this module to organize all the magic numbers in a single
+ place. The values of the parameters can be set on the
+ command-line, thereby providing a way to control the amount of
+ effort spent on particular optimization passes, or otherwise tune
+ the behavior of the compiler. */
+
+#ifndef PARAMS_H
+#define PARAMS_H
+
+/* No parameter shall have this value. */
+
+#define INVALID_PARAM_VAL (-1)
+
+/* The information associated with each parameter. */
+
+typedef struct param_info
+{
+ /* The name used with the `--param <name>=<value>' switch to set this
+ value. */
+ const char *option;
+ /* The associated value. */
+ int value;
+} param_info;
+
+/* An array containing the compiler parameters and their current
+ values. */
+
+extern param_info *compiler_params;
+
+/* Add the N PARAMS to the current list of compiler parameters. */
+
+extern void add_params
+ PARAMS ((const param_info params[], size_t n));
+
+/* Set the VALUE associated with the parameter given by NAME. */
+
+extern void set_param_value
+ PARAMS ((const char *name, int value));
+
+
+/* The parameters in use by language-independent code. */
+
+typedef enum compiler_param
+{
+#define DEFPARAM(ENUM, OPTION, HELP, DEFAULT) \
+ ENUM,
+#include "params.def"
+#undef DEFPARAM
+ LAST_PARAM
+} compiler_param;
+
+/* The value of the parameter given by ENUM. */
+#define PARAM_VALUE(ENUM) \
+ (compiler_params[(int) ENUM].value)
+
+/* Macros for the various parameters. */
+#define MAX_INLINE_INSNS \
+ PARAM_VALUE (PARAM_MAX_INLINE_INSNS)
+
+#endif /* PARAMS_H */