> -----Original Message----- > From: Richard Sandiford [mailto:rdsandif...@googlemail.com] > Sent: 24 January 2014 10:46 > To: Paulo Matos > Cc: gcc@gcc.gnu.org > Subject: Re: ICE in trunk due to MEM with address in vector mode > > Paulo Matos <pma...@broadcom.com> writes: > > Hello, > > > > I have found a strange case of an ICE due to a MEM with an address > > with vector mode. > > AFAIK that isn't supported. Addresses are assumed to be MODE_INT or > MODE_PARTIAL_INT. Hopefully someone will correct me if this has changed > without me noticing it. > > Is this for some kind of gather load? I think an address like that > would have to be mode-dependent anyway, since the number of units > in the MEM mode and the address mode would need to match. >
Thanks for your comment. We have an instruction that loads two 32 bit values into a lower and upper parts of a 64bit register using a base register and a 64 bit register used as a double index. So, r1 <- [r0, r2] means: low(r1) = [r0 + low(r2)] high(r1) = [r0 + high(r2)] In this case we use vector addresses. If it is indeed not allowed then I need another solution. Used to work well in 4.8 and before. In trunk it breaks, but works with the patch I included before. Can't find anything in the documentation regarding this case so it would be good to make it clear one way or the other. Paulo Matos > Thanks, > Richard