c4x.c (c4x_process_after_reload): Rework machdep insn splitting to not use output template.

* config/c4x/c4x.c (c4x_process_after_reload): Rework machdep insn
	splitting to not use output template.

From-SVN: r29579
This commit is contained in:
Michael Hayes 1999-09-22 07:58:01 +00:00 committed by Michael Hayes
parent 634f1f20df
commit 34de028f1d
2 changed files with 21 additions and 17 deletions

View File

@ -1,3 +1,8 @@
Wed Sep 22 19:56:25 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.c (c4x_process_after_reload): Rework machdep insn
splitting to not use output template.
Wed Sep 22 19:50:12 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.h (EXPAND_BUILTIN_VA_START): Call c4x_va_start.

View File

@ -2200,26 +2200,25 @@ c4x_process_after_reload (first)
if (insn_code_number == CODE_FOR_rptb_end)
c4x_rptb_insert(insn);
/* We split all insns here if they have a # for the output
template. */
if (1)
/* When the optimization level less than 2 we need to split
the insn here. Otherwise the calls to force_const_mem
will not work. */
if (optimize < 2)
{
const char *template;
rtx old = insn;
template = get_insn_template (insn_code_number, insn);
if (template && template[0] == '#' && template[1] == '\0')
/* Don't split the insn if it has been deleted. */
if (! INSN_DELETED_P (old))
insn = try_split (PATTERN(old), old, 1);
/* When not optimizing, the old insn will be still left around
with only the 'deleted' bit set. Transform it into a note
to avoid confusion of subsequent processing. */
if (INSN_DELETED_P (old))
{
rtx new = try_split (PATTERN(insn), insn, 0);
/* If we didn't split the insn, go away. */
if (new == insn && PATTERN (new) == PATTERN(insn))
fatal_insn ("Couldn't split pattern", insn);
PUT_CODE (insn, NOTE);
NOTE_SOURCE_FILE (insn) = 0;
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
insn = new;
PUT_CODE (old, NOTE);
NOTE_LINE_NUMBER (old) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (old) = 0;
}
}
}