-2005-10-25 James E. Wilson <wilson@specifix.com>
-
+2005-10-31 James E. Wilson <wilson@specifix.com>
+
+ PR debug/24444
+ * dwarf2out.c (convert_cfa_to_loc_list): Put inside DWARF2_UNWIND_INFO
+ ifdef. Put ifdefs around call in gen_subprogram_die.
+ (compute_frame_pointer_to_cfa_displacement): Likewise.
+ (gen_subprogram_die): Restore old code for when DWARF2_UNWIND_INFO is
+ not defined.
+
PR rtl-optimization/17356
* cfgrtl.c (purge_dead_edges): Undo last change. In EDGE_EH code,
add check for CALL_INSN if EDGE_ABRNOMAL_CALL true.
add_const_value_attribute (var_die, rtl);
}
+#ifdef DWARF2_UNWIND_INFO
/* Convert the CFI instructions for the current function into a location
list. This is used for DW_AT_frame_base when we targeting a dwarf2
consumer that does not support the dwarf3 DW_OP_call_frame_cfa. */
frame_pointer_cfa_offset = -offset;
}
+#endif
/* Generate a DW_AT_name attribute given some string value to be included as
the value of the attribute. */
add_AT_fde_ref (subr_die, DW_AT_MIPS_fde, current_funcdef_fde);
#endif
+#ifdef DWARF2_UNWIND_INFO
/* We define the "frame base" as the function's CFA. This is more
convenient for several reasons: (1) It's stable across the prologue
and epilogue, which makes it better than just a frame pointer,
debugger about. We'll need to adjust all frame_base references
by this displacement. */
compute_frame_pointer_to_cfa_displacement ();
+#else
+ /* For targets which support DWARF2, but not DWARF2 call-frame info,
+ we just use the stack pointer or frame pointer. */
+ /* ??? Should investigate getting better info via callbacks, or else
+ by interpreting the IA-64 unwind info. */
+ {
+ rtx fp_reg
+ = frame_pointer_needed ? hard_frame_pointer_rtx : stack_pointer_rtx;
+ add_AT_loc (subr_die, DW_AT_frame_base, reg_loc_descriptor (fp_reg));
+ }
+#endif
if (cfun->static_chain_decl)
add_AT_location_description (subr_die, DW_AT_static_link,