There was a failure when building fftbench for 9.0.1 rc2 on Ubuntu 14.04. I’m not sure whether this is a regression or not, I will dig deeper.
FAILED: /tmp/rc2/test-suite-build/tools/timeit --summary SingleSource/Benchmarks/CoyoteBench/CMakeFiles/fftbench.dir/fftbench.cpp.o.time /tmp/rc2/Phase3/Release/llvmCore-9.0.1-rc2.install/usr/local/bin/clang++ -DNDEBUG -O3 -DNDEBUG -w -Werror=date-time -MD -MT SingleSource/Benchmarks/CoyoteBench/CMakeFiles/fftbench.dir/fftbench.cpp.o -MF SingleSource/Benchmarks/CoyoteBench/CMakeFiles/fftbench.dir/fftbench.cpp.o.d -o SingleSource/Benchmarks/CoyoteBench/CMakeFiles/fftbench.dir/fftbench.cpp.o -c /tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp
In file included from /tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:28:
/usr/lib/gcc/x86_64-linux-gnu/4.8/…/…/…/…/include/c++/4.8/complex:1328:23: error: no matching member function for call to ‘real’
real __t = __z.real();
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:417:11: note: in instantiation of function template specialization 'std::complex<double>::operator/=<double>' requested here
__r /= __y;
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:510:23: note: in instantiation of function template specialization 'std::operator/<double>' requested here
wm = exp(PI2I / complex<T>(m));
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:600:37: note: in instantiation of member function 'polynomial<double>::fft' requested here
polynomial< complex<T> > dft1 = fft(a1);
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:687:19: note: in instantiation of member function 'polynomial<double>::operator*' requested here
poly3 = poly1 * poly2;
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1220:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
real() { return __real__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1242:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
real(double __val) { __real__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1329:23: error: no matching member function for call to 'imag'
__imag__ __t = __z.imag();
~~~~^~~~
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1224:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
imag() { return __imag__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1245:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
imag(double __val) { __imag__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1298:29: error: no matching member function for call to 'real'
__real__ _M_value += __z.real();
~~~~^~~~
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:327:11: note: in instantiation of function template specialization 'std::complex<double>::operator+=<double>' requested here
__r += __y;
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:519:31: note: in instantiation of function template specialization 'std::operator+<double>' requested here
result[k] = u + t;
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:600:37: note: in instantiation of member function 'polynomial<double>::fft' requested here
polynomial< complex<T> > dft1 = fft(a1);
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:687:19: note: in instantiation of member function 'polynomial<double>::operator*' requested here
poly3 = poly1 * poly2;
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1220:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
real() { return __real__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1242:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
real(double __val) { __real__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1299:29: error: no matching member function for call to 'imag'
__imag__ _M_value += __z.imag();
~~~~^~~~
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1224:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
imag() { return __imag__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1245:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
imag(double __val) { __imag__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1307:29: error: no matching member function for call to 'real'
__real__ _M_value -= __z.real();
~~~~^~~~
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:357:11: note: in instantiation of function template specialization 'std::complex<double>::operator-=<double>' requested here
__r -= __y;
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:520:36: note: in instantiation of function template specialization 'std::operator-<double>' requested here
result[k + m2] = u - t;
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:600:37: note: in instantiation of member function 'polynomial<double>::fft' requested here
polynomial< complex<T> > dft1 = fft(a1);
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:687:19: note: in instantiation of member function 'polynomial<double>::operator*' requested here
poly3 = poly1 * poly2;
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1220:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
real() { return __real__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1242:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
real(double __val) { __real__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1308:29: error: no matching member function for call to 'imag'
__imag__ _M_value -= __z.imag();
~~~~^~~~
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1224:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
imag() { return __imag__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1245:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
imag(double __val) { __imag__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1317:23: error: no matching member function for call to 'real'
__real__ __t = __z.real();
~~~~^~~~
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:607:17: note: in instantiation of function template specialization 'std::complex<double>::operator*=<double>' requested here
dft1[k] *= dft2[k];
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:687:19: note: in instantiation of member function 'polynomial<double>::operator*' requested here
poly3 = poly1 * poly2;
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1220:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
real() { return __real__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1242:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
real(double __val) { __real__ _M_value = __val; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1318:23: error: no matching member function for call to 'imag'
__imag__ __t = __z.imag();
~~~~^~~~
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1224:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
imag() { return __imag__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1245:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
imag(double __val) { __imag__ _M_value = __val; }
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:561:15: error: no viable overloaded '*='
w *= wm;
~ ^ ~~
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:610:12: note: in instantiation of member function 'polynomial<double>::inverse_fft' requested here
dft2 = inverse_fft(dft1);
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:687:19: note: in instantiation of member function 'polynomial<double>::operator*' requested here
poly3 = poly1 * poly2;
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1269:7: note: candidate function not viable: no known conversion from 'complex<double>' to 'double' for 1st argument
operator*=(double __d)
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1314:9: note: candidate template ignored: substitution failure [with _Tp = double]
operator*=(const complex<_Tp>& __z)
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:450:33: error: no matching member function for call to 'real'
{ return complex<_Tp>(-__x.real(), -__x.imag()); }
~~~~^~~~
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:548:18: note: in instantiation of function template specialization 'std::operator-<double>' requested here
wm = exp(-PI2I / complex<T>(m));
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:610:12: note: in instantiation of member function 'polynomial<double>::inverse_fft' requested here
dft2 = inverse_fft(dft1);
^
/tmp/rc2/llvm-test-suite/SingleSource/Benchmarks/CoyoteBench/fftbench.cpp:687:19: note: in instantiation of member function 'polynomial<double>::operator*' requested here
poly3 = poly1 * poly2;
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1220:7: note: candidate function not viable: 'this' argument has type 'const complex<double>', but method is not marked const
real() { return __real__ _M_value; }
^
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/complex:1242:7: note: candidate function not viable: requires single argument '__val', but no arguments were provided
real(double __val) { __real__ _M_value = __val; }
^
10 errors generated.