3.4 PATCH: PR 19034
Mark Mitchell
mark@codesourcery.com
Thu May 5 06:27:00 GMT 2005
I backported PR 19034 to the 3.4 branch; no changes from the mainline version.
Tested on x86_64_unknown-linux-gnu, applied to 3.4 branch.
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
2004-12-21 Mark Mitchell <mark@codesourcery.com>
PR c++/19034
* tree.c (cp_tree_equal): Handle OVERLOAD.
2004-12-21 Mark Mitchell <mark@codesourcery.com>
PR c++/19034
* g++.dg/template/crash30.C: New test.
Index: testsuite/g++.dg/template/crash30.C
===================================================================
RCS file: testsuite/g++.dg/template/crash30.C
diff -N testsuite/g++.dg/template/crash30.C
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/g++.dg/template/crash30.C 5 May 2005 05:42:07 -0000
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/19034
+
+ template< bool C > struct B
+ {
+ };
+
+ template<typename S> int foo();
+ template<typename S> int foo1();
+
+ template<typename T> struct bar : public B <(sizeof(foo<T>()) == 1)>
+ {
+ };
+
+ template<typename T> struct bar1 : public B <(sizeof(foo1<T>()) == 1)>
+ {
+ };
Index: cp/tree.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/tree.c,v
retrieving revision 1.360.4.12
diff -c -5 -p -r1.360.4.12 tree.c
*** cp/tree.c 25 Apr 2005 19:58:27 -0000 1.360.4.12
--- cp/tree.c 5 May 2005 05:42:08 -0000
*************** cp_tree_equal (tree t1, tree t2)
*** 1602,1611 ****
--- 1602,1616 ----
if (PTRMEM_CST_MEMBER (t1) != PTRMEM_CST_MEMBER (t2))
return false;
return same_type_p (PTRMEM_CST_CLASS (t1), PTRMEM_CST_CLASS (t2));
+ case OVERLOAD:
+ if (OVL_FUNCTION (t1) != OVL_FUNCTION (t2))
+ return false;
+ return cp_tree_equal (OVL_CHAIN (t1), OVL_CHAIN (t2));
+
default:
break;
}
switch (TREE_CODE_CLASS (code1))
More information about the Gcc-patches
mailing list