aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Enkovich <enkovich.gnu@gmail.com>2015-09-30 13:08:01 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2015-09-30 13:08:01 +0000
commit21b820644d11c7a320421c532ed96cf3454ee16e (patch)
tree6626b14b12e80d9bda0ef3af477ded5843cfd47c /gcc
parenteea10f8c503588e4e76693143ab52dfd84ccfc16 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/i386/pr67761.c13
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;
+}