This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/51395] New: [4.5/4.6 Regression] ICE in dependent_type_p (endless (?) recursion)
- From: "doko at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 03 Dec 2011 18:21:56 +0000
- Subject: [Bug c++/51395] New: [4.5/4.6 Regression] ICE in dependent_type_p (endless (?) recursion)
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51395
Bug #: 51395
Summary: [4.5/4.6 Regression] ICE in dependent_type_p (endless
(?) recursion)
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: doko@gcc.gnu.org
Created attachment 25981
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25981
test case
the ICE is seen with 4.5 and 4.6 branches, not with 4.4 and trunk.
$ g++-4.4 -std=c++0x t.cpp
t.cpp: In function 'F2 operator|(F1, F2)':
t.cpp:2: error: expected primary-expression before '[' token
t.cpp:2: error: expected primary-expression before '=' token
t.cpp:2: error: expected primary-expression before ']' token
t.cpp:2: error: expected primary-expression before 'unsigned'
t.cpp:2: error: expected ';' before '{' token
t.cpp:2: error: 'x' was not declared in this scope
t.cpp: At global scope:
t.cpp:4: error: expected primary-expression before '[' token
t.cpp:4: error: expected primary-expression before ']' token
t.cpp:4: error: expected primary-expression before 'float'
t.cpp:4: error: unable to deduce 'auto' from '<expression error>'
t.cpp:5: error: expected ',' or ';' before '{' token
$ g++-4.5 -std=c++0x t.cpp
g++-4.5: Internal error: Segmentation fault (program cc1plus)
Please submit a full bug report.
$ g++-4.6 -std=c++0x t.cpp
g++-4.6: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
$ /usr/lib/gcc-snapshot/bin/g++ -std=c++0x t.cpp
t.cpp: In instantiation of 'operator|(F1, F2) [with F1 =
<lambda(float)>::<lambda(long long unsigned int)>; F2 =
<lambda()>]::<lambda(long long unsigned int)>':
t.cpp:2:75: required from 'struct operator|(F1, F2) [with F1 =
<lambda(float)>::<lambda(long long unsigned int)>; F2 =
<lambda()>]::<lambda(long long unsigned int)>'
t.cpp:2:83: required from 'F2 operator|(F1, F2) [with F1 =
<lambda(float)>::<lambda(long long unsigned int)>; F2 = <lambda()>]'
t.cpp:16:26: required from here
t.cpp:2:83: error: no match for call to '(const<lambda()>) (float)'
t.cpp:9:15: note: candidates are:
t.cpp:2:83: note: <lambda()>::<lambda(float)> (*)() <conversion>
t.cpp:2:83: note: candidate expects 1 argument, 2 provided
t.cpp:9:17: note: <lambda()>
t.cpp:9:17: note: candidate expects 0 arguments, 1 provided
t.cpp:2:83: error: return-statement with a value, in function returning 'void'
[-fpermissive]
t.cpp: In instantiation of 'F2 operator|(F1, F2) [with F1 =
<lambda(float)>::<lambda(long long unsigned int)>; F2 = <lambda()>]':
t.cpp:16:26: required from here
t.cpp:2:83: error: could not convert '{f2, f1}' from 'operator|(F1, F2) [with
F1 = <lambda(float)>::<lambda(long long unsigned int)>; F2 =
<lambda()>]::<lambda(long long unsigned int)>' to '<lambda()>'