https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87046
Bug ID: 87046 Summary: Incorrect vectorization of fma with -O3 Product: gcc Version: 7.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: yates at cscs dot ch Target Milestone: --- Created attachment 44569 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44569&action=edit Stripped preprocessed source of minimal test case. In some circumstances, vectorization of fma at -O3 on broadwell and haswell incorrectly uses the wrong data for the addition component. While the sample code was tested with gcc version 7.3.0 with -march=haswell, the same problem arises with gcc 6.4.0. Disabling tree-slp-vectorize restores correct behaviour. I've attached a stripped down preprocessed source that demonstrates the bug. gcc -v output: Using built-in specs. COLLECT_GCC=/opt/gcc/7.3.0/bin/../snos/bin/gcc COLLECT_LTO_WRAPPER=/opt/gcc/7.3.0/snos/libexec/gcc/x86_64-suse-linux/7.3.0/lto-wrapper Target: x86_64-suse-linux Configured with: ../cray-gcc-7.3.0-201801270210.d61239fc6000b/configure --prefix=/opt/gcc/7.3.0/snos --disable-nls --libdir=/opt/gcc/7.3.0/snos/lib --enable-languages=c,c++,fortran --with-gxx-include-dir=/opt/gcc/7.3.0/snos/include/g++ --with-slibdir=/opt/gcc/7.3.0/snos/lib --with-system-zlib --enable-shared --enable-__cxa_atexit --build=x86_64-suse-linux --with-ppl --with-cloog --disable-multilib Thread model: posix gcc version 7.3.0 20180125 (Cray Inc.) (GCC) Compilation command line and program output: $ gcc -O3 -march=haswell fma-reduced-bug.i $ ./a.out Aborted (core dumped)