2000-05-15 Richard Henderson <rth@cygnus.com>
+ * ifcvt.c (cond_exec_process_insns): Drop USE and CLOBBER insns
+ that get in the way after reload.
+ (cond_exec_process_if_block): Skip a label heading THEN block.
+
+2000-05-15 Richard Henderson <rth@cygnus.com>
+
* varasm.c (output_constant_pool): Abort instead of converting
(improperly) deleted labels to zero.
if (GET_CODE (insn) != INSN && GET_CODE (insn) != CALL_INSN)
abort ();
+ /* Remove USE and CLOBBER insns that get in the way. */
+ if (reload_completed
+ && (GET_CODE (PATTERN (insn)) == USE
+ || GET_CODE (PATTERN (insn)) == CLOBBER))
+ {
+ /* ??? Ug. Actually unlinking the thing is problematic,
+ given what we'd have to coordinate with our callers. */
+ PUT_CODE (insn, NOTE);
+ NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
+ NOTE_SOURCE_FILE (insn) = 0;
+ goto insn_done;
+ }
+
/* Last insn wasn't last? */
if (must_be_last)
return FALSE;
then_start = then_bb->head;
then_end = then_bb->end;
+ /* Skip a label heading THEN block. */
+ if (GET_CODE (then_start) == CODE_LABEL)
+ then_start = NEXT_INSN (then_start);
+
/* Skip a (use (const_int 0)) or branch as the final insn. */
if (GET_CODE (then_end) == INSN
&& GET_CODE (PATTERN (then_end)) == USE