aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/search.c
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1996-11-12 19:49:48 +0000
committerMike Stump <mrs@gcc.gnu.org>1996-11-12 19:49:48 +0000
commit9a3b49acbc192d01f3138409547ba438607812a5 (patch)
tree85cd8cd7131e818db5e41babcf683a757099ac52 /gcc/cp/search.c
parent3aad04640f70b2c9f75638e2c2143459df4461b7 (diff)
downloadgcc-9a3b49acbc192d01f3138409547ba438607812a5.zip
gcc-9a3b49acbc192d01f3138409547ba438607812a5.tar.gz
gcc-9a3b49acbc192d01f3138409547ba438607812a5.tar.bz2
90th Cygnus<->FSF quick merge
From-SVN: r13141
Diffstat (limited to 'gcc/cp/search.c')
-rw-r--r--gcc/cp/search.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index ebb692d..f2b2a50 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -2539,9 +2539,20 @@ dfs_debug_mark (binfo)
CLASSTYPE_DEBUG_REQUESTED (t) = 1;
- /* If interface info is known, the value of (?@@?) is correct. */
- if (methods == 0
- || CLASSTYPE_INTERFACE_KNOWN (t)
+ if (methods == 0)
+ return;
+
+ /* We can't do the TYPE_DECL_SUPPRESS_DEBUG thing with DWARF, which
+ does not support name references between translation units. */
+ if (write_symbols == DWARF_DEBUG)
+ {
+ rest_of_type_compilation (t, global_bindings_p ());
+ return;
+ }
+
+ /* If interface info is known, either we've already emitted the debug
+ info or we don't need to. */
+ if (CLASSTYPE_INTERFACE_KNOWN (t)
|| (write_virtuals == 2 && TYPE_VIRTUAL_P (t)))
return;
@@ -3120,6 +3131,10 @@ note_debug_info_needed (type)
tree type;
{
tree field;
+
+ if (current_template_parms)
+ return;
+
dfs_walk (TYPE_BINFO (type), dfs_debug_mark, dfs_debug_unmarkedp);
for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
{