This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Avoid ICE in LRA for calls with multiple return values
- From: Ilya Enkovich <enkovich dot gnu at gmail dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, Vladimir Makarov <vmakarov at redhat dot com>
- Date: Fri, 3 Oct 2014 00:05:27 +0400
- Subject: Re: [PATCH] Avoid ICE in LRA for calls with multiple return values
- Authentication-results: sourceware.org; auth=none
- References: <20141002143000 dot GH28697 at msticlxl57 dot ims dot intel dot com> <542D99BC dot 9010005 at redhat dot com>
2014-10-02 22:30 GMT+04:00 Jeff Law <email@example.com>:
> On 10/02/14 08:30, Ilya Enkovich wrote:
>> This patch adds a check for call destination register for a call return
>> value optimization based on REG_RETURNED note. This solves some ICE issues
>> for MPX codes.
>> Bootstrapped and tested on linux-x86_64. OK for trunk?
>> 2014-10-02 Ilya Enkovich <firstname.lastname@example.org>
>> * lra-constraints.c (inherit_in_ebb): Handle calls with
>> multiple return values.
>> * caller-save.c (save_call_clobbered_regs): Likewise.
> This is fine. Please put a comment before the new if (REG_P (...)))
> conditional which notes that a CALL_INSN may have multiple return values
> expressed in an EXPR_LIST. That way if someone looks at this code a few
> years down the line, they'll know exactly why the code checks REG_P rather
> than just using the result blindly.
> Did this fix all the multiple-return issues you encountered?
With this fix almost all benchmarks compile successfully but there is
still one ICE in LRA. I described it in MPX ABI thread.