diff options
author | Jeff Law <law@redhat.com> | 2018-02-12 11:32:18 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2018-02-12 11:32:18 -0700 |
commit | 966a140df68bf3e2d378fb9b68a8afb7d80b34d6 (patch) | |
tree | e89189e2c2395ff1659a47d1c39d4c44e3aea9be /gcc/cse.c | |
parent | fa2faaa80708b671806849a40bcabff3eb5a1a1e (diff) | |
download | gcc-966a140df68bf3e2d378fb9b68a8afb7d80b34d6.zip gcc-966a140df68bf3e2d378fb9b68a8afb7d80b34d6.tar.gz gcc-966a140df68bf3e2d378fb9b68a8afb7d80b34d6.tar.bz2 |
cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when successfully back substituting a reg.
* cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
successfully back substituting a reg.
* gcc.c-torture/compile/reg-args-size.c: New test.
From-SVN: r257598
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -4256,6 +4256,15 @@ try_back_substitute_reg (rtx set, rtx_insn *insn) && (reg_mentioned_p (dest, XEXP (note, 0)) || rtx_equal_p (src, XEXP (note, 0)))) remove_note (insn, note); + + /* If INSN has a REG_ARGS_SIZE note, move it to PREV. */ + note = find_reg_note (insn, REG_ARGS_SIZE, NULL_RTX); + if (note != 0) + { + remove_note (insn, note); + gcc_assert (!find_reg_note (prev, REG_ARGS_SIZE, NULL_RTX)); + set_unique_reg_note (prev, REG_ARGS_SIZE, XEXP (note, 0)); + } } } } |