This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [parloops, PR83126], Use cached affine_ivs canonicalize_loop_ivs


On Wed, 21 Mar 2018, Tom de Vries wrote:

> On 03/12/2018 01:14 PM, Richard Biener wrote:
> > On Thu, 22 Feb 2018, Tom de Vries wrote:
> > > I can
> > > rework the bit of the patch that adds an assert after
> > > canonicalize_loop_ivs
> > > into a patch that aborts the optimization instead of ICE-ing.
> > 
> > I think that's something reasonable anyway.
> > 
> 
> Patch attached below implements that approach.
> 
> The difference between before parloops, and after ompexpssa2 is this (showing
> the effects of canonicalize_loop_ivs):
> ...
> $ diff -u pr83126.c.156t.dce5 pr83126.c.158t.ompexpssa2
>    ...
>  ew (short unsigned int c9, int stuff)
>  {
>    int * fd;
> @@ -9,53 +103,53 @@
>    int _3;
>    short unsigned int _4;
>    unsigned int _5;
> +  unsigned int ivtmp_8;
>    unsigned int _22;
>    unsigned int ivtmp_24;
>    unsigned int ivtmp_26;
> +  unsigned int ivtmp_28;
> 
>    <bb 2> [local count: 11811]:
> 
>    <bb 3> [local count: 118111601]:
> -  # c9_1 = PHI <c9_11(D)(2), c9_21(11)>
> +  # c9_1 = PHI <c9_11(D)(2), c9_21(7)>
>    _2 = (long int) c9_1;
>    fd_13 = (int *) _2;
>    _3 = *fd_13;
> 
>    <bb 4> [local count: 1073741825]:
>    if (_3 != 0)
> -    goto <bb 6>; [11.00%]
> +    goto <bb 15>; [11.00%]
>    else
>      goto <bb 9>; [89.00%]
> 
>    <bb 9> [local count: 955630225]:
>    goto <bb 4>; [100.00%]
> 
> -  <bb 6> [local count: 118111600]:
> +  <bb 15> [local count: 94489281]:
> 
> -  <bb 10> [local count: 118111600]:
> -
> -  <bb 5> [local count: 236258638]:
> -  # _22 = PHI <0(10), _5(8)>
> -  # c9_23 = PHI <c9_1(10), c9_14(8)>
> -  # e1_27 = PHI <0(10), e1_17(8)>
> -  # ivtmp_26 = PHI <2(10), ivtmp_24(8)>
> +  <bb 5> [local count: 189006911]:
> +  # c9_23 = PHI <c9_14(8), c9_1(15)>
> +  # e1_27 = PHI <e1_17(8), 0(15)>
> +  # ivtmp_8 = PHI <ivtmp_28(8), 0(15)>
> +  _22 = ivtmp_8;
> +  ivtmp_26 = 2 - ivtmp_8;
>    _4 = (short unsigned int) e1_27;
>    c9_14 = _4 * c9_23;
>    _5 = _22 + 1;
>    e1_17 = (int) _5;
>    ivtmp_24 = ivtmp_26 - 1;
> -  if (ivtmp_24 != 0)
> +  if (ivtmp_8 < 1)
>      goto <bb 8>; [66.67%]
>    else
>      goto <bb 7>; [33.33%]
> 
> -  <bb 8> [local count: 157513634]:
> +  <bb 8> [local count: 126010908]:
> +  ivtmp_28 = ivtmp_8 + 1;
>    goto <bb 5>; [100.00%]
> 
>    <bb 7> [local count: 78745004]:
>    # c9_21 = PHI <c9_14(5)>
> -
> -  <bb 11> [local count: 78745004]:
>    goto <bb 3>; [100.00%]
> 
>  }
> ...
> 
> 
> Bootstrapped and reg-tested on x86_64.
> 
> OK for stage4 trunk?

OK.

Thanks,
Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]