Ping.
On Sat, Jun 25, 2011 at 9:20 AM, H.J. Lu <hongjiu...@intel.com> wrote: > Hi, > > I was informed that MEM_REF only works in ptr_mode. This patch changes > addr_for_mem_ref to use ptr_mode. OK for trunk? > > Thanks. > > > H.J. > --- > 2011-06-25 H.J. Lu <hongjiu...@intel.com> > > PR middle-end/47383 > * tree-ssa-address.c (addr_for_mem_ref): Use ptr_mode instead > of targetm.addr_space.address_mode. > > diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c > index e3934e1..ddc6d58 100644 > --- a/gcc/tree-ssa-address.c > +++ b/gcc/tree-ssa-address.c > @@ -188,12 +188,12 @@ rtx > addr_for_mem_ref (struct mem_address *addr, addr_space_t as, > bool really_expand) > { > - enum machine_mode address_mode = targetm.addr_space.address_mode (as); > rtx address, sym, bse, idx, st, off; > struct mem_addr_template *templ; > > if (addr->step && !integer_onep (addr->step)) > - st = immed_double_int_const (tree_to_double_int (addr->step), > address_mode); > + st = immed_double_int_const (tree_to_double_int (addr->step), > + ptr_mode); > else > st = NULL_RTX; > > @@ -201,7 +201,7 @@ addr_for_mem_ref (struct mem_address *addr, addr_space_t > as, > off = immed_double_int_const > (double_int_sext (tree_to_double_int (addr->offset), > TYPE_PRECISION (TREE_TYPE (addr->offset))), > - address_mode); > + ptr_mode); > else > off = NULL_RTX; > > @@ -220,16 +220,16 @@ addr_for_mem_ref (struct mem_address *addr, > addr_space_t as, > if (!templ->ref) > { > sym = (addr->symbol ? > - gen_rtx_SYMBOL_REF (address_mode, ggc_strdup ("test_symbol")) > + gen_rtx_SYMBOL_REF (ptr_mode, ggc_strdup ("test_symbol")) > : NULL_RTX); > bse = (addr->base ? > - gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1) > + gen_raw_REG (ptr_mode, LAST_VIRTUAL_REGISTER + 1) > : NULL_RTX); > idx = (addr->index ? > - gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 2) > + gen_raw_REG (ptr_mode, LAST_VIRTUAL_REGISTER + 2) > : NULL_RTX); > > - gen_addr_rtx (address_mode, sym, bse, idx, > + gen_addr_rtx (ptr_mode, sym, bse, idx, > st? const0_rtx : NULL_RTX, > off? const0_rtx : NULL_RTX, > &templ->ref, > @@ -247,16 +247,16 @@ addr_for_mem_ref (struct mem_address *addr, > addr_space_t as, > > /* Otherwise really expand the expressions. */ > sym = (addr->symbol > - ? expand_expr (addr->symbol, NULL_RTX, address_mode, EXPAND_NORMAL) > + ? expand_expr (addr->symbol, NULL_RTX, ptr_mode, EXPAND_NORMAL) > : NULL_RTX); > bse = (addr->base > - ? expand_expr (addr->base, NULL_RTX, address_mode, EXPAND_NORMAL) > + ? expand_expr (addr->base, NULL_RTX, ptr_mode, EXPAND_NORMAL) > : NULL_RTX); > idx = (addr->index > - ? expand_expr (addr->index, NULL_RTX, address_mode, EXPAND_NORMAL) > + ? expand_expr (addr->index, NULL_RTX, ptr_mode, EXPAND_NORMAL) > : NULL_RTX); > > - gen_addr_rtx (address_mode, sym, bse, idx, st, off, &address, NULL, NULL); > + gen_addr_rtx (ptr_mode, sym, bse, idx, st, off, &address, NULL, NULL); > return address; > } > > -- H.J.