aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-05-10 17:20:47 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-05-10 17:20:47 -0400
commit5a40306bb6bf3f305bc3b6e265aa583c69049449 (patch)
tree082d207c3f03dd0974e8570a2ce4e8efbcbe8366
parenteaa9d009d8563f4224f58e982a962662d3b5ea06 (diff)
downloadgcc-5a40306bb6bf3f305bc3b6e265aa583c69049449.zip
gcc-5a40306bb6bf3f305bc3b6e265aa583c69049449.tar.gz
gcc-5a40306bb6bf3f305bc3b6e265aa583c69049449.tar.bz2
re PR c++/44017 (ICE with template hierarchy)
PR c++/44017 * semantics.c (baselink_for_fns): Revert earlier change. From-SVN: r159246
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/semantics.c3
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/template/inherit5.C11
4 files changed, 18 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index beedb80..31749dd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2010-05-10 Jason Merrill <jason@redhat.com>
+ PR c++/44017
+ * semantics.c (baselink_for_fns): Revert earlier change.
+
PR c++/44045
* typeck.c (cp_build_modify_expr): Complain about assignment to
array from init list.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 0847403..cbbcf96 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2658,8 +2658,7 @@ baselink_for_fns (tree fns)
if (!cl)
cl = DECL_CONTEXT (fn);
cl = TYPE_BINFO (cl);
- return build_baselink (TYPE_BINFO (DECL_CONTEXT (fn)), cl, fns,
- /*optype=*/NULL_TREE);
+ return build_baselink (cl, cl, fns, /*optype=*/NULL_TREE);
}
/* Returns true iff DECL is an automatic variable from a function outside
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9f0a4b1..3440960 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2010-05-10 Jason Merrill <jason@redhat.com>
+ PR c++/44017
+ * g++.dg/template/inherit5.C: New.
+
PR c++/44045
* g++.dg/cpp0x/initlist33.C: New.
* g++.dg/cpp0x/initlist26.C: Adjust.
diff --git a/gcc/testsuite/g++.dg/template/inherit5.C b/gcc/testsuite/g++.dg/template/inherit5.C
new file mode 100644
index 0000000..cd22f5b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/inherit5.C
@@ -0,0 +1,11 @@
+struct A
+{
+ template<int> void foo();
+};
+
+template<int N> struct B : A
+{
+ B() { foo<N>(); }
+};
+
+B<0> b;