diff options
author | Ilya Enkovich <enkovich.gnu@gmail.com> | 2015-09-30 13:08:01 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2015-09-30 13:08:01 +0000 |
commit | 21b820644d11c7a320421c532ed96cf3454ee16e (patch) | |
tree | 6626b14b12e80d9bda0ef3af477ded5843cfd47c /gcc | |
parent | eea10f8c503588e4e76693143ab52dfd84ccfc16 (diff) | |
download | gcc-21b820644d11c7a320421c532ed96cf3454ee16e.zip gcc-21b820644d11c7a320421c532ed96cf3454ee16e.tar.gz gcc-21b820644d11c7a320421c532ed96cf3454ee16e.tar.bz2 |
i386.c (scalar_chain::analyze_register_chain): Ignore debug insns.
gcc/
* config/i386/i386.c (scalar_chain::analyze_register_chain): Ignore
debug insns.
(scalar_chain::convert_reg): Likewise.
gcc/testsuite/
* gcc.target/i386/pr67761.c: New test.
From-SVN: r228292
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr67761.c | 13 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4dfd3a..1a799c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-09-30 Ilya Enkovich <enkovich.gnu@gmail.com> + + * config/i386/i386.c (scalar_chain::analyze_register_chain): Ignore + debug insns. + (scalar_chain::convert_reg): Likewise. + 2015-09-30 Richard Biener <rguenther@suse.de> * builtins.c: Add comment that no new simplifications shouldd diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index be639e0..fe9c756 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2919,6 +2919,10 @@ scalar_chain::analyze_register_chain (bitmap candidates, df_ref ref) for (chain = DF_REF_CHAIN (ref); chain; chain = chain->next) { unsigned uid = DF_REF_INSN_UID (chain->ref); + + if (!NONDEBUG_INSN_P (DF_REF_INSN (chain->ref))) + continue; + if (!DF_REF_REG_MEM_P (chain->ref)) { if (bitmap_bit_p (insns, uid)) @@ -3279,7 +3283,7 @@ scalar_chain::convert_reg (unsigned regno) bitmap_clear_bit (conv, DF_REF_INSN_UID (ref)); } } - else + else if (NONDEBUG_INSN_P (DF_REF_INSN (ref))) { replace_rtx (DF_REF_INSN (ref), reg, scopy); df_insn_rescan (DF_REF_INSN (ref)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8192f18..afab766 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-09-30 Ilya Enkovich <enkovich.gnu@gmail.com> + + * gcc.target/i386/pr67761.c: New test. + 2015-09-30 Marek Polacek <polacek@redhat.com> PR c/67730 diff --git a/gcc/testsuite/gcc.target/i386/pr67761.c b/gcc/testsuite/gcc.target/i386/pr67761.c new file mode 100644 index 0000000..ff813f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr67761.c @@ -0,0 +1,13 @@ +/* PR target/pr67761 */ +/* { dg-do compile { target { ia32 } } } */ +/* { dg-options "-O2 -march=slm -g" } */ +/* { dg-final { scan-assembler "paddq" } } */ + +void +test (long long *values, long long val, long long delta) +{ + unsigned i; + + for (i = 0; i < 128; i++, val += delta) + values[i] = val; +} |