This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/50955] [4.7 Regression] IVopts incorrectly rewrite the address of a global memory access into a local form.


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50955

--- Comment #15 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #14)
> I am running into a similar situation with a modified 4.7 on
> mips64-linux-gnu (configured to use the Octeon2 instructions which has a
> load instruction which does base+index [or rather reg+reg]).

Before IV-OPTS I have this use:
  i.17_13 = (sizetype) i_52;
  D.13668_14 = i.17_13 + -1;
  D.13669_15 = D.13668_14 * 4;
  D.13670_16 = D.13666_12 + D.13669_15;
  att_17 = *D.13670_16;

But we decided that it was not used as an address here though.  We have:
(gdb) p *use->iv
$15 = {base = 0x7ffff77e1c60, base_object = 0x0, step = 0x7ffff77e1c60,
ssa_name = 0x0, biv_p = 0 '\000', 
  have_use_for = 1 '\001', use_id = 0}
(gdb) p *use
$16 = {id = 3, type = USE_NONLINEAR_EXPR, iv = 0x1376bb0, stmt =
0x7ffff727c780, op_p = 0x0, related_cands = 0x0, 
  n_map_members = 10, cost_map = 0x13de580, selected = 0x0}


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