On Sat, Jun 19, 2021 at 9:49 PM apinski--- via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> From: Andrew Pinski <apin...@marvell.com>
>
> Since match_simplify_replacement uses gimple_simplify, there is a new
> ssa name created sometimes and then we go and replace the phi edge with
> this new ssa name, the range information on the phi is lost.
> I don't have a testcase right now where we lose the range information
> though but it does show up when enhancing match.pd to handle
> some min/max patterns and g++.dg/warn/Wstringop-overflow-1.C starts
> to fail.
>
> OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
>
> gcc/ChangeLog:
>
>         * tree-ssa-phiopt.c (match_simplify_replacement): Duplicate range
>         info if we're the only things setting the target PHI.
> ---
>  gcc/tree-ssa-phiopt.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
> index 24cbce9955a..feb8ca8d0d1 100644
> --- a/gcc/tree-ssa-phiopt.c
> +++ b/gcc/tree-ssa-phiopt.c
> @@ -894,6 +894,14 @@ match_simplify_replacement (basic_block cond_bb, 
> basic_block middle_bb,
>        gsi_move_before (&gsi1, &gsi);
>        reset_flow_sensitive_info (gimple_assign_lhs (stmt_to_move));
>      }
> +  /* Duplicate range info if we're the only things setting the target PHI.  
> */
> +  tree phi_result = PHI_RESULT (phi);
> +  if (!gimple_seq_empty_p (seq)
> +      && EDGE_COUNT (gimple_bb (phi)->preds) == 2
> +      && !POINTER_TYPE_P (TREE_TYPE (phi_result))

Please use INTEGRAL_TYPE_P (...)

> +      && SSA_NAME_RANGE_INFO (phi_result)

&& !SSA_NAME_RANGE_INFO (result)

?  Why conditional on !gimple_seq_empty_p (seq)?

It looks like we could do this trick (actually in both directions,
wherever the range
info is missing?) in replace_phi_edge_with_variable instead?

Thanks,
Richard.

)
> +    duplicate_ssa_name_range_info (result, SSA_NAME_RANGE_TYPE (phi_result),
> +                                  SSA_NAME_RANGE_INFO (phi_result));
>    if (seq)
>      gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT);
>
> --
> 2.27.0
>

Reply via email to