Hi, Ian,
 
ELIMINATE_REGS and TARGET_CAN_ELIMINATE are set correctly. As far as I
understand   from   further   investigation,   at  some  point  during
compilation,   the   argument  pointer  register  is  used,  then  the
expand_prologue()  produces  INSNs including "push argp" (as "argp" is
presently  defined  as  a general-purpose non-scratch register). Then,
during  reload  phase,  such  instruction  prevents  "argp" from being
eliminated,  as  it modifies SP and uses ARGP (ref_outside_mem) at the
same time:

      if (ep->previous_offset != ep->offset && ep->ref_outside_mem)
        ep->can_eliminate = 0;


Is  there  a way to prevent prologue instructions (e.g. saving ARGP/FP
before   elimination   phase)   from   affecting  elimination?  Maybe,
expand_prologue()  should  behave differently depending on whether the
elimination has completed?

-- 
Best regards,
 Ivan Shcherbakov                     mailto:shcherba...@eit.uni-kl.de
 TU Kaiserslautern, Germany
 Department of Real-Time Systems

Reply via email to