From b890a4410b40417cee25c67feb741c60a4c31be8 Mon Sep 17 00:00:00 2001
From: Alexandre Oliva <aoliva@redhat.com>
Date: Tue, 9 Feb 2016 18:26:00 +0000
Subject: [PATCH] re PR target/69634 (-fcompare-debug failure (length) with -O2
 -fno-dce -fschedule-insns -fno-tree-vrp @ i686)

2016-02-11  Alexandre Oliva  <aoliva@redhat.com>

	PR target/69634
	* regstat.c (regstat_bb_compute_calls_crossed): Disregard
	debug insns.

	PR target/69634
	* gcc.dg/pr69634.c: New.

From-SVN: r233250
---
 gcc/ChangeLog                  |  6 ++++++
 gcc/regstat.c                  |  2 +-
 gcc/testsuite/ChangeLog        |  5 +++++
 gcc/testsuite/gcc.dg/pr69634.c | 21 +++++++++++++++++++++
 4 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.dg/pr69634.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bcb9e8472200..c4711f35c03e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-02-11  Alexandre Oliva  <aoliva@redhat.com>
+
+	PR target/69634
+	* regstat.c (regstat_bb_compute_calls_crossed): Disregard
+	debug insns.
+
 2016-02-09  Uros Bizjak  <ubizjak@gmail.com>
 
 	* config/i386/i386.md (insv<mode>_1): Use gen_int_mode to
diff --git a/gcc/regstat.c b/gcc/regstat.c
index af5e475ddda6..c05b69f6c1a8 100644
--- a/gcc/regstat.c
+++ b/gcc/regstat.c
@@ -444,7 +444,7 @@ regstat_bb_compute_calls_crossed (unsigned int bb_index, bitmap live)
       struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
       unsigned int regno;
 
-      if (!INSN_P (insn))
+      if (!NONDEBUG_INSN_P (insn))
 	continue;
 
       /* Process the defs.  */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c15fe5f3aa65..5fab7cb797d0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-11  Alexandre Oliva  <aoliva@redhat.com>
+
+	PR target/69634
+	* gcc.dg/pr69634.c: New.
+
 2016-02-09  Richard Biener  <rguenther@suse.de>
 
 	* gcc.dg/vect/vect-mask-store-move-1.c: Add missing space.
diff --git a/gcc/testsuite/gcc.dg/pr69634.c b/gcc/testsuite/gcc.dg/pr69634.c
new file mode 100644
index 000000000000..59e373907149
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr69634.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-vrp -fcompare-debug" } */
+/* { dg-additional-options "-Wno-psabi -mno-sse" { target i?86-*-* x86_64-*-* } } */
+
+typedef unsigned short u16;
+typedef short v16u16 __attribute__ ((vector_size (16)));
+typedef unsigned v16u32 __attribute__ ((vector_size (16)));
+typedef unsigned long long v16u64 __attribute__ ((vector_size (16)));
+
+u16
+foo(u16 u16_1, v16u16 v16u16_0, v16u32 v16u64_0, v16u16 v16u16_1, v16u32 v16u32_1, v16u64 v16u64_1)
+{
+  v16u64_1 /= (v16u64){~v16u32_1[1]};
+  u16_1 = 0;
+  u16_1 /= v16u32_1[2];
+  v16u64_1 -= (v16u64) v16u16_1;
+  u16_1 >>= 1;
+  u16_1 -= ~0;
+  v16u16_1 /= (v16u16){~u16_1, 1 - v16u64_0[0], 0xffb6};
+  return u16_1 + v16u16_0[1] + v16u16_1[3] + v16u64_1[0] + v16u64_1[1];
+}
-- 
GitLab