aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-06-07 13:23:34 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-06-07 11:23:34 +0000
commitb47f8cfcfc9a9c198ce1450359965f37bed2e0c9 (patch)
treef98f1cc50930ff0dd1201a73f76eb698d5d8683c /gcc
parent43160d015f6a0d6657b2ad4e06a242918a4006c8 (diff)
downloadgcc-b47f8cfcfc9a9c198ce1450359965f37bed2e0c9.zip
gcc-b47f8cfcfc9a9c198ce1450359965f37bed2e0c9.tar.gz
gcc-b47f8cfcfc9a9c198ce1450359965f37bed2e0c9.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/expr.c3
-rw-r--r--gcc/final.c20
-rw-r--r--gcc/toplev.c27
4 files changed, 28 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e48f8d4..199f94d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/expr.c b/gcc/expr.c
index 7fb0654..aaaab7a 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 7b36b1b..a3fe70d 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 ba08641..0e197cc 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)