jump.c (jump_optimize_1): Don't delete dead stores here.
authorJohn Wehle <john@feith.com>
Fri, 13 Apr 2001 04:10:56 +0000 (04:10 +0000)
committerJohn Wehle <wehle@gcc.gnu.org>
Fri, 13 Apr 2001 04:10:56 +0000 (04:10 +0000)
* jump.c (jump_optimize_1): Don't delete dead stores here.
* toplev.c (rest_of_compilation): Call delete_trivially_dead_insns
prior to running jump optimize before cse2.

From-SVN: r41320

gcc/ChangeLog
gcc/jump.c
gcc/toplev.c

index f079d10abdae82eea7e9c097c0abf5a975f987b5..4f431b6fadc199ba713f9fef353d5cba759f5828 100644 (file)
@@ -1,3 +1,9 @@
+Fri Apr 13 00:09:22 EDT 2001  John Wehle  (john@feith.com)
+
+       * jump.c (jump_optimize_1): Don't delete dead stores here.
+       * toplev.c (rest_of_compilation): Call delete_trivially_dead_insns
+       prior to running jump optimize before cse2.
+
 2001-04-12  Stan Shebs  <shebs@apple.com>
 
        * objc/objc-act.c: Remove all code ifdefed with the never-used
index 6bd6edd9c4883e57d83b947817cab3eed420b8d3..e4a7cf8222831f716a41619bd59717a44f79a3ac 100644 (file)
@@ -248,35 +248,6 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan,
   if (noop_moves)
     delete_noop_moves (f);
 
-  /* If we haven't yet gotten to reload and we have just run regscan,
-     delete any insn that sets a register that isn't used elsewhere.
-     This helps some of the optimizations below by having less insns
-     being jumped around.  */
-
-  if (optimize && ! reload_completed && after_regscan)
-    for (insn = f; insn; insn = next)
-      {
-       rtx set = single_set (insn);
-
-       next = NEXT_INSN (insn);
-
-       if (set && GET_CODE (SET_DEST (set)) == REG
-           && REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER
-           && REGNO_FIRST_UID (REGNO (SET_DEST (set))) == INSN_UID (insn)
-           /* We use regno_last_note_uid so as not to delete the setting
-              of a reg that's used in notes.  A subsequent optimization
-              might arrange to use that reg for real.  */
-           && REGNO_LAST_NOTE_UID (REGNO (SET_DEST (set))) == INSN_UID (insn)
-           && ! side_effects_p (SET_SRC (set))
-           && ! find_reg_note (insn, REG_RETVAL, 0)
-           /* An ADDRESSOF expression can turn into a use of the internal arg
-              pointer, so do not delete the initialization of the internal
-              arg pointer yet.  If it is truly dead, flow will delete the
-              initializing insn.  */
-           && SET_DEST (set) != current_function_internal_arg_pointer)
-         delete_insn (insn);
-      }
-
   /* Now iterate optimizing jumps until nothing changes over one pass.  */
   changed = 1;
   old_max_reg = max_reg_num ();
index 043c0b633575baff745917ffed478e7d71b61382..ae4de0e46ed3f374dc20dcede01894765861939e 100644 (file)
@@ -3224,6 +3224,12 @@ rest_of_compilation (decl)
             ??? Rework to not call reg_scan so often.  */
          timevar_push (TV_JUMP);
 
+         /* The previous call to loop_optimize makes some instructions
+            trivially dead.  We delete those instructions now in the
+            hope that doing so will make the heuristics in jump work
+            better and possibly speed up compilation.  */
+         delete_trivially_dead_insns (insns, max_reg_num ());
+
          reg_scan (insns, max_reg_num (), 0);
          jump_optimize (insns, !JUMP_CROSS_JUMP,
                         !JUMP_NOOP_MOVES, JUMP_AFTER_REGSCAN);