This is the mail archive of the
gcc-patches@gcc.gnu.org
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 <law@redhat.com>:
> On 10/02/14 08:30, Ilya Enkovich wrote:
>>
>> Hi,
>>
>> 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?
>>
>> Thanks,
>> Ilya
>> --
>> 2014-10-02 Ilya Enkovich <ilya.enkovich@intel.com>
>>
>> * 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.
Ilya
>
> Jeff
>