Bug 11344

Summary: [3.3 Regression] templates + friend + name conflict = ICE
Product: gcc Reporter: Scott Worley <scott.worley>
Component: c++Assignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED FIXED    
Severity: minor CC: gcc-bugs
Priority: P2 Keywords: ice-on-invalid-code
Version: 2.95.4   
Target Milestone: 3.4.0   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed: 2003-08-02 04:02:44

Description Scott Worley 2003-06-27 09:06:37 UTC
template <class Foo> 
class bar {}; 
 
template <class Foo> 
class baz { 
   int bar; 
   friend class bar; 
}; 
 
 
Will cause ICE in pop_binding, at cp/decl.c:1187 
 
Tested on 2.95.4, 2.96, and 3.2.2.
Comment 1 Andrew Pinski 2003-06-27 11:52:55 UTC
I can confirm this on 2.95.3, 3.0.4, 3.2.2, 3.2.3, 3.3.1 (20030616) and the mainline (20030626) 
but in 2.91.66, I do not get an ICE so this a regression wrt 2.91.66.
Comment 2 Wolfgang Bangerth 2003-06-27 14:20:56 UTC
There are several other PRs for ICEs in pop_binding, see PR 157,
PR 5402, PR 6289, PR 9777. Maybe they are connected.

W.
Comment 3 Andrew Pinski 2003-06-28 02:46:44 UTC
The closest on this one looks like is bug 6289.
Comment 4 Gabriel Dos Reis 2003-06-28 12:21:35 UTC
Subject: Re:  [3.3/3.4 Regression] templates + friend + name conflict = ICE

"bangerth at dealii dot org" <gcc-bugzilla@gcc.gnu.org> writes:

| There are several other PRs for ICEs in pop_binding, see PR 157,
| PR 5402, PR 6289, PR 9777. Maybe they are connected.

Indeed.  That ICE is caused by the way we're handling binding
contours.  Hoepfully, they will be fixed as collateral benefits of the
work on name lookup speed up.

-- Gaby

Comment 5 Kriang Lerdsuwanakij 2003-08-19 14:09:46 UTC
Already fixed in the main trunk.  So it's only a 3.3 regression now.
Comment 6 Andrew Pinski 2003-09-17 05:51:51 UTC
Since this is fixed on the mainline and it is a regression from 2.91.66 (released as egcs), I am 
closing this as fixed.