Thu Jun 7 13:20:14 CEST 2001 Jan Hubicka <jh@suse.cz>
* expr.c (copy_blkmode_from_reg): Fix operand_subword_force call. Thu Jun 7 12:12:58 CEST 2001 Jan Hubicka <jh@suse.cz> * toplev.c (rest_of_compilation): Call split_all_insns before reg-stack and shorten-branches. Do shorten-branches after reg-stack. * final.c (shorten_branches): Remove insn splitting code. From-SVN: r42956
This commit is contained in:
parent
43160d015f
commit
b47f8cfcfc
@ -1,3 +1,14 @@
|
||||
Thu Jun 7 13:20:14 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* expr.c (copy_blkmode_from_reg): Fix operand_subword_force call.
|
||||
|
||||
Thu Jun 7 12:12:58 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* toplev.c (rest_of_compilation): Call split_all_insns
|
||||
before reg-stack and shorten-branches. Do shorten-branches
|
||||
after reg-stack.
|
||||
* final.c (shorten_branches): Remove insn splitting code.
|
||||
|
||||
2001-06-07 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* configure.in (sparc*-*-*): Check assembler R_SPARC_UA32 support.
|
||||
|
@ -2200,7 +2200,8 @@ copy_blkmode_from_reg (tgtblk, srcreg, type)
|
||||
(the first time through). */
|
||||
if (xbitpos % BITS_PER_WORD == 0
|
||||
|| xbitpos == big_endian_correction)
|
||||
src = operand_subword_force (srcreg, xbitpos / BITS_PER_WORD, BLKmode);
|
||||
src = operand_subword_force (srcreg, xbitpos / BITS_PER_WORD,
|
||||
GET_MODE (srcreg));
|
||||
|
||||
/* We need a new destination operand each time bitpos is on
|
||||
a word boundary. */
|
||||
|
20
gcc/final.c
20
gcc/final.c
@ -960,26 +960,6 @@ shorten_branches (first)
|
||||
int uid;
|
||||
rtx align_tab[MAX_CODE_ALIGN];
|
||||
|
||||
/* 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 (INSN_P (insn))
|
||||
{
|
||||
rtx old = insn;
|
||||
/* 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))
|
||||
{
|
||||
PUT_CODE (old, NOTE);
|
||||
NOTE_LINE_NUMBER (old) = NOTE_INSN_DELETED;
|
||||
NOTE_SOURCE_FILE (old) = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* We must do some computations even when not actually shortening, in
|
||||
|
27
gcc/toplev.c
27
gcc/toplev.c
@ -3685,18 +3685,16 @@ rest_of_compilation (decl)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef STACK_REGS
|
||||
/* ??? Do this before shorten branches so that we aren't creating
|
||||
insns too late and fail sanity checks in final. */
|
||||
convert_to_eh_region_ranges ();
|
||||
#endif
|
||||
|
||||
/* Shorten branches.
|
||||
|
||||
Note this must run before reg-stack because of death note (ab)use
|
||||
in the ia32 backend. */
|
||||
timevar_push (TV_SHORTEN_BRANCH);
|
||||
shorten_branches (get_insns ());
|
||||
if (0
|
||||
#ifdef HAVE_ATTR_length
|
||||
|| 1
|
||||
#endif
|
||||
#ifdef STACK_REGS
|
||||
|| 1
|
||||
#endif
|
||||
)
|
||||
split_all_insns (0);
|
||||
timevar_pop (TV_SHORTEN_BRANCH);
|
||||
|
||||
#ifdef STACK_REGS
|
||||
@ -3709,9 +3707,14 @@ rest_of_compilation (decl)
|
||||
timevar_pop (TV_REG_STACK);
|
||||
|
||||
ggc_collect ();
|
||||
#endif
|
||||
|
||||
convert_to_eh_region_ranges ();
|
||||
#endif
|
||||
|
||||
/* Shorten branches. */
|
||||
timevar_push (TV_SHORTEN_BRANCH);
|
||||
shorten_branches (get_insns ());
|
||||
timevar_pop (TV_SHORTEN_BRANCH);
|
||||
|
||||
current_function_nothrow = nothrow_function_p ();
|
||||
if (current_function_nothrow)
|
||||
|
Loading…
Reference in New Issue
Block a user