This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix PR64876, regressions in powerpc64 Go testsuite
- From: Alan Modra <amodra at gmail dot com>
- To: David Edelsohn <dje dot gcc at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 4 Feb 2015 10:46:05 +1030
- Subject: Re: Fix PR64876, regressions in powerpc64 Go testsuite
- Authentication-results: sourceware.org; auth=none
- References: <20150203135735 dot GJ14796 at bubble dot grove dot modra dot org> <CAGWvnykygYkakPVTASG_UuGM=f7tXPSdnUzS-seMe=gB3EUqhQ at mail dot gmail dot com>
On Tue, Feb 03, 2015 at 11:14:49AM -0500, David Edelsohn wrote:
> On Tue, Feb 3, 2015 at 8:57 AM, Alan Modra <amodra@gmail.com> wrote:
> > PR target/64876
> > * config/rs6000/rs6000.c (chain_already_loaded): New function.
> > (rs6000_call_aix): Use it.
>
> Okay with Jakub's suggested change.
No, Jakub's change doesn't work, even if I add the looping in
chain_already_loaded that would need. We really do want to look at
just (the last insn in) the previous sequence.
The trouble is that the current sequence, ie. the one emitted for
gen_call or gen_call_value, might be empty, *and* the previous
sequence, the one emitted by calls.c:emit_call_1, might be empty at
this point. (I found that fact out when my first implementation of
chain_already_loaded lacked the "last != NULL" test.) In that case
get_last_insn_anywhere() will give you rtl insns that aren't part of a
call sequence, and r11 is a general register that might be used for
anything. So a test for setting r11 is no longer a test for setting
the static chain.
--
Alan Modra
Australia Development Lab, IBM