https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66877
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- For some reason you get widening shifts recognized while I get them not supported by the HW (with the cross at -O2 -ftree-vectorize). -mfpu=neon doesn't help. I still can't reproduce your dump file with /space/rguenther/src/svn/trunk3/configure --target=arm-none-eabi gcc> /cc1 -quiet t.c -O2 -ftree-vectorize -fdump-tree-vect-details -fno-vect-cost-model -fno-common -mfpu=neon -march=armv7-a please advise further. Also you might want to try if guarding the check with { target ! vect_widen_shift } and adding a variant for vect_widen_shift to scan for 1 occurence fixes the testcase. That would make sense to me.