On Sat, Aug 07, 2004 at 11:55:28AM -0700, Fariborz Jahanian wrote:
Mainline FSF, along with local implementation of Motorola's Altivec
syntax for
initialization (construction) of vector variables has broken this
feature, as in the
following test case:
void VecMult( vector unsigned int *pResult, int Index)
{
pResult[Index] = (vector unsigned int)(0,0,0,0);
}
This test case, derived from yours:
void VecMult (__vector unsigned int *pResult, int Index)
{
pResult[Index] = (__vector unsigned int){0,0,0,0};
}
ICEs for mainline g++ with:
elm3b11% /opt/gcc-nightly/mline-20040809/bin/g++ -c -maltivec fj.c
fj.c: In function `void VecMult(unsigned int __vector__*, int)':
fj.c:2: error: Invalid operand to binary operator
(__vector unsigned int<D1311> *)((unsigned int<D6>)Index<D1781> * 16);
fj.c:2: internal compiler error: verify_stmts failed.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Your proposed patch fixes this. It could be useful to have a test
case that's relevant for mainline sources.