summaryrefslogtreecommitdiff
path: root/gcc/cp/decl.c
diff options
context:
space:
mode:
authordgregor <dgregor@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-04 06:32:30 +0000
committerdgregor <dgregor@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-04 06:32:30 +0000
commit3084bb6fe0672e1e6e693a9a5e10581ae2b4a430 (patch)
tree57e6f75b199598a710c4e2a6c1666ad20df96b3c /gcc/cp/decl.c
parent2595dcbb4c9bc83e3fa552689d846bbcfe14cd00 (diff)
downloadgcc-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.c8
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;
}