This is the mail archive of the
mailing list for the GCC project.
Re: Fix PR64876, regressions in powerpc64 Go testsuite
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 4 Feb 2015 21:06:02 -0500
- 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> <20150204001605 dot GL14796 at bubble dot grove dot modra dot org>
On Tue, Feb 3, 2015 at 7:16 PM, Alan Modra <firstname.lastname@example.org> wrote:
> On Tue, Feb 03, 2015 at 11:14:49AM -0500, David Edelsohn wrote:
>> On Tue, Feb 3, 2015 at 8:57 AM, Alan Modra <email@example.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.
What is the proposal? Testing only crtl->emit.sequence_stack->last
does not seem to be sufficient. It seems like it really needs to test
for more of the CALL sequence.