diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2019-01-24 21:48:01 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2019-01-24 21:48:01 +0100 |
commit | 53f2f08b057b6b57b5d8b99db10b63de0634715c (patch) | |
tree | 7683639a9a2979015a7efcd9b91d92cf8cb3caea /gcc/store-motion.c | |
parent | 83e23dcd562191e102a63f83822848fa5a3a68ea (diff) | |
download | gcc-53f2f08b057b6b57b5d8b99db10b63de0634715c.zip gcc-53f2f08b057b6b57b5d8b99db10b63de0634715c.tar.gz gcc-53f2f08b057b6b57b5d8b99db10b63de0634715c.tar.bz2 |
re PR rtl-optimization/88948 (ICE in elimination_costs_in_insn, at reload1.c:3640 since r264148)
PR target/88948
* rtl.h (prepare_copy_insn): New prototype.
* gcse.c (prepare_copy_insn): New function, split out from
process_insert_insn.
(process_insert_insn): Use prepare_copy_insn.
* store-motion.c (replace_store_insn): Use prepare_copy_insn
instead of gen_move_insn.
testsuite/ChangeLog:
PR target/88948
* gcc.target/i386/pr88948.c: New test.
From-SVN: r268249
Diffstat (limited to 'gcc/store-motion.c')
-rw-r--r-- | gcc/store-motion.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/store-motion.c b/gcc/store-motion.c index 28c4825..a0838f6 100644 --- a/gcc/store-motion.c +++ b/gcc/store-motion.c @@ -912,8 +912,7 @@ replace_store_insn (rtx reg, rtx_insn *del, basic_block bb, rtx_insn *insn; rtx mem, note, set; - mem = smexpr->pattern; - insn = gen_move_insn (reg, SET_SRC (single_set (del))); + insn = prepare_copy_insn (reg, SET_SRC (single_set (del))); unsigned int i; rtx_insn *temp; @@ -946,6 +945,7 @@ replace_store_insn (rtx reg, rtx_insn *del, basic_block bb, /* Now we must handle REG_EQUAL notes whose contents is equal to the mem; they are no longer accurate provided that they are reached by this definition, so drop them. */ + mem = smexpr->pattern; for (; insn != NEXT_INSN (BB_END (bb)); insn = NEXT_INSN (insn)) if (NONDEBUG_INSN_P (insn)) { |