The function needs more than 8 SSE registers, avoid false positives triggered by SSE spills for 32bit targets.
2020-03-10 Uroš Bizjak <ubiz...@gmail.com> * g++.dg/pr80481.C (dg-final): Scan for SSE reg-reg moves only. Tested on x86_64-linux-gnu {,-m32}. Uros.
diff --git a/gcc/testsuite/g++.dg/pr80481.C b/gcc/testsuite/g++.dg/pr80481.C index c565ad24d90..78c463b8e3b 100644 --- a/gcc/testsuite/g++.dg/pr80481.C +++ b/gcc/testsuite/g++.dg/pr80481.C @@ -1,11 +1,9 @@ // { dg-do compile { target { i?86-*-* x86_64-*-* } && { ! *-*-solaris* } } } // { dg-options "-Ofast -funroll-loops -fopenmp -march=knl" } -// { dg-final { scan-assembler-not "vmovaps" } } // Disabling epilogues until we find a better way to deal with scans. // { dg-additional-options "--param vect-epilogues-nomask=0" } - #include <math.h> #include <xmmintrin.h> @@ -72,3 +70,5 @@ void foo (Sdata *in, int idx, float *out) _mm_free(y3); _mm_free(y4); } + +// { dg-final { scan-assembler-not "vmovaps\[^\n\r]*zmm\[0-9]+,\[^\n\r]*zmm\[0-9]+" } }