From 589e1d9610d1eed8e06c9424c4726a504d43391c Mon Sep 17 00:00:00 2001 From: Ayal Zaks Date: Tue, 23 May 2017 07:08:02 +0000 Subject: [LV] Report multiple reasons for not vectorizing under allowExtraAnalysis The default behavior of -Rpass-analysis=loop-vectorizer is to report only the first reason encountered for not vectorizing, if one is found, at which time the vectorizer aborts its handling of the loop. This patch allows multiple reasons for not vectorizing to be identified and reported, at the potential expense of additional compile-time, under allowExtraAnalysis which can currently be turned on by Clang's -fsave-optimization-record and opt's -pass-remarks-missed. Removed from LoopVectorizationLegality::canVectorize() the redundant checking and reporting if we CantComputeNumberOfIterations, as LAI::canAnalyzeLoop() also does that. This redundancy is caught by a lit test once multiple reasons are reported. Patch initially developed by Dror Barak. Differential Revision: https://reviews.llvm.org/D33396 llvm-svn: 303613 --- llvm/docs/Vectorizers.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'llvm/docs/Vectorizers.rst') diff --git a/llvm/docs/Vectorizers.rst b/llvm/docs/Vectorizers.rst index 65c19aa2bc0..a909d458c31 100644 --- a/llvm/docs/Vectorizers.rst +++ b/llvm/docs/Vectorizers.rst @@ -99,7 +99,9 @@ Optimization remarks are enabled using: indicates if vectorization was specified. ``-Rpass-analysis=loop-vectorize`` identifies the statements that caused -vectorization to fail. +vectorization to fail. If in addition ``-fsave-optimization-record`` is +provided, multiple causes of vectorization failure may be listed (this behavior +might change in the future). Consider the following loop: -- cgit v1.2.3