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 target/21590] [3.4 only] FAIL: gcc.dg/sibcall-1.c and FAIL: gcc.dg/sibcall-2.c



------- Comment #4 from dave at hiauly1 dot hia dot nrc dot ca  2005-11-21 03:09 -------
Subject: Re:  [3.4 only] FAIL: gcc.dg/sibcall-1.c and FAIL: gcc.dg/sibcall-2.c

> ------- Comment #2 from gdr at gcc dot gnu dot org  2005-11-21 02:29 -------
> Is there any hppa maintainer lookin at this?

Not really.  It's somewhat low priority as it's only a missed optimisation.

Although it's listed as a target bug, the fix for this problem in 4.x
was actually to the generic code.  The root cause of this bug is the fact
that the argument pointer can't be eliminated on this target.  The copy
in function.c prevents this optimisation.  It would take some research
to find the change which fixed the problem in 4.0.

It's possible to get these tests to pass if we change the argument pointer
register to a callee saves register.  However, this requires creating a
frame, saving the register used for the argument pointer and copying the
incoming argument pointer to this new register.  We could optimise this
in cases where the argument pointer isn't needed.  However, changes are
needed to reload for this.  Thus, I don't think a fix along these lines
is appropriate for 3.3.

The issue in this PR is related to the problem noted in PR 2493.  We
need to copy or save the argument pointer in order to be able to find
saved arguments.

Dave


-- 


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


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