I’m in the process of moving LoopVectorizationLegality out of LoopVectorize.cpp in order to make it reusable. For example, other transformations can change the behavior depending on whether the loop is vectorizable or not.
Ideally, such analysis type code belongs to Analysis tree. One of the blocking factor is its use of RecurrenceDescriptor/InductionDescriptor, defined in Transform/Utils/LoopUtils.h.
Anything I should know before attempting to move those Descriptors under Analysis/Utils? Like known dependencies making them very hard to move to Analysis tree?
Recurrence and Inductions are again analysis type stuff. They really belong to Analysis tree, in my opinion.