diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/print-rtl.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20020530-1.c | 20 |
4 files changed, 30 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd4663b..347b5ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 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 * combine.c (combine_simplify_rtx) [SUBREG]: Don't ICE if VOIDmode operand subreg cannot be simplified. diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c index da8a052..f4c92d4 100644 --- a/gcc/print-rtl.c +++ b/gcc/print-rtl.c @@ -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))); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a0a0de5..91db3bc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..b2d0ecd --- /dev/null +++ b/gcc/testsuite/gcc.dg/20020530-1.c @@ -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; +} |