9.0.1 rc2 - failed to compile fftbench on Ubuntu 14.04

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.