https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124615
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > We don't run LIM after unswitch. > So > _5 = (long unsigned int) xp_19(D); > > is still inside the loop there is no handling of 128bit long long support > for the vectorizer. > /app/example.cpp:10:24: note: get vectype for scalar type: __int128 > unsigned > /app/example.cpp:16:32: missed: not vectorized: unsupported data-type > __int128 unsigned We have now a few passes that do loop_invariant_motion_in_fun after they did something - unroll-and-jam and loop-interchange. We could (should) add unswitching to that list. I'll note that there's still making invariant motion work on a loop granularity to be done (but only when it's going to be reasonably O(loop size) then, which is a bit difficult due to how it lays out data structures).
