aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-09-05 14:57:56 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-09-05 14:57:56 -0700
commit07ebc9309dd2deabc568c3c8ea6fc0ab7edc7fe7 (patch)
tree52930dedd01fd3b5a404a92454a487c37b16e941 /gcc/dwarf2out.c
parent6c30752f0916390d06be4a7e46d8aea7407dd4c1 (diff)
downloadgcc-07ebc9309dd2deabc568c3c8ea6fc0ab7edc7fe7.zip
gcc-07ebc9309dd2deabc568c3c8ea6fc0ab7edc7fe7.tar.gz
gcc-07ebc9309dd2deabc568c3c8ea6fc0ab7edc7fe7.tar.bz2
rtl.h (enum reg_note): Add REG_FRAME_RELATED_EXPR.
* rtl.h (enum reg_note): Add REG_FRAME_RELATED_EXPR. * rtl.c (reg_note_name): Likewise. * rtl.texi (REG_NOTES): Likewise. * dwarf2out.c (dwarf2out_frame_debug): Use it. Recognize a store without an offset. From-SVN: r22273
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 6af786c..e3acb98 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1223,7 +1223,12 @@ dwarf2out_frame_debug (insn)
label = dwarf2out_cfi_label ();
- insn = PATTERN (insn);
+ src = find_reg_note (insn, REG_FRAME_RELATED_EXPR, NULL_RTX);
+ if (src)
+ insn = XEXP (src, 0);
+ else
+ insn = PATTERN (insn);
+
/* Assume that in a PARALLEL prologue insn, only the first elt is
significant. Currently this is true. */
if (GET_CODE (insn) == PARALLEL)
@@ -1392,6 +1397,13 @@ dwarf2out_frame_debug (insn)
offset -= cfa_store_offset;
break;
+ /* Without an offset. */
+ case REG:
+ if (cfa_store_reg != REGNO (XEXP (dest, 0)))
+ abort();
+ offset = -cfa_store_offset;
+ break;
+
default:
abort ();
}