Deal with all vector defs in vectorizable_live_operation
Ensures proper handling of vector definitions in vectorizable_live_operation for loop vectorization.
This commit addresses how vectorizable_live_operation handles vector definitions, particularly when copies are no longer strictly required. The function now correctly computes an insert location by considering all vector definitions, inserting on region entry if necessary. This ensures that default or constant vector definitions are properly handled during loop vectorization, preventing potential issues in loop transformations.
In Details
The vectorizable_live_operation function in tree-vect-loop.cc has been updated to handle all vector definitions, not just those requiring copies. It now inserts on region entry if a vector def is a default or constant, ensuring correct insert location calculation after historical copy requirements were relaxed.
- vectorizable_live_operation
- A function within GCC's vectorization passes that determines which operations involving live variables can be vectorized.
- vector defs
- Definitions of variables or values that are intended to be used in vectorized operations, potentially holding multiple data elements.
- loop vectorization
- An optimization that transforms a loop operating on single data elements into a loop that operates on multiple data elements simultaneously using SIMD instructions.
- region entry
- The beginning of a code region, such as the start of a loop or a function, where initial values or setup might be required.