From d05739f8c4cb1eb3e10170d08391c01fdfe2aa35 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 21 Apr 2008 13:58:53 -0400 Subject: [PATCH] re PR c++/35325 (ICE with fixed-point types in template parameter) PR c++/35325 * tree.c (cp_tree_equal): Handle FIXED_CST. From-SVN: r134519 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/tree.c | 4 ++++ gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/g++.dg/ext/fixed1.C | 7 +++++++ 4 files changed, 17 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/fixed1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 09b2e08..1ea3733 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2008-04-21 Jason Merrill + PR c++/35325 + * tree.c (cp_tree_equal): Handle FIXED_CST. + PR c++/35678 * pt.c (template_template_parm_bindings_ok_p): Set processing_template_decl while in this function. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 73adbb5..ff37220 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1734,6 +1734,10 @@ cp_tree_equal (tree t1, tree t2) && !memcmp (TREE_STRING_POINTER (t1), TREE_STRING_POINTER (t2), TREE_STRING_LENGTH (t1)); + case FIXED_CST: + return FIXED_VALUES_IDENTICAL (TREE_FIXED_CST (t1), + TREE_FIXED_CST (t2)); + case COMPLEX_CST: return cp_tree_equal (TREE_REALPART (t1), TREE_REALPART (t2)) && cp_tree_equal (TREE_IMAGPART (t1), TREE_IMAGPART (t2)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dca56d9..64416f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-04-21 Jason Merrill + PR c++/35325 + * g++.dg/ext/fixed1.C: New. + PR c++/35678 * g++.dg/template/ttp27.C: New. diff --git a/gcc/testsuite/g++.dg/ext/fixed1.C b/gcc/testsuite/g++.dg/ext/fixed1.C new file mode 100644 index 0000000..db074a3 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/fixed1.C @@ -0,0 +1,7 @@ +// PR c++/35325 + +template struct A {}; + +template struct B : A {}; + +template struct C : A {}; -- 2.7.4