diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2001-04-20 16:06:06 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2001-04-20 16:06:06 +0000 |
commit | aa1826e2c4728c1ec3215b4770e0fe29b1500dac (patch) | |
tree | 75cb508620c3c8f8c3a2093c2de7c74b85375ce5 /gcc | |
parent | 06d9f09f53cd3d0c1164986a9c5ff3a37e59dec4 (diff) | |
download | gcc-aa1826e2c4728c1ec3215b4770e0fe29b1500dac.zip gcc-aa1826e2c4728c1ec3215b4770e0fe29b1500dac.tar.gz gcc-aa1826e2c4728c1ec3215b4770e0fe29b1500dac.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/tree.c | 24 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/typename28.C | 27 |
4 files changed, 51 insertions, 9 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eaee2bb..8e86dbd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2001-04-20 Nathan Sidwell <nathan@codesourcery.com> + * tree.c (cp_tree_equal): Adjust final switch formatting. Add + 't' case. + +2001-04-20 Nathan Sidwell <nathan@codesourcery.com> + * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED. (layout_empty_base): Return at end flag. (build_base_field): Likewise. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 09aa0cd..43c493e 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 157bbed..f2c3d70 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2001-04-20 Nathan Sidwell <nathan@codesourcery.com> + * g++.old-deja/g++.pt/typename28.C: New test. + +2001-04-20 Nathan Sidwell <nathan@codesourcery.com> + * g++.old-deja/g++.abi/empty2.C: New test. * g++.old-deja/g++.abi/empty3.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 0000000..a538c4d --- /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 <nathan@codesourcery.com> + +// Bug 1844. We can meet types in cp_tree_equal via a template-id-expr. + +typedef int *Ptr; + +template<class T> struct B +{ + typedef typename T::template X<T> type; + typedef typename T::template X<Ptr> type2; + typedef typename T::template X<int *> type3; + + void foo (type); + void baz (type2); + +}; + +template<class T> void B<T>::foo (type) +{ +} +template<class T> void B<T>::baz (type3) +{ +} |