diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2017-12-18 21:16:19 +0100 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2017-12-18 21:16:19 +0100 |
commit | aa8ec7fb260489a0af7578c727c4b41ebc1ae593 (patch) | |
tree | bc3a5180cbac1a4b320897ff68c2487a50a04b1c /gcc/rtlanal.c | |
parent | ab6e54a684f6fcbf9eed989d170905fd889e19cc (diff) | |
download | gcc-aa8ec7fb260489a0af7578c727c4b41ebc1ae593.zip gcc-aa8ec7fb260489a0af7578c727c4b41ebc1ae593.tar.gz gcc-aa8ec7fb260489a0af7578c727c4b41ebc1ae593.tar.bz2 |
rtlanal: dead_or_set_regno_p should handle CLOBBER (PR83424)
In PR83424 combine's move_deaths puts a REG_DEAD note in the wrong place
because dead_or_set_regno_p does not account for CLOBBER insns. This
fixes it.
PR rtl-optimization/83424
* rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
gcc/testsuite/
PR rtl-optimization/83424
* gcc.dg/pr83424.c: New testsuite.
From-SVN: r255787
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index c91f3f1..9f6988b 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -2082,7 +2082,7 @@ dead_or_set_regno_p (const rtx_insn *insn, unsigned int test_regno) if (GET_CODE (pattern) == COND_EXEC) return 0; - if (GET_CODE (pattern) == SET) + if (GET_CODE (pattern) == SET || GET_CODE (pattern) == CLOBBER) return covers_regno_p (SET_DEST (pattern), test_regno); else if (GET_CODE (pattern) == PARALLEL) { |