On 10/11/2016 08:48 AM, Claudiu Zissulescu 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?
IIRC you're not supposed to have (subreg (mem)) expressions at this point.

Any (subreg (mem)) at this point can be trivially turned into a simple memory load.

jeff

Reply via email to