diff options
author | Mike Stump <mrs@gcc.gnu.org> | 1996-11-12 19:49:48 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1996-11-12 19:49:48 +0000 |
commit | 9a3b49acbc192d01f3138409547ba438607812a5 (patch) | |
tree | 85cd8cd7131e818db5e41babcf683a757099ac52 /gcc/cp/search.c | |
parent | 3aad04640f70b2c9f75638e2c2143459df4461b7 (diff) | |
download | gcc-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.c | 21 |
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)) { |