]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/flow.c
*** empty log message ***
[gcc.git] / gcc / flow.c
index 7a1ec3ccfeeda01e4d9d15b49a6510deebac00eb..bc9096ffff12f2141ce5f59ce504243d94308f0f 100644 (file)
@@ -466,7 +466,7 @@ find_basic_blocks (f, nonlocal_label_list)
 
        BLOCK_NUM (insn) = i;
 
-       /* Don't separare a CALL_INSN from following CLOBBER insns.  This is
+       /* Don't separate a CALL_INSN from following CLOBBER insns.  This is
           a kludge that will go away when each CALL_INSN records its
           USE and CLOBBERs.  */
 
@@ -519,7 +519,8 @@ find_basic_blocks (f, nonlocal_label_list)
        if (GET_CODE (insn) == JUMP_INSN
            && GET_CODE (PATTERN (insn)) == SET
            && SET_DEST (PATTERN (insn)) == pc_rtx
-           && GET_CODE (SET_SRC (PATTERN (insn))) == REG)
+           && (GET_CODE (SET_SRC (PATTERN (insn))) == REG
+               || GET_CODE (SET_SRC (PATTERN (insn))) == MEM))
          {
            rtx x;
            for (x = label_value_list; x; x = XEXP (x, 1))
@@ -1281,6 +1282,11 @@ propagate_block (old, first, last, final, significant, bnum)
              NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
              NOTE_SOURCE_FILE (insn) = 0;
 
+             /* CC0 is now known to be dead.  Either this insn used it,
+                in which case it doesn't anymore, or clobbered it,
+                so the next insn can't use it.  */
+             cc0_live = 0;
+
              /* If this insn is copying the return value from a library call,
                 delete the entire library call.  */
              if (libcall_is_dead)
This page took 0.029006 seconds and 5 git commands to generate.