re PR c/6809 (GCC 3.1 cc1 crashes if -fverbose-asm is specified)
authorJakub Jelinek <jakub@redhat.com>
Mon, 10 Jun 2002 21:50:10 +0000 (23:50 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 10 Jun 2002 21:50:10 +0000 (23:50 +0200)
PR c/6809
* print-rtl.c (print_mem_expr): Don't crash on unnamed fields.

* gcc.dg/20020530-1.c: New test.

From-SVN: r54463

gcc/ChangeLog
gcc/print-rtl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20020530-1.c [new file with mode: 0644]

index fd4663b875fb615a9df414a6702f1791ce6ffe78..347b5bacc13def148f691b0dc98b63f38c1a4020 100644 (file)
@@ -1,3 +1,8 @@
+2002-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/6809
+       * print-rtl.c (print_mem_expr): Don't crash on unnamed fields.
+
 2002-06-10  Jakub Jelinek  <jakub@redhat.com>
 
        PR optimization/6842
index da8a0520a05fd6af6774ea8c4686d6627439c81b..f4c92d4ca629094c1dcab4758dc90fe286bec5a4 100644 (file)
@@ -88,8 +88,9 @@ print_mem_expr (outfile, expr)
        print_mem_expr (outfile, TREE_OPERAND (expr, 0));
       else
        fputs (" <variable>", outfile);
-      fprintf (outfile, ".%s",
-              IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (expr, 1))));
+      if (DECL_NAME (TREE_OPERAND (expr, 1)))
+       fprintf (outfile, ".%s",
+                IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (expr, 1))));
     }
   else if (DECL_NAME (expr))
     fprintf (outfile, " %s", IDENTIFIER_POINTER (DECL_NAME (expr)));
index a0a0de58aaea8d68c3e80357ab1f506f3bf6e244..91db3bc36ab0c1ac512d80eb59cad875be367a3e 100644 (file)
@@ -6,6 +6,8 @@
 
        * gcc.dg/20020531-1.c: New test.
 
+       * gcc.dg/20020530-1.c: New test.
+
 2002-06-07  Roger Sayle  <roger@eyesopen.com>
 
        * gcc.dg/20020607-2.c: New test case.
diff --git a/gcc/testsuite/gcc.dg/20020530-1.c b/gcc/testsuite/gcc.dg/20020530-1.c
new file mode 100644 (file)
index 0000000..b2d0ecd
--- /dev/null
@@ -0,0 +1,20 @@
+/* PR c/6809
+   Test -fverbose-asm with unnamed fields.  */
+/* { dg-do compile } */
+/* { dg-options "-fverbose-asm" } */
+
+typedef union U
+{
+  struct
+  {
+    unsigned int a;
+    int b;
+  };
+  long long c;
+} *T;
+
+int foo (T x)
+{
+  int r = x->a + x->b;
+  return r;
+}