/* The debug hooks structure. */
#if defined (DBX_DEBUGGING_INFO)
-static void dbxout_source_line (unsigned int, const char *);
+static void dbxout_source_line (unsigned int, const char *, int, bool);
static void dbxout_begin_prologue (unsigned int, const char *);
static void dbxout_source_file (const char *);
static void dbxout_function_end (tree);
#if defined (DBX_DEBUGGING_INFO)
static void
-dbxout_function_end (tree decl)
+dbxout_function_end (tree decl ATTRIBUTE_UNUSED)
{
char lscope_label_name[100];
named sections. */
if (!use_gnu_debug_info_extensions
|| NO_DBX_FUNCTION_END
- || !targetm.have_named_sections
- || DECL_IGNORED_P (decl))
+ || !targetm.have_named_sections)
return;
/* By convention, GCC will mark the end of a function with an N_FUN
/* pre-increment the scope counter */
scope_labelno++;
- dbxout_source_line (lineno, filename);
+ dbxout_source_line (lineno, filename, 0, true);
/* Output function begin block at function scope, referenced
by dbxout_block, dbxout_source_line and dbxout_function_end. */
emit_pending_bincls_if_required ();
number LINENO. */
static void
-dbxout_source_line (unsigned int lineno, const char *filename)
+dbxout_source_line (unsigned int lineno, const char *filename,
+ int discriminator ATTRIBUTE_UNUSED,
+ bool is_stmt ATTRIBUTE_UNUSED)
{
dbxout_source_file (filename);
}
case PARM_DECL:
- /* Parm decls go in their own separate chains
- and are output by dbxout_reg_parms and dbxout_parms. */
- gcc_unreachable ();
+ if (DECL_HAS_VALUE_EXPR_P (decl))
+ decl = DECL_VALUE_EXPR (decl);
+
+ /* PARM_DECLs go in their own separate chain and are output by
+ dbxout_reg_parms and dbxout_parms, except for those that are
+ disguised VAR_DECLs like Out parameters in Ada. */
+ gcc_assert (TREE_CODE (decl) == VAR_DECL);
+
+ /* ... fall through ... */
case RESULT_DECL:
case VAR_DECL:
}
else if (MEM_P (home)
&& GET_CODE (XEXP (home, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (home, 0), 1)) == CONST_INT)
+ && CONST_INT_P (XEXP (XEXP (home, 0), 1)))
{
code = N_LSYM;
/* RTL looks like (MEM (PLUS (REG...) (CONST_INT...)))
switch (GET_CODE (sym_addr))
{
case PLUS:
- if (GET_CODE (XEXP (sym_addr, 0)) == CONST_INT)
+ if (CONST_INT_P (XEXP (sym_addr, 0)))
{
name =
targetm.strip_name_encoding(XSTR (XEXP (sym_addr, 1), 0));
If that is not true, we produce meaningless results,
but do not crash. */
if (GET_CODE (inrtl) == PLUS
- && GET_CODE (XEXP (inrtl, 1)) == CONST_INT)
+ && CONST_INT_P (XEXP (inrtl, 1)))
number = INTVAL (XEXP (inrtl, 1));
else
number = 0;
{
int saved_tree_used1;
- if (DECL_IGNORED_P (decl))
- return;
-
saved_tree_used1 = TREE_USED (decl);
TREE_USED (decl) = 1;
if (DECL_NAME (DECL_RESULT (decl)) != 0)