johannes 02/09/05 14:01:22
Modified: gcc gcse.c
Log:
Restore missing optimization needed by ellipticrypt (was lost in merge)
Revision Changes Path
1.19 +5 -38 gcc3/gcc/gcse.c
Index: gcse.c
===================================================================
RCS file: /cvs/Darwin/gcc3/gcc/gcse.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- gcse.c 2002/08/26 05:39:37 1.18
+++ gcse.c 2002/09/05 21:01:21 1.19
@@ -4222,39 +4222,7 @@
print_rtl (gcse_file, src);
fprintf (gcse_file, "\n");
}
-#if 0 /* APPLE MERGE what to do with disappeared local code below? */
-
- /* The original insn setting reg_used may or may not now be
- deletable. We leave the deletion to flow. */
}
-
- /* Try to propagate a CONST_INT into a conditional jump.
- We're pretty specific about what we will handle in this
- code, we can extend this as necessary over time.
-
- Right now the insn in question must look like
- (set (pc) (if_then_else ...)) */
- else if (alter_jumps
- && GET_CODE (insn) == JUMP_INSN
- && condjump_p (insn)
- && ! simplejump_p (insn))
- changed |= cprop_jump (bb, insn, reg_used->reg_rtx, src);
-
-#ifdef HAVE_cc0
- /* Similar code for machines that use a pair of CC0 setter and
- conditional jump insn. */
- else if (alter_jumps
- && GET_CODE (PATTERN (insn)) == SET
- && SET_DEST (PATTERN (insn)) == cc0_rtx
- && GET_CODE (NEXT_INSN (insn)) == JUMP_INSN
- && condjump_p (NEXT_INSN (insn))
- && ! simplejump_p (NEXT_INSN (insn))
- && cprop_cc0_jump (bb, insn, reg_used, src))
- {
- changed = 1;
- break;
- }
-#endif
/* APPLE LOCAL */
/* Look for int div by constant and expand if found. */
if ( GET_CODE (insn) == INSN
@@ -4274,13 +4242,13 @@
GET_CODE (XEXP (PATTERN (insn), 1))==DIV ? 0 : 1);
if ( result != target )
emit_move_insn (target, result);
- seq = gen_sequence ();
+ seq = get_insns ();
end_sequence ();
emit_insn_after (seq, insn);
PUT_CODE (insn, NOTE);
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (insn) = 0;
- update_bb_for_insn (bb);
+ update_bb_for_insn (BLOCK_FOR_INSN (insn));
changed = 1;
break;
}
@@ -4302,19 +4270,18 @@
GET_CODE (XEXP (note, 0))==DIV ? 0 : 1);
if ( result != target )
emit_move_insn (target, result);
- seq = gen_sequence ();
+ seq = get_insns ();
end_sequence ();
emit_insn_after (seq, insn);
PUT_CODE (insn, NOTE);
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (insn) = 0;
- update_bb_for_insn (bb);
+ update_bb_for_insn (BLOCK_FOR_INSN (insn));
changed = 1;
break;
-#endif
}
+ /* APPLE LOCAL end */
}
- /* APPLE LOCAL end */
else if (GET_CODE (src) == REG
&& REGNO (src) >= FIRST_PSEUDO_REGISTER
&& REGNO (src) != regno)