aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-02-28 18:49:37 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2001-02-28 17:49:37 +0000
commitc679d0489a8811245faa60389a4881cf94669015 (patch)
tree6a8487d440b422e29aa8ab6a1c32699d03bc4515 /gcc/dwarf2out.c
parent11014a3b3886458a25601381d4bccbc3d293c19a (diff)
downloadgcc-c679d0489a8811245faa60389a4881cf94669015.zip
gcc-c679d0489a8811245faa60389a4881cf94669015.tar.gz
gcc-c679d0489a8811245faa60389a4881cf94669015.tar.bz2
i386.md (sse_andti3, [...]): Add SSE2 versions; add missing '%' in constraints.
* i386.md (sse_andti3, sse_nandti_3, sse_xorti3): Add SSE2 versions; add missing '%' in constraints. From-SVN: r40127
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index ce3efaf..7bf8594 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1732,6 +1732,9 @@ dwarf2out_frame_debug (insn)
if (insn == NULL_RTX)
{
+ rtx insn;
+ int n_alternate_entry_points;
+
/* Set up state for generating call frame debug info. */
lookup_cfa (&cfa);
if (cfa.reg != (unsigned long) DWARF_FRAME_REGNUM (STACK_POINTER_REGNUM))
@@ -1740,6 +1743,39 @@ dwarf2out_frame_debug (insn)
cfa_store = cfa;
cfa_temp.reg = -1;
cfa_temp.offset = 0;
+
+ n_alternate_entry_points = 0;
+ for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+ if (GET_CODE (insn) == CODE_LABEL && LABEL_ALTERNATE_NAME (insn))
+ n_alternate_entry_points ++;
+
+ /* For each alternate entry point amit an store_state command. We will pop
+ the state once we will reach it. */
+ while (n_alternate_entry_points--)
+ {
+ register dw_cfi_ref xcfi;
+
+ /* Set the location counter to the new label. */
+ xcfi = new_cfi ();
+ xcfi->dw_cfi_opc = DW_CFA_remember_state;
+ add_fde_cfi (NULL, xcfi);
+ }
+ return;
+ }
+ /* An alternate entry point. Pop the state we pushed during initialization
+ and re-initialize our tables. */
+ if (GET_CODE (insn) == CODE_LABEL && LABEL_ALTERNATE_NAME (insn))
+ {
+ register dw_cfi_ref xcfi;
+ label = dwarf2out_cfi_label ();
+
+ /* On entry, the Canonical Frame Address is at SP. */
+ dwarf2out_def_cfa (label, STACK_POINTER_REGNUM, INCOMING_FRAME_SP_OFFSET);
+
+ /* Restore the frame state we had right before entering function. */
+ xcfi = new_cfi ();
+ xcfi->dw_cfi_opc = DW_CFA_restore_state;
+ add_fde_cfi (label, xcfi);
return;
}