aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2017-12-07 17:50:54 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2017-12-07 17:50:54 +0000
commit75214935bee043e659ca7172a84451ded10e8987 (patch)
treed8573e0592c70f7dbd5aff292a730f6d78f007be /gcc/lra.c
parent47f5f7e74920fe65f5ebe4737a9c70c34178990a (diff)
downloadgcc-75214935bee043e659ca7172a84451ded10e8987.zip
gcc-75214935bee043e659ca7172a84451ded10e8987.tar.gz
gcc-75214935bee043e659ca7172a84451ded10e8987.tar.bz2
re PR target/83252 (Wrong code with "-march=skylake-avx512 -O3")
2017-12-07 Vladimir Makarov <vmakarov@redhat.com> PR target/83252 PR rtl-optimization/80818 * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER always early clobbered. * lra-lives.c (process_bb_lives): Check input hard regs for early clobbered non-operand hard reg. From-SVN: r255471
Diffstat (limited to 'gcc/lra.c')
-rw-r--r--gcc/lra.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/gcc/lra.c b/gcc/lra.c
index 0d76eac..3fd15ee 100644
--- a/gcc/lra.c
+++ b/gcc/lra.c
@@ -1476,15 +1476,11 @@ add_regs_to_insn_regno_info (lra_insn_recog_data_t data, rtx x,
add_regs_to_insn_regno_info (data, SET_SRC (x), insn, OP_IN, false, 0);
break;
case CLOBBER:
- {
- int code = INSN_CODE (insn);
-
- /* We treat clobber of non-operand hard registers as early
- clobber (the behavior is expected from asm). */
- add_regs_to_insn_regno_info (data, XEXP (x, 0), insn, OP_OUT,
- code < 0, code < 0 ? ALL_ALTERNATIVES : 0);
- break;
- }
+ /* We treat clobber of non-operand hard registers as early
+ clobber. */
+ add_regs_to_insn_regno_info (data, XEXP (x, 0), insn, OP_OUT,
+ true, ALL_ALTERNATIVES);
+ break;
case PRE_INC: case PRE_DEC: case POST_INC: case POST_DEC:
add_regs_to_insn_regno_info (data, XEXP (x, 0), insn, OP_INOUT, false, 0);
break;