From aa1826e2c4728c1ec3215b4770e0fe29b1500dac Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Fri, 20 Apr 2001 16:06:06 +0000 Subject: [PATCH] tree.c (cp_tree_equal): Adjust final switch formatting. cp: * tree.c (cp_tree_equal): Adjust final switch formatting. Add 't' case. testsuite: * g++.old-deja/g++.pt/typename28.C: New test. From-SVN: r41462 --- gcc/cp/ChangeLog | 5 ++++ gcc/cp/tree.c | 24 ++++++++++------- gcc/testsuite/ChangeLog | 4 +++ .../g++.old-deja/g++.pt/typename28.C | 27 +++++++++++++++++++ 4 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename28.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eaee2bb24a3..8e86dbd154e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-04-20 Nathan Sidwell + + * tree.c (cp_tree_equal): Adjust final switch formatting. Add + 't' case. + 2001-04-20 Nathan Sidwell * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 09aa0cde2e3..43c493ecc2b 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2008,21 +2008,27 @@ cp_tree_equal (t1, t2) switch (TREE_CODE_CLASS (code1)) { - int i; case '1': case '2': case '<': case 'e': case 'r': case 's': - cmp = 1; - for (i = 0; i < TREE_CODE_LENGTH (code1); ++i) - { - cmp = cp_tree_equal (TREE_OPERAND (t1, i), TREE_OPERAND (t2, i)); - if (cmp <= 0) - return cmp; - } - return cmp; + { + int i; + + cmp = 1; + for (i = 0; i < TREE_CODE_LENGTH (code1); ++i) + { + cmp = cp_tree_equal (TREE_OPERAND (t1, i), TREE_OPERAND (t2, i)); + if (cmp <= 0) + return cmp; + } + return cmp; + } + + case 't': + return same_type_p (t1, t2) ? 1 : 0; } return -1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 157bbed491c..f2c3d70e037 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-04-20 Nathan Sidwell + + * g++.old-deja/g++.pt/typename28.C: New test. + 2001-04-20 Nathan Sidwell * g++.old-deja/g++.abi/empty2.C: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.pt/typename28.C b/gcc/testsuite/g++.old-deja/g++.pt/typename28.C new file mode 100644 index 00000000000..a538c4d946f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename28.C @@ -0,0 +1,27 @@ +// Build don't link: +// +// Origin: Jens.Maurer@gmx.net +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 11 Apr 2001 + +// Bug 1844. We can meet types in cp_tree_equal via a template-id-expr. + +typedef int *Ptr; + +template struct B +{ + typedef typename T::template X type; + typedef typename T::template X type2; + typedef typename T::template X type3; + + void foo (type); + void baz (type2); + +}; + +template void B::foo (type) +{ +} +template void B::baz (type3) +{ +} -- 2.30.2