Not commenting on the correctness... but

On Mon, Jul 24, 2017 at 1:29 PM, Alexander Monakov <amona...@ispras.ru> wrote:
> +      basic_block bb0 = bbs[0], bb1 = bbs[1];
> +      if (bb_postorder[bb0->index] < bb_postorder[bb1->index])
> +       bbs[0] = bb1, bbs[1] = bb0;
> +    }
> +  else if (__builtin_expect (n == 3, true))
> +    {
> +      basic_block t, bb0 = bbs[0], bb1 = bbs[1], bb2 = bbs[2];
> +      if (bb_postorder[bb0->index] < bb_postorder[bb1->index])
> +       t = bb0, bb0 = bb1, bb1 = t;
> +      if (bb_postorder[bb1->index] < bb_postorder[bb2->index])
> +       {
> +         t = bb1, bb1 = bb2, bb2 = t;
> +         if (bb_postorder[bb0->index] < bb_postorder[bb1->index])
> +           t = bb0, bb0 = bb1, bb1 = t;
> +       }
> +      bbs[0] = bb0, bbs[1] = bb1, bbs[2] = bb2;

... maybe use std::swap() in all four cases?

Reply via email to