Commit 42755c21 by Richard Henderson Committed by Richard Henderson

* dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.

From-SVN: r148412
parent f2ae7631
2009-06-11 Richard Henderson <rth@redhat.com> 2009-06-11 Richard Henderson <rth@redhat.com>
* dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
* dwarf2out.c (need_data_align_sf_opcode): New. * dwarf2out.c (need_data_align_sf_opcode): New.
(div_data_align): Move earlier. (div_data_align): Move earlier.
(def_cfa_1, reg_save): Use it. (def_cfa_1, reg_save): Use it.
......
...@@ -524,7 +524,7 @@ init_return_column_size (enum machine_mode mode, rtx mem, unsigned int c) ...@@ -524,7 +524,7 @@ init_return_column_size (enum machine_mode mode, rtx mem, unsigned int c)
/* Divide OFF by DWARF_CIE_DATA_ALIGNMENT, asserting no remainder. */ /* Divide OFF by DWARF_CIE_DATA_ALIGNMENT, asserting no remainder. */
static HOST_WIDE_INT static inline HOST_WIDE_INT
div_data_align (HOST_WIDE_INT off) div_data_align (HOST_WIDE_INT off)
{ {
HOST_WIDE_INT r = off / DWARF_CIE_DATA_ALIGNMENT; HOST_WIDE_INT r = off / DWARF_CIE_DATA_ALIGNMENT;
...@@ -535,7 +535,7 @@ div_data_align (HOST_WIDE_INT off) ...@@ -535,7 +535,7 @@ div_data_align (HOST_WIDE_INT off)
/* Return true if we need a signed version of a given opcode /* Return true if we need a signed version of a given opcode
(e.g. DW_CFA_offset_extended_sf vs DW_CFA_offset_extended). */ (e.g. DW_CFA_offset_extended_sf vs DW_CFA_offset_extended). */
static bool static inline bool
need_data_align_sf_opcode (HOST_WIDE_INT off) need_data_align_sf_opcode (HOST_WIDE_INT off)
{ {
return DWARF_CIE_DATA_ALIGNMENT < 0 ? off > 0 : off < 0; return DWARF_CIE_DATA_ALIGNMENT < 0 ? off > 0 : off < 0;
...@@ -992,7 +992,7 @@ def_cfa_1 (const char *label, dw_cfa_location *loc_p) ...@@ -992,7 +992,7 @@ def_cfa_1 (const char *label, dw_cfa_location *loc_p)
the CFA register did not change but the offset did. The data the CFA register did not change but the offset did. The data
factoring for DW_CFA_def_cfa_offset_sf happens in output_cfi, or factoring for DW_CFA_def_cfa_offset_sf happens in output_cfi, or
in the assembler via the .cfi_def_cfa_offset directive. */ in the assembler via the .cfi_def_cfa_offset directive. */
if (loc.offset < 0) if (need_data_align_sf_opcode (loc.offset))
cfi->dw_cfi_opc = DW_CFA_def_cfa_offset_sf; cfi->dw_cfi_opc = DW_CFA_def_cfa_offset_sf;
else else
cfi->dw_cfi_opc = DW_CFA_def_cfa_offset; cfi->dw_cfi_opc = DW_CFA_def_cfa_offset;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment