aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2003-09-17 20:52:41 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2003-09-17 20:52:41 +0000
commit47aa0df47504bd7a24c0e5e3110e927233e4a96d (patch)
treeb548787b45299cc7b303a1196b1877191302b679 /gcc/cp
parent43892f8cea65404797f538f37a500ca62bf672c0 (diff)
downloadgcc-47aa0df47504bd7a24c0e5e3110e927233e4a96d.zip
gcc-47aa0df47504bd7a24c0e5e3110e927233e4a96d.tar.gz
gcc-47aa0df47504bd7a24c0e5e3110e927233e4a96d.tar.bz2
re PR debug/12066 (g++ generates stabs for "char *" that gdb cannot read)
PR debug/12066 * dbxout.c (dbxout_init): Use a langhook to find builtin types. * langhooks-def.h (lhd_return_null_tree_v): New function. (LANG_HOOKS_BUILTIN_TYPE_DECLS): New macro. (LANG_HOOKS_DECLS): Add it to the intializer. * langhooks.c (lhd_return_null_tree_v): New function. * langhooks.h (lang_hooks_for_decls): Add builtin_type_decls. PR debug/12066 * cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define. * cp-tree.h (cxx_builtin_type_decls): Declare. * decl.c (builtin_type_decls): New variables. (cxx_builtin_type_decls): New function. (record_builtin_type): Add to builtin_type_decls. From-SVN: r71478
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/cp-lang.c2
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/cp/decl.c19
4 files changed, 32 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f650e3c..24f82d7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+2003-09-17 Mark Mitchell <mark@codesourcery.com>
+
+ PR debug/12066
+ * cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define.
+ * cp-tree.h (cxx_builtin_type_decls): Declare.
+ * decl.c (builtin_type_decls): New variables.
+ (cxx_builtin_type_decls): New function.
+ (record_builtin_type): Add to builtin_type_decls.
+
2003-09-17 Richard Henderson <rth@redhat.com>
* semantics.c (expand_or_defer_fn): Inc/dec function_depth.
diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c
index 3e229a0..92e6b91 100644
--- a/gcc/cp/cp-lang.c
+++ b/gcc/cp/cp-lang.c
@@ -102,6 +102,8 @@ static void cxx_initialize_diagnostics (diagnostic_context *);
#define LANG_HOOKS_DECL_PRINTABLE_NAME cxx_printable_name
#undef LANG_HOOKS_PRINT_ERROR_FUNCTION
#define LANG_HOOKS_PRINT_ERROR_FUNCTION cxx_print_error_function
+#undef LANG_HOOKS_BUILTIN_TYPE_DECLS
+#define LANG_HOOKS_BUILTIN_TYPE_DECLS cxx_builtin_type_decls
#undef LANG_HOOKS_PUSHLEVEL
#define LANG_HOOKS_PUSHLEVEL lhd_do_nothing_i
#undef LANG_HOOKS_POPLEVEL
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 1d126e8..dfa298f 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -3752,6 +3752,8 @@ extern void register_dtor_fn (tree);
extern tmpl_spec_kind current_tmpl_spec_kind (int);
extern tree cp_fname_init (const char *);
extern tree check_elaborated_type_specifier (enum tag_types, tree, bool);
+extern tree cxx_builtin_type_decls (void);
+
extern bool have_extern_spec;
/* in decl2.c */
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 92e8597..8676698 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -5911,6 +5911,19 @@ lookup_type_current_level (tree name)
}
+
+/* A chain of TYPE_DECLs for the builtin types. */
+
+static GTY(()) tree builtin_type_decls;
+
+/* Return a chain of TYPE_DECLs for the builtin types. */
+
+tree
+cxx_builtin_type_decls ()
+{
+ return builtin_type_decls;
+}
+
/* Push the declarations of builtin types into the namespace.
RID_INDEX is the index of the builtin type in the array
RID_POINTERS. NAME is the name used when looking up the builtin
@@ -5952,6 +5965,12 @@ record_builtin_type (enum rid rid_index,
if (!TYPE_NAME (type))
TYPE_NAME (type) = tdecl;
+
+ if (tdecl)
+ {
+ TREE_CHAIN (tdecl) = builtin_type_decls;
+ builtin_type_decls = tdecl;
+ }
}
/* Record one of the standard Java types.