aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-03-31 18:40:16 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-03-31 18:40:16 -0800
commite8fca6ce38e43565799dbce3f1648d1d01be1a96 (patch)
tree61b4bc84f30de47227f4139f0984f93d1dae3438 /gcc
parent45ce961e2ff1a75b7d9ad1e230a5daad7cddb2d1 (diff)
downloadgcc-e8fca6ce38e43565799dbce3f1648d1d01be1a96.zip
gcc-e8fca6ce38e43565799dbce3f1648d1d01be1a96.tar.gz
gcc-e8fca6ce38e43565799dbce3f1648d1d01be1a96.tar.bz2
(dbxout_type): Re-enable debugging output for anonymous structures.
(dbxout_type): Re-enable debugging output for anonymous structures. Change all three places that refer to xrefs to use exactly the same condition. From-SVN: r6935
Diffstat (limited to 'gcc')
-rw-r--r--gcc/dbxout.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 35a2289..7f79b1a 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -983,9 +983,15 @@ dbxout_type (type, full, show_arg_types)
if (TREE_CODE (type) == RECORD_TYPE || TREE_CODE (type) == UNION_TYPE
|| TREE_CODE (type) == QUAL_UNION_TYPE
|| TREE_CODE (type) == ENUMERAL_TYPE)
-
- if ((TYPE_NAME (type) != 0 && !full)
- || TYPE_SIZE (type) == 0)
+ /* We must use the same test here as we use twice below when deciding
+ whether to emit a cross-reference. */
+ if ((TYPE_NAME (type) != 0
+ && ! (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
+ && DECL_IGNORED_P (TYPE_NAME (type)))
+ && !full)
+ || TYPE_SIZE (type) == 0
+ /* No way in DBX fmt to describe a variable size. */
+ || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
{
typevec[TYPE_SYMTAB_ADDRESS (type)] = TYPE_XREF;
return;
@@ -1157,16 +1163,11 @@ dbxout_type (type, full, show_arg_types)
if (TYPE_BINFO (type) != 0 && TYPE_BINFO_BASETYPES (type) != 0)
n_baseclasses = TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES (type));
- /* Output a structure type. */
+ /* Output a structure type. We must use the same test here as we
+ use in the DBX_NO_XREFS case above. */
if ((TYPE_NAME (type) != 0
- /* Long ago, Tiemann said this creates output that "confuses GDB".
- In April 93, mrs@cygnus.com said there is no such problem.
- The type decls made automatically by struct specifiers
- are marked with DECL_IGNORED_P in C++. */
-#if 0 /* This creates output for anonymous classes which confuses GDB. */
&& ! (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
&& DECL_IGNORED_P (TYPE_NAME (type)))
-#endif
&& !full)
|| TYPE_SIZE (type) == 0
/* No way in DBX fmt to describe a variable size. */
@@ -1278,9 +1279,13 @@ dbxout_type (type, full, show_arg_types)
break;
case ENUMERAL_TYPE:
- if ((TYPE_NAME (type) != 0 && !full
- && (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- && ! DECL_IGNORED_P (TYPE_NAME (type))))
+ /* We must use the same test here as we use in the DBX_NO_XREFS case
+ above. We simplify it a bit since an enum will never have a variable
+ size. */
+ if ((TYPE_NAME (type) != 0
+ && ! (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
+ && DECL_IGNORED_P (TYPE_NAME (type)))
+ && !full)
|| TYPE_SIZE (type) == 0)
{
fprintf (asmfile, "xe");