diff options
author | dgregor <dgregor@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-04 06:32:30 +0000 |
---|---|---|
committer | dgregor <dgregor@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-04 06:32:30 +0000 |
commit | 3084bb6fe0672e1e6e693a9a5e10581ae2b4a430 (patch) | |
tree | 57e6f75b199598a710c4e2a6c1666ad20df96b3c /gcc/cp/decl.c | |
parent | 2595dcbb4c9bc83e3fa552689d846bbcfe14cd00 (diff) | |
download | gcc-3084bb6fe0672e1e6e693a9a5e10581ae2b4a430.tar.gz |
2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
* tree.c (maybe_canonicalize_argtypes): New.
(build_function_type): Set canonical type.
(build_method_type_directly): Ditto.
(reconstruct_complex_type): Rebuild the METHOD_TYPE node
properly.
2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
* decl.c (build_ptrmemfunc_type): Always use structural equality
tests when comparing pointer-to-member-function types, because the
handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
types.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126303 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 1fae5f8cd6a..630cec1295f 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -6602,10 +6602,10 @@ build_ptrmemfunc_type (tree type) later. */ TYPE_SET_PTRMEMFUNC_TYPE (type, t); - if (TYPE_STRUCTURAL_EQUALITY_P (type)) - SET_TYPE_STRUCTURAL_EQUALITY (t); - else if (TYPE_CANONICAL (type) != type) - TYPE_CANONICAL (t) = build_ptrmemfunc_type (TYPE_CANONICAL (type)); + /* Managing canonical types for the RECORD_TYPE behind a + pointer-to-member function is a nightmare, so use structural + equality for now. */ + SET_TYPE_STRUCTURAL_EQUALITY (t); return t; } |