On Sun, Dec 5, 2021 at 10:58 PM Richard Sandiford via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> When compiling an optabs.ii at -O2 with a release-checking build,
> there were 6,643,575 calls to gimple_outgoing_range_stmt_p.  96.8% of
> them were for blocks with a single successor, which never have a control
> statement that generates new range info.  This patch therefore adds a
> shortcut for that case.
>
> This gives a ~1% compile-time improvement for the test.
>
> I tried making the function inline (in the header) so that the
> single_succ_p didn't need to be repeated, but it seemed to make things
> slightly worse.
>
> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

OK.

Richard.

> Richard
>
>
> gcc/
>         * gimple-range-edge.cc (gimple_outgoing_range::edge_range_p): Add
>         a shortcut for blocks with single successors.
>         * gimple-range-gori.cc (gori_map::calculate_gori): Likewise.
> ---
>  gcc/gimple-range-edge.cc | 3 +++
>  gcc/gimple-range-gori.cc | 3 +++
>  2 files changed, 6 insertions(+)
>
> diff --git a/gcc/gimple-range-edge.cc b/gcc/gimple-range-edge.cc
> index afffc8dbcae..9e805230004 100644
> --- a/gcc/gimple-range-edge.cc
> +++ b/gcc/gimple-range-edge.cc
> @@ -182,6 +182,9 @@ gimple_outgoing_range::calc_switch_ranges (gswitch *sw)
>  gimple *
>  gimple_outgoing_range::edge_range_p (irange &r, edge e)
>  {
> +  if (single_succ_p (e->src))
> +    return NULL;
> +
>    // Determine if there is an outgoing edge.
>    gimple *s = gimple_outgoing_range_stmt_p (e->src);
>    if (!s)
> diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc
> index 0dba34b58c5..b256e4afd15 100644
> --- a/gcc/gimple-range-gori.cc
> +++ b/gcc/gimple-range-gori.cc
> @@ -555,6 +555,9 @@ gori_map::calculate_gori (basic_block bb)
>    m_outgoing[bb->index] = BITMAP_ALLOC (&m_bitmaps);
>    m_incoming[bb->index] = BITMAP_ALLOC (&m_bitmaps);
>
> +  if (single_succ_p (bb))
> +    return;
> +
>    // If this block's last statement may generate range informaiton, go
>    // calculate it.
>    gimple *stmt = gimple_outgoing_range_stmt_p (bb);
> --
> 2.31.1
>

Reply via email to