X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fparams.h;h=5aeb3ef47d75eb4fdcf87cc487d6ede5f138696b;hp=67a7a05c3deefe91357c8fbf50837835978ecedb;hb=40ec327c484f09c7fc9c11e5633101cfc391683c;hpb=9845d1202fec65574ca05d780859eb8c25489566 diff --git a/gcc/params.h b/gcc/params.h index 67a7a05c3de..5aeb3ef47d7 100644 --- a/gcc/params.h +++ b/gcc/params.h @@ -1,5 +1,5 @@ /* params.h - Run-time parameters. - Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Mark Mitchell . @@ -44,18 +44,16 @@ typedef struct param_info /* The name used with the `--param =' switch to set this value. */ const char *const option; - /* The associated value. */ - int value; - /* True if the parameter was explicitly set. */ - bool set; + /* The default value. */ + int default_value; /* Minimum acceptable value. */ int min_value; - + /* Maximum acceptable value, if greater than minimum */ int max_value; - + /* A short description of the option. */ const char *const help; } param_info; @@ -65,13 +63,19 @@ typedef struct param_info extern param_info *compiler_params; +/* Returns the number of entries in the table, for the use by plugins. */ +extern size_t get_num_compiler_params (void); + /* Add the N PARAMS to the current list of compiler parameters. */ extern void add_params (const param_info params[], size_t n); -/* Set the VALUE associated with the parameter given by NAME. */ +/* Set the VALUE associated with the parameter given by NAME in the + table PARAMS using PARAMS_SET to indicate which have been + explicitly set. */ -extern void set_param_value (const char *name, int value); +extern void set_param_value (const char *name, int value, + int *params, int *params_set); /* The parameters in use by language-independent code. */ @@ -85,13 +89,33 @@ typedef enum compiler_param LAST_PARAM } compiler_param; -/* The value of the parameter given by ENUM. */ +/* The value of the parameter given by ENUM. Not an lvalue. */ #define PARAM_VALUE(ENUM) \ - (compiler_params[(int) ENUM].value) + ((int) global_options.x_param_values[(int) ENUM]) + +/* Set the value of the parameter given by NUM to VALUE, implicitly, + if it has not been set explicitly by the user, in the table PARAMS + using PARAMS_SET to indicate which have been explicitly set. */ + +extern void maybe_set_param_value (compiler_param num, int value, + int *params, int *params_set); + +/* Set the default value of a parameter given by NUM to VALUE, before + option processing. */ + +extern void set_default_param_value (compiler_param num, int value); + +/* Note that all parameters have been added and all default values + set. */ +extern void finish_params (void); + +/* Return the default value of parameter NUM. */ + +extern int default_param_value (compiler_param num); -/* True if the value of the parameter was explicitly changed. */ -#define PARAM_SET_P(ENUM) \ - (compiler_params[(int) ENUM].set) +/* Initialize an array PARAMS with default values of the + parameters. */ +extern void init_param_values (int *params); /* Macros for the various parameters. */ #define STRUCT_REORG_COLD_STRUCT_RATIO \ @@ -122,6 +146,12 @@ typedef enum compiler_param PARAM_VALUE (PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION) #define GCSE_AFTER_RELOAD_CRITICAL_FRACTION \ PARAM_VALUE (PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION) +#define GCSE_COST_DISTANCE_RATIO \ + PARAM_VALUE (PARAM_GCSE_COST_DISTANCE_RATIO) +#define GCSE_UNRESTRICTED_COST \ + PARAM_VALUE (PARAM_GCSE_UNRESTRICTED_COST) +#define MAX_HOIST_DEPTH \ + PARAM_VALUE (PARAM_MAX_HOIST_DEPTH) #define MAX_UNROLLED_INSNS \ PARAM_VALUE (PARAM_MAX_UNROLLED_INSNS) #define MAX_SMS_LOOP_NUMBER \ @@ -160,6 +190,8 @@ typedef enum compiler_param PARAM_VALUE (PARAM_IRA_MAX_LOOPS_NUM) #define IRA_MAX_CONFLICT_TABLE_SIZE \ PARAM_VALUE (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE) +#define IRA_LOOP_RESERVED_REGS \ + PARAM_VALUE (PARAM_IRA_LOOP_RESERVED_REGS) #define SWITCH_CONVERSION_BRANCH_RATIO \ PARAM_VALUE (PARAM_SWITCH_CONVERSION_BRANCH_RATIO) #define LOOP_INVARIANT_MAX_BBS_IN_LOOP \