------- Comment #2 from jakub at gcc dot gnu dot org 2008-10-06 06:18 ------- This looks like a vectorizer bug to me. Vectorizer creates: vector void * * vect_pdtds.39; vector void * * vect_pdtds.34; vector unsigned char * vect_cst_.33; ... vect_cst_.33_33 = {&dtd, &dtd, &dtd, &dtd}; vect_pdtds.39_34 = (vector void * *) &dtds; vect_pdtds.34_35 = vect_pdtds.39_34; ... # vect_pdtds.34_36 = PHI <vect_pdtds.34_37(9), vect_pdtds.34_35(3)> # ivtmp.40_38 = PHI <ivtmp.40_39(9), 0(3)> *vect_pdtds.34_36 = vect_cst_.33_33;
Shouldn't that use VCE instead? void * and unsigned char * certainly have different alias sets, so storing vect_cst.33 with element type's alias set 3 into dtds variable, which has element alias set 2, doesn't work very well. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |irar at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37730