mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-30 01:49:47 +08:00
(shorten_branches): Split all insns before computing insn lengths.
(shorten_branches): Split all insns before computing insn lengths. (final_scan_insn, case default): If HAVE_ATTR_length defined, call abort for any insn that has a '#' output template. From-SVN: r13744
This commit is contained in:
parent
aff4d29bf4
commit
3d14e82f05
14
gcc/final.c
14
gcc/final.c
@ -655,6 +655,13 @@ shorten_branches (first)
|
||||
rtx body;
|
||||
int uid;
|
||||
|
||||
/* In order to make sure that all instructions have valid length info,
|
||||
we must split them before we compute the address/length info. */
|
||||
|
||||
for (insn = NEXT_INSN (first); insn; insn = NEXT_INSN (insn))
|
||||
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
|
||||
insn = try_split (PATTERN (insn), insn, 1);
|
||||
|
||||
/* Compute maximum UID and allocate arrays. */
|
||||
for (insn = first; insn; insn = NEXT_INSN (insn))
|
||||
if (INSN_UID (insn) > max_uid)
|
||||
@ -2090,6 +2097,13 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
|
||||
if (new == insn && PATTERN (new) == body)
|
||||
abort ();
|
||||
|
||||
#ifdef HAVE_ATTR_length
|
||||
/* This instruction should have been split in shorten_branches,
|
||||
to ensure that we would have valid length info for the
|
||||
splitees. */
|
||||
abort ();
|
||||
#endif
|
||||
|
||||
new_block = 0;
|
||||
return new;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user