Message ID | 87377h1rne.fsf@linaro.org |
---|---|
State | New |
Headers | show |
Series | Add copy_rtx call to RTL loop unroller | expand |
On September 20, 2017 2:27:49 PM GMT+02:00, Richard Sandiford <richard.sandiford@linaro.org> wrote: >This is needed if the step is an unshared constant, like many >(const ...)s are. Without this patch, libgfortran would fail >to build for SVE. > >Tested on aarch64-linux-gnu, x86_64-linux-gnu and >powerpc64le-linus-gnu. >OK to install? OK. Richard. >Richard > > >2017-09-20 Richard Sandiford <richard.sandiford@linaro.org> > Alan Hayward <alan.hayward@arm.com> > David Sherwood <david.sherwood@arm.com> > >gcc/ > * loop-unroll.c (split_iv): Call copy_rtx on the step. > >Index: gcc/loop-unroll.c >=================================================================== >--- gcc/loop-unroll.c 2017-08-30 12:13:52.715828832 +0100 >+++ gcc/loop-unroll.c 2017-09-20 13:26:14.451718893 +0100 >@@ -1731,7 +1731,8 @@ split_iv (struct iv_to_split *ivts, rtx_ > else > { > incr = simplify_gen_binary (MULT, mode, >- ivts->step, gen_int_mode (delta, mode)); >+ copy_rtx (ivts->step), >+ gen_int_mode (delta, mode)); > expr = simplify_gen_binary (PLUS, GET_MODE (ivts->base_var), > ivts->base_var, incr); > }
Index: gcc/loop-unroll.c =================================================================== --- gcc/loop-unroll.c 2017-08-30 12:13:52.715828832 +0100 +++ gcc/loop-unroll.c 2017-09-20 13:26:14.451718893 +0100 @@ -1731,7 +1731,8 @@ split_iv (struct iv_to_split *ivts, rtx_ else { incr = simplify_gen_binary (MULT, mode, - ivts->step, gen_int_mode (delta, mode)); + copy_rtx (ivts->step), + gen_int_mode (delta, mode)); expr = simplify_gen_binary (PLUS, GET_MODE (ivts->base_var), ivts->base_var, incr); }