Ping
2015-03-10 19:14 GMT+03:00 Ilya Enkovich <enkovich....@gmail.com>: > On 10 Mar 18:11, Ilya Enkovich wrote: >> Hi, >> >> This patch changes rtx cost for address constants to 0 similar to what we >> have in address cost hook beacuse we expect them to be propagated into >> address expression anyway. Bootstrapped and tested on >> x86_64-unknown-linux-gnu. OK for trunk or stage 1? >> >> Thanks, >> Ilya > > Updated ChangeLog and test. > > Thanks, > Ilya > -- > gcc/ > > 2015-03-10 Ilya Enkovich <ilya.enkov...@intel.com> > > PR target/65103 > * config/i386/i386.c (ix86_rtx_costs): We want to propagate > link time constants into adress expressions and therefore set > their cost to 0. > > gcc/testsuite/ > > 2015-03-10 Ilya Enkovich <ilya.enkov...@intel.com> > > PR target/65103 > * gcc.target/i386/pr65103-3.c: New. > > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index b3971b8..341a157 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -42039,7 +42039,8 @@ ix86_rtx_costs (rtx x, int code_i, int outer_code_i, > int opno, int *total, > && !(TARGET_64BIT > && (GET_CODE (x) == LABEL_REF > || (GET_CODE (x) == SYMBOL_REF > - && SYMBOL_REF_LOCAL_P (x))))) > + && SYMBOL_REF_LOCAL_P (x)))) > + && (TARGET_64BIT || GET_CODE (x) != CONST)) > *total = 1; > else > *total = 0; > diff --git a/gcc/testsuite/gcc.target/i386/pr65103-3.c > b/gcc/testsuite/gcc.target/i386/pr65103-3.c > new file mode 100644 > index 0000000..eddf20b > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr65103-3.c > @@ -0,0 +1,19 @@ > +/* { dg-do compile { target ia32 } } */ > +/* { dg-require-effective-target pie } */ > +/* { dg-options "-O2 -fPIE" } */ > +/* { dg-final { scan-assembler-not "GOTOFF," } } */ > + > +static int *data[100]; > + > +void test (long a, long b) > +{ > + do > + { > + if( a < b ) > + { > + data[a] = data[b]; > + a++; > + } > + } > + while (a <= b); > +}