diff options
author | Martin Liska <mliska@suse.cz> | 2021-11-29 14:46:47 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2021-12-07 14:37:02 +0100 |
commit | 8e836af61b7027c0819da62c12a8d18b7c46f3fc (patch) | |
tree | b6976486e39e428ba0e7b2a261fddd3cadbdcbc1 | |
parent | 3a2257e6b3fa288d6c50831987949b9ff7dfb865 (diff) | |
download | gcc-8e836af61b7027c0819da62c12a8d18b7c46f3fc.zip gcc-8e836af61b7027c0819da62c12a8d18b7c46f3fc.tar.gz gcc-8e836af61b7027c0819da62c12a8d18b7c46f3fc.tar.bz2 |
Fix --help -Q output
PR middle-end/103438
gcc/ChangeLog:
* config/s390/s390.c (s390_valid_target_attribute_inner_p):
Use new enum CLVC_INTEGER.
* opt-functions.awk: Use new CLVC_INTEGER.
* opts-common.c (set_option): Likewise.
(option_enabled): Return -1,0,1 for CLVC_INTEGER.
(get_option_state): Use new CLVC_INTEGER.
(control_warning_option): Likewise.
* opts.h (enum cl_var_type): Likewise.
-rw-r--r-- | gcc/config/s390/s390.c | 2 | ||||
-rw-r--r-- | gcc/opt-functions.awk | 2 | ||||
-rw-r--r-- | gcc/opts-common.c | 21 | ||||
-rw-r--r-- | gcc/opts.h | 4 |
4 files changed, 18 insertions, 11 deletions
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 510e7f5..3a22f78 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -15926,7 +15926,7 @@ s390_valid_target_attribute_inner_p (tree args, new_opts_set->x_target_flags |= mask; } - else if (cl_options[opt].var_type == CLVC_BOOLEAN) + else if (cl_options[opt].var_type == CLVC_INTEGER) { int value; diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk index 9bc8560..ffe4eb9 100644 --- a/gcc/opt-functions.awk +++ b/gcc/opt-functions.awk @@ -303,7 +303,7 @@ function var_set(flags) return "0, CLVC_STRING, 0" if (flag_set_p("ByteSize", flags)) return "0, CLVC_SIZE, 0" - return "0, CLVC_BOOLEAN, 0" + return "0, CLVC_INTEGER, 0" } # Given that an option called NAME has flags FLAGS, return an initializer diff --git a/gcc/opts-common.c b/gcc/opts-common.c index 9d1914f..ef2130e 100644 --- a/gcc/opts-common.c +++ b/gcc/opts-common.c @@ -1458,7 +1458,7 @@ set_option (struct gcc_options *opts, struct gcc_options *opts_set, switch (option->var_type) { - case CLVC_BOOLEAN: + case CLVC_INTEGER: if (option->cl_host_wide_int) { *(HOST_WIDE_INT *) flag_var = value; @@ -1586,7 +1586,8 @@ option_flag_var (int opt_index, struct gcc_options *opts) } /* Return 1 if option OPT_IDX is enabled in OPTS, 0 if it is disabled, - or -1 if it isn't a simple on-off switch. */ + or -1 if it isn't a simple on-off switch + (or if the value is unknown, typically set later in target). */ int option_enabled (int opt_idx, unsigned lang_mask, void *opts) @@ -1606,11 +1607,17 @@ option_enabled (int opt_idx, unsigned lang_mask, void *opts) if (flag_var) switch (option->var_type) { - case CLVC_BOOLEAN: + case CLVC_INTEGER: if (option->cl_host_wide_int) - return *(HOST_WIDE_INT *) flag_var != 0; + { + HOST_WIDE_INT v = *(HOST_WIDE_INT *) flag_var; + return v != 0 ? (v < 0 ? -1 : 1) : 0; + } else - return *(int *) flag_var != 0; + { + int v = *(int *) flag_var; + return v != 0 ? (v < 0 ? -1 : 1) : 0; + } case CLVC_EQUAL: if (option->cl_host_wide_int) @@ -1658,7 +1665,7 @@ get_option_state (struct gcc_options *opts, int option, switch (cl_options[option].var_type) { - case CLVC_BOOLEAN: + case CLVC_INTEGER: case CLVC_EQUAL: case CLVC_SIZE: state->data = flag_var; @@ -1725,7 +1732,7 @@ control_warning_option (unsigned int opt_index, int kind, const char *arg, const struct cl_option *option = &cl_options[opt_index]; /* -Werror=foo implies -Wfoo. */ - if (option->var_type == CLVC_BOOLEAN + if (option->var_type == CLVC_INTEGER || option->var_type == CLVC_ENUM || option->var_type == CLVC_SIZE) { @@ -24,8 +24,8 @@ along with GCC; see the file COPYING3. If not see /* Specifies how a switch's VAR_VALUE relates to its FLAG_VAR. */ enum cl_var_type { - /* The switch is enabled when FLAG_VAR is nonzero. */ - CLVC_BOOLEAN, + /* The switch is an integer value. */ + CLVC_INTEGER, /* The switch is enabled when FLAG_VAR == VAR_VALUE. */ CLVC_EQUAL, |