This is the mail archive of the
mailing list for the GCC project.
VREGS cannot handle subreg(mem (plus ...)) pattern
- From: Claudiu Zissulescu <Claudiu dot Zissulescu at synopsys dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Cc: Francois Bedard <Francois dot Bedard at synopsys dot com>
- Date: Tue, 11 Oct 2016 14:48:50 +0000
- Subject: VREGS cannot handle subreg(mem (plus ...)) pattern
- Authentication-results: sourceware.org; auth=none
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?