https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70001
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2016-02-28
CC| |trippels at gcc dot gnu.org
Summary|Infinity compilation time |[5 regression] Infinity
| |compilation time
Ever confirmed|0 |1
--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Confirmed. gcc-5 is spinning in:
Overhead Shared Object Symbol
61.76% cc1plus [.] cp_tree_equal
12.72% cc1plus [.] tree_int_cst_equal
9.23% cc1plus [.] cxx_eval_constant_expression
2.72% cc1plus [.] cxx_eval_constant_expression
gcc-6 prints two errors at first:
fft-old.cpp: In function ‘int rev(int)’:
fft-old.cpp:70:21: error: ‘mask’ was not declared in this scope
while ((mask & (1 << k)) == 0)
^~~~
fft-old.cpp: In function ‘cd get_w(int)’:
fft-old.cpp:88:16: error: ‘i’ was not declared in this scope
return res[i];
^
then consumes 6GB of memory before it continues with:
fft-old.cpp: In function ‘void mult()’:
fft-old.cpp:114:10: error: ‘i’ was not declared in this scope
for (i = 0; i != N; ++i)
^
fft-old.cpp:117:10: error: ‘i’ was not declared in this scope
for (i = 0; i < N; ++i)
^
fft-old.cpp:119:20: error: no match for ‘operator+’ (operand types are
‘std::array<std::complex<double>, 131072ul>’ and ‘int’)
std::reverse(A + 1, A + N);
~~^~~
In file included from fft-old.cpp:28:0:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/complex:445:5: note:
candidate: template<class _Tp> std::complex<_Tp> std::operator+(const
std::complex<_Tp>&)
operator+(const complex<_Tp>& __x)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/complex:445:5: note:
template argument deduction/substitution failed:
fft-old.cpp:119:22: note: ‘std::array<std::complex<double>, 131072ul>’ is not
derived from ‘const std::complex<_Tp>’
std::reverse(A + 1, A + N);
...