Remove -ftree-loop-if-convert and tie if-conversion to vectorization
GCC removes the standalone -ftree-loop-if-convert option, dedicating if-conversion to loop vectorization.
The GCC compiler has removed the -ftree-loop-if-convert option, which previously allowed standalone loop if-conversion. This change simplifies the compiler by tying if-conversion directly to the vectorizer’s loop vectorization pass, as other if-conversion mechanisms (phiopt and cselimg) are considered more general. This aims to improve integration with the vectorizer and eliminate under-tested functionality.
In Details
The pass tree-if-conv.cc is now exclusively enabled when loop vectorization is active, removing the standalone -ftree-loop-if-convert option. The pass's gate function now checks for loop_vectorization_enabled instead of the flag. This change simplifies the pass by removing the loop_versioned argument from several internal functions, as it's now always true in this context, and leverages phiopt/cselimg for general if-conversion.
- if-conversion
- An optimization technique that replaces conditional branches (if-statements) with conditional move instructions or predicated operations, enabling better instruction-level parallelism.
- loop vectorization
- An optimization that transforms loops to operate on multiple data elements simultaneously using SIMD (Single Instruction, Multiple Data) instructions.
- vectorization
- The process of using SIMD instructions to perform the same operation on multiple data elements in parallel.
- phiopt
- A GCC optimization pass that performs if-conversion and related optimizations, often used for simplifying control flow.
- cselimg
- Likely refers to a GCC optimization pass or technique related to conditional select instructions, potentially 'conditional select on image' or similar, used for if-conversion.
- tree-ssa-phiopt.cc
- A GCC source file related to the SSA (Static Single Assignment) form and the phiopt optimization pass, which handles if-conversion.
- tree-if-conv.cc
- A GCC source file containing the implementation of the if-conversion optimization pass.