This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: VREGS cannot handle subreg(mem (plus ...)) pattern


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]