]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/63342 (ICE in loc_list_from_tree, at dwarf2out.c:14698)
authorJakub Jelinek <jakub@redhat.com>
Wed, 1 Oct 2014 21:01:39 +0000 (23:01 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 1 Oct 2014 21:01:39 +0000 (23:01 +0200)
PR debug/63342
* dwarf2out.c (loc_list_from_tree): Handle TARGET_MEM_REF and
SSA_NAME.

* gcc.dg/pr63342.c: New test.

From-SVN: r215784

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr63342.c [new file with mode: 0644]

index 23bfb747424c113aba89f4a518d222e30f8bdac1..8b5d62943d82001732afa82b8110e0d0128dea09 100644 (file)
@@ -1,5 +1,9 @@
 2014-10-01  Jakub Jelinek  <jakub@redhat.com>
 
+       PR debug/63342
+       * dwarf2out.c (loc_list_from_tree): Handle TARGET_MEM_REF and
+       SSA_NAME.
+
        PR target/63428
        * config/i386/i386.c (expand_vec_perm_pshufb): Fix up rperm[0]
        argument to avx2_permv2ti.
index f387e610114af00af61d5ac966b775972c988599..c68453e984b6765c357c192c4a023352c906f440 100644 (file)
@@ -13882,6 +13882,10 @@ loc_list_from_tree (tree loc, int want_address)
       have_address = 1;
       break;
 
+    case TARGET_MEM_REF:
+    case SSA_NAME:
+      return NULL;
+
     case COMPOUND_EXPR:
       return loc_list_from_tree (TREE_OPERAND (loc, 1), want_address);
 
index 6398f2f2f678d77f32ce30c5d4127e253d32c950..ac676afcfcca5ef53ae8f729ab84a51652077dbf 100644 (file)
@@ -1,5 +1,8 @@
 2014-10-01  Jakub Jelinek  <jakub@redhat.com>
 
+       PR debug/63342
+       * gcc.dg/pr63342.c: New test.
+
        PR target/63428
        * gcc.dg/torture/vshuf-4.inc: Move test 122 from EXPTESTS
        to test 24 in TESTS.
diff --git a/gcc/testsuite/gcc.dg/pr63342.c b/gcc/testsuite/gcc.dg/pr63342.c
new file mode 100644 (file)
index 0000000..499d508
--- /dev/null
@@ -0,0 +1,26 @@
+/* PR debug/63342 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2" } */
+/* { dg-additional-options "-fpic" { target fpic } } */
+
+static __thread double u[9], v[9];
+
+void
+foo (double **p, double **q)
+{
+  *p = u;
+  *q = v;
+}
+
+double
+bar (double x)
+{
+  int i;
+  double s = 0.0;
+  for (i = 0; i < 9; i++)
+    {
+      double a = x + v[i];
+      s += u[i] * a * a;
+    }
+  return s;
+}