From: Jan Hubicka Date: Thu, 7 Jun 2001 11:23:34 +0000 (+0200) Subject: Thu Jun 7 13:20:14 CEST 2001 Jan Hubicka X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b47f8cfcfc9a9c198ce1450359965f37bed2e0c9;p=gcc.git Thu Jun 7 13:20:14 CEST 2001 Jan Hubicka * expr.c (copy_blkmode_from_reg): Fix operand_subword_force call. Thu Jun 7 12:12:58 CEST 2001 Jan Hubicka * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e48f8d4cf17..199f94d8591 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +Thu Jun 7 13:20:14 CEST 2001 Jan Hubicka + + * expr.c (copy_blkmode_from_reg): Fix operand_subword_force call. + +Thu Jun 7 12:12:58 CEST 2001 Jan Hubicka + + * 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 * configure.in (sparc*-*-*): Check assembler R_SPARC_UA32 support. diff --git a/gcc/expr.c b/gcc/expr.c index 7fb0654d495..aaaab7a32f6 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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. */ diff --git a/gcc/final.c b/gcc/final.c index 7b36b1b4102..a3fe70d61cb 100644 --- a/gcc/final.c +++ b/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 diff --git a/gcc/toplev.c b/gcc/toplev.c index ba0864109b6..0e197cc2581 100644 --- a/gcc/toplev.c +++ b/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)