This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: VREGS cannot handle subreg(mem (plus ...)) pattern
- From: Claudiu Zissulescu <claziss at gmail dot com>
- To: Claudiu Zissulescu <Claudiu dot Zissulescu at synopsys dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, Francois Bedard <Francois dot Bedard at synopsys dot com>
- Date: Tue, 11 Oct 2016 16:58:33 +0200
- Subject: Re: VREGS cannot handle subreg(mem (plus ...)) pattern
- Authentication-results: sourceware.org; auth=none
- References: <098ECE41A0A6114BB2A07F1EC238DE89661B82DF@de02wembxa.internal.synopsys.com>
Sorry for the noise, I've remember I had a similar issue in the past.
Thanks,
Claudiu
On Tue, Oct 11, 2016 at 4:48 PM, Claudiu Zissulescu
<Claudiu.Zissulescu@synopsys.com> wrote:
> Hi,
>
> Out of the expand I get the following pattern:
>
> (set (reg:SI 203)
> (subreg:SI (mem/c:DI (plus:SI (reg/f:SI 147 virtual-stack-vars)
> (const_int -320 [0xfffffffffffffec0])) [4 buf1.state+0 S8 A32]) 4))
>
> which it looks too complex to be handled by the VREGS pass. I.e., in the instantiate_virtual_regs_in_insn() function, it seems we handle only subreg (reg ...).
> As a consequence, the virtual-stack-vars reg is not instantiated leading to a compiler internal error later on.
>
> Now, is the above pattern expected out of expand? Is the VREGS expected to handle this type of pattern?
>
> Many thanks,
> Claudiu