[Bug c++/53401] New: internal compiler error: Segmentation fault on infinite argument deduction of constexpr templates
ai.azuma at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri May 18 17:31:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53401
Bug #: 53401
Summary: internal compiler error: Segmentation fault on
infinite argument deduction of constexpr templates
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ai.azuma@gmail.com
Created attachment 27434
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27434
Outputs from -v option (repeated error messages are snipped) and preprocessed
source.
The following invalid code causes an ICE with GCC 4.8.0 20120513 (experimental)
and -std=c++11.
/////////////////////////////////////////////
template<int I>
struct index
{};
constexpr int recursive_impl(index<0u>)
{
return 0;
}
template<int N>
constexpr auto recursive_impl(index<N>) // Line 11
-> decltype(recursive_impl(index<N - 1>()))
{
return recursive_impl(index<N - 1>());
}
template<int N>
constexpr auto recursive()
-> decltype(recursive_impl(index<N>()))
{
return recursive_impl(index<N>());
}
void f(int i)
{
recursive<1>();
}
/////////////////////////////////////////////
g++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
The above-mentioned code is invalid because there isn't anything to prevent the
compiler from trying infinite template argument deduction in the second
overload of `recursive_impl' (Line 11). So, I expect error messages like
"template instantiation depth exceeds maximum...". However, the compiler dies
in segmentation fault.
`constexpr' is necessary to reproduce the ICE. Otherwise, the compiler outputs
ordinary error messages as expected.
4.6.4 20120511 (prerelease) and 4.7.1 20120512 (prerelease) also cause the same
problem, too.
More information about the Gcc-bugs
mailing list