| Bug#: 15701 | Product: gcc | Version: 3.4.0 | |
| Host: | Target: | Build: | |
| Status: RESOLVED | Severity: critical | Priority: P2 | |
| Resolution: FIXED | Assigned To: mark@codesourcery.com | Reported By: igodard@pacbell.net | |
| Component: c++ | Target Milestone: 3.4.1 | ||
| Summary: [3.4/4.0 regression] ICE with friends and template template parameter | |||
| Keywords: ice-on-valid-code, monitored | |||
| Opened: 2004-05-28 07:17 | |||
| Description: | Last confirmed: 2004-05-28 12:08 | Opened: 2004-05-28 07:17 |
Created an attachment (id=6411) [edit]
Compiler output (-v -save-temps)
Created an attachment (id=6412) [edit]
Source code (-save-temps)
Confirmed.
Here's a reduced testcase that segfaults since gcc 3.4.0:
===============================================================
template<template<int> class T> struct A : T<0>
{
void foo();
template<template<int> class U> friend void A<U>::foo();
};
template<int> struct B {};
A<B> a;
===============================================================
The problem seems to be related to the template template parameter.
If I make T, U, B regular classes, the code compiles.
Subject: Bug 15701 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_4-branch Changes by: mmitchel@gcc.gnu.org 2004-05-31 22:47:16 Modified files: gcc/testsuite : ChangeLog gcc/cp : ChangeLog friend.c Added files: gcc/testsuite/g++.dg/template: friend29.C Log message: PR c++/15701 * friend.c (add_friend): Do not try to perform access checks for functions from dependent classes. PR c++/15701 * g++.dg/template/friend29.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3389.2.190&r2=1.3389.2.191 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3892.2.110&r2=1.3892.2.111 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/friend.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.93.4.1&r2=1.93.4.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/friend29.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.2.1
Subject: Bug 15701 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2004-05-31 22:47:57 Modified files: gcc/cp : friend.c Added files: gcc/testsuite/g++.dg/template: friend29.C Log message: PR c++/15701 * friend.c (add_friend): Do not try to perform access checks for functions from dependent classes. PR c++/15701 * g++.dg/template/friend29.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/friend.c.diff?cvsroot=gcc&r1=1.96&r2=1.97 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/friend29.C.diff?cvsroot=gcc&r1=1.1&r2=1.2
Subject: Bug 15701 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2004-05-31 22:48:30 Modified files: gcc/cp : ChangeLog gcc/testsuite : ChangeLog Log message: PR c++/15701 * friend.c (add_friend): Do not try to perform access checks for functions from dependent classes. PR c++/15701 * g++.dg/template/friend29.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4071&r2=1.4072 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.3799&r2=1.3800