On Thu, Oct 17, 2024 at 2:51 AM Andi Kleen <a...@linux.intel.com> wrote:
>
> From: Andi Kleen <a...@gcc.gnu.org>

Instead of initializing with -1 can you Init(0) and add OPT_fjump_tables
and OPT_fbit_tests to the default_options_table table in opts.cc,
under OPT_LEVELS_1_PLUS_NOT_DEBUG I'd guess.

Thanks,
Richard.

> gcc/ChangeLog:
>
>         * common.opt: Enable -fbit-tests and -fjump-tables only at -O1.
>         * tree-switch-conversion.h (jump_table_cluster::is_enabled):
>           Dito.
> ---
>  gcc/common.opt               | 4 ++--
>  gcc/tree-switch-conversion.h | 5 +++--
>  2 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/common.opt b/gcc/common.opt
> index 12b25ff486de..4af7a94fea42 100644
> --- a/gcc/common.opt
> +++ b/gcc/common.opt
> @@ -2189,11 +2189,11 @@ Common Var(flag_ivopts) Init(1) Optimization
>  Optimize induction variables on trees.
>
>  fjump-tables
> -Common Var(flag_jump_tables) Init(1) Optimization
> +Common Var(flag_jump_tables) Init(-1) Optimization
>  Use jump tables for sufficiently large switch statements.
>
>  fbit-tests
> -Common Var(flag_bit_tests) Init(1) Optimization
> +Common Var(flag_bit_tests) Init(-1) Optimization
>  Use bit tests for sufficiently large switch statements.
>
>  fkeep-inline-functions
> diff --git a/gcc/tree-switch-conversion.h b/gcc/tree-switch-conversion.h
> index 6468995eb316..fbfd7ff7b3ff 100644
> --- a/gcc/tree-switch-conversion.h
> +++ b/gcc/tree-switch-conversion.h
> @@ -442,7 +442,7 @@ public:
>    /* Return whether bit test expansion is allowed.  */
>    static inline bool is_enabled (void)
>    {
> -    return flag_bit_tests;
> +    return flag_bit_tests >= 0 ? flag_bit_tests : (optimize >= 1);
>    }
>
>    /* True when the jump table handles an entire switch statement.  */
> @@ -524,7 +524,8 @@ bool jump_table_cluster::is_enabled (void)
>       over-ruled us, we really have no choice.  */
>    if (!targetm.have_casesi () && !targetm.have_tablejump ())
>      return false;
> -  if (!flag_jump_tables)
> +  int flag = flag_jump_tables >= 0 ? flag_jump_tables : (optimize >= 1);
> +  if (!flag)
>      return false;
>  #ifndef ASM_OUTPUT_ADDR_DIFF_ELT
>    if (flag_pic)
> --
> 2.46.2
>

Reply via email to