summaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-15 23:10:20 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-15 23:10:20 +0000
commitf72990c4d02d91646c920670bf5ebc2a99bb2d14 (patch)
tree04ed348bcae4f331a1f5a8d92977102e9d45447f /gcc/cp
parentf9464d30f164585d409b97de5294c7b7a928054c (diff)
downloadgcc-f72990c4d02d91646c920670bf5ebc2a99bb2d14.tar.gz
problem that current decl duplication mechanizm
> > /* If we didn't remap this variable, so we can't mess with its > TREE_CHAIN. If we remapped this variable to the return slot, it's git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72539 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c25
2 files changed, 20 insertions, 10 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 86d4364ad00..81730210bda 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-15 Jan Hubicka <jh@suse.cz>
+
+ pr c++/12574
+ * decl2.c (cxx_callgraph_analyze_expr): deal with baselink.
+
2003-10-14 Jason Merrill <jason@redhat.com>
PR c++/11878
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index b51e365eefd..85845fcb2ee 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -2515,16 +2515,21 @@ cxx_callgraph_analyze_expr (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
{
tree t = *tp;
- switch (TREE_CODE (t))
- {
- case PTRMEM_CST:
- if (TYPE_PTRMEMFUNC_P (TREE_TYPE (t)))
- cgraph_mark_needed_node (cgraph_node (PTRMEM_CST_MEMBER (t)));
- break;
-
- default:
- break;
- }
+ if (flag_unit_at_a_time)
+ switch (TREE_CODE (t))
+ {
+ case PTRMEM_CST:
+ if (TYPE_PTRMEMFUNC_P (TREE_TYPE (t)))
+ cgraph_mark_needed_node (cgraph_node (PTRMEM_CST_MEMBER (t)));
+ break;
+ case BASELINK:
+ if (TREE_CODE (BASELINK_FUNCTIONS (t)) == FUNCTION_DECL)
+ cgraph_mark_needed_node (cgraph_node (BASELINK_FUNCTIONS (t)));
+ break;
+
+ default:
+ break;
+ }
return NULL;
}