OSDN Git Service

2001-04-27 Andrew Haley <aph@cambridge.redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Apr 2001 16:07:26 +0000 (16:07 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Apr 2001 16:07:26 +0000 (16:07 +0000)
        * emit-rtl.c (try_split):  Copy EH notes to sequence.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41688 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/emit-rtl.c

index 78c4876..3e8dd6e 100644 (file)
@@ -1,3 +1,7 @@
+2001-04-27  Andrew Haley  <aph@cambridge.redhat.com>
+
+       * emit-rtl.c (try_split):  Copy EH notes to sequence.
+
 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
 
        * regmove.c (record_stack_memrefs): Catch all references to the
index 6fe21ae..37df9a1 100644 (file)
@@ -2585,7 +2585,8 @@ try_split (pat, trial, last)
       if (GET_CODE (seq) == SEQUENCE)
        {
          int i;
-
+         rtx eh_note;
+         
          /* Avoid infinite loop if any insn of the result matches 
             the original pattern.  */
          for (i = 0; i < XVECLEN (seq, 0); i++)
@@ -2607,6 +2608,19 @@ try_split (pat, trial, last)
                CALL_INSN_FUNCTION_USAGE (XVECEXP (seq, 0, i))
                  = CALL_INSN_FUNCTION_USAGE (trial);
 
+         /* Copy EH notes.  */
+         if ((eh_note = find_reg_note (trial, REG_EH_REGION, NULL_RTX)))
+           for (i = 0; i < XVECLEN (seq, 0); i++)
+             {
+               rtx insn = XVECEXP (seq, 0, i);
+               if (GET_CODE (insn) == CALL_INSN
+                   || (flag_non_call_exceptions 
+                       && may_trap_p (PATTERN (insn))))
+                 REG_NOTES (insn) 
+                   = gen_rtx_EXPR_LIST (REG_EH_REGION, XEXP (eh_note, 0),
+                                        REG_NOTES (insn));
+             }
+
          /* If there are LABELS inside the split insns increment the
             usage count so we don't delete the label.  */
          if (GET_CODE (trial) == INSN)