On Tue, May 24, 2016 at 06:46:49PM +1000, Kugan Vivekanandarajah wrote:
> 2016-05-24 Kugan Vivekanandarajah <[email protected]>
>
> * tree-ssa-reassoc.c (sort_by_operand_rank): Check fgimple_bb for NULL.
s/fgimple/gimple/ ?
> --- a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-44.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-44.c
> @@ -0,0 +1,10 @@
> +
> +/* { dg-do compile } */
Why the empty line above? Either stick there a PR number if one is filed,
or leave it out.
> +/* { dg-options "-O2" } */
> +
> +unsigned int a;
> +int b, c;
> +void fn1 ()
> +{
> + b = a + c + c;
> +}
> diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
> index fb683ad..06f4d1b 100644
> --- a/gcc/tree-ssa-reassoc.c
> +++ b/gcc/tree-ssa-reassoc.c
> @@ -525,7 +525,7 @@ sort_by_operand_rank (const void *pa, const void *pb)
> gimple *stmtb = SSA_NAME_DEF_STMT (oeb->op);
> basic_block bba = gimple_bb (stmta);
> basic_block bbb = gimple_bb (stmtb);
> - if (bbb != bba)
> + if (bba && bbb && bbb != bba)
> {
> if (bb_rank[bbb->index] != bb_rank[bba->index])
> return bb_rank[bbb->index] - bb_rank[bba->index];
Can bb_rank be ever the same for bbb != bba? If yes, perhaps it would be
better to fallthrough into the reassoc_stmt_dominates_stmt_p testing
code, if not, perhaps just assert that it is different and just
return the difference unconditionally?
Jakub