Closed llvmbot closed 5 years ago
Thanks for the report. See https://reviews.llvm.org/D57542 for a fix.
We should consider this for clang-8 as well.
Merged the fix in r353166, thanks.
Thanks for the report. See https://reviews.llvm.org/D57542 for a fix.
We should consider this for clang-8 as well.
LoopVectorize adds llvm.loop.isvectorized, but leaves llvm.loop.vectorize.enable which is reported (for the vectorized loop and the fallback). The function hasVectorizeTransformation considers this, but with different priorization. Working on it.
Extended Description
clang8 emits warning
"loop not vectorized: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering [-Wpass-failed=transform-warning]"
for the following example, when compiled with "-fopenmp -O2". The generated code is, however, vectorized and is almost identical to the code generated by clang7, which does not emit the warning. The same problem as in clang8 is in the current clang9 (and the emitted code is identical). clang6 produces similar code, vectorizes the loop, and does not emit the warning, either.
The warning is generated twice when compiling the example, with identical texts and code locations, and counted as "2 warnings".
int maybeNotFinite(double *x, unsigned n) { double s = 0;
}
tested on Ubuntu 18.04.1 with clang from apt.llvm.org clang version 8.0.0-svn352547-1~exp1~20190130015936.13 (branches/release_80) clang version 7.0.1-svn348686-1~exp1~20190113235231.54 (branches/release_70) clang version 9.0.0-svn352666-1~exp1+0~20190130204444.773~1.gbp5cc800 (trunk)
and on clang from Ubuntu 18.04.1 clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)