https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114231
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Little more reduced: ``` void f(long*); int ff[2]; void f1(long, long); void k(unsigned long x, unsigned long y) { long t = x >> ff[0]; long t1 = ff[1]; unsigned long t2 = y >> ff[0]; long t3 = t+t2 ? t2 : 0; f1(t1, t3); } ``` /app/example.cpp:9:14: missed: unusable type for last operand in vector/vector shift/rotate. Note if you change the type of ff to long, this works.