+2003-09-17 Mark Mitchell <mark@codesourcery.com>
+
+ 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.
+
2003-09-17 Daniel Jacobowitz <drow@mvista.com>
* configure.in: Quote gcc_config_arguments for configargs.h.
+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.
#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
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 */
}
\f
+
+/* 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
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.
DBX_OUTPUT_STANDARD_TYPES (syms);
#endif
- /* Get all permanent types that have typedef names,
- and output them all, except for those already output. */
-
+ /* Get all permanent types that have typedef names, and output them
+ all, except for those already output. Some language front ends
+ put these declarations in the top-level scope; some do not. */
+ dbxout_typedefs ((*lang_hooks.decls.builtin_type_decls) ());
dbxout_typedefs (syms);
}
extern bool lhd_post_options (const char **);
extern HOST_WIDE_INT lhd_get_alias_set (tree);
extern tree lhd_return_tree (tree);
+extern tree lhd_return_null_tree_v (void);
extern tree lhd_return_null_tree (tree);
extern tree lhd_do_nothing_iii_return_null_tree (int, int, int);
extern int lhd_safe_from_p (rtx, tree);
#define LANG_HOOKS_SET_BLOCK set_block
#define LANG_HOOKS_PUSHDECL pushdecl
#define LANG_HOOKS_GETDECLS getdecls
+#define LANG_HOOKS_BUILTIN_TYPE_DECLS lhd_return_null_tree_v
#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL lhd_warn_unused_global_decl
#define LANG_HOOKS_WRITE_GLOBALS write_global_declarations
#define LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE NULL
LANG_HOOKS_SET_BLOCK, \
LANG_HOOKS_PUSHDECL, \
LANG_HOOKS_GETDECLS, \
+ LANG_HOOKS_BUILTIN_TYPE_DECLS, \
LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, \
LANG_HOOKS_WRITE_GLOBALS, \
LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE, \
/* Do nothing (return NULL_TREE). */
tree
+lhd_return_null_tree_v (void)
+{
+ return NULL_TREE;
+}
+
+/* Do nothing (return NULL_TREE). */
+
+tree
lhd_return_null_tree (tree t ATTRIBUTE_UNUSED)
{
return NULL_TREE;
/* Returns the chain of decls so far in the current scope level. */
tree (*getdecls) (void);
+ /* Returns a chain of TYPE_DECLs for built-in types. */
+ tree (*builtin_type_decls) (void);
+
/* Returns true when we should warn for an unused global DECL.
We will already have checked that it has static binding. */
bool (*warn_unused_global) (tree);