On 10/25/14 09:16, Marek Polacek wrote:
This patch teaches the compiler to also print the typedef-stripped
version of a type when appropriate.  C++ FE does this for a few
years now.  With this patch we're able to say
note: expected 'B * {aka struct A *}' but argument is of type 'struct B *'
Compare that with
note: expected 'struct B *' but argument is of type 'struct B *'
that we output until recently.

We must be careful not to print the typedef-stripped part if it's
identical to the non-stripped part.  I worked it out by using
a temporary c_pretty_printer and an obstack (C++'s type_to_string
uses an obstack too).

Bootstrapped/regtested on x86_64-linux and ppc64-linux, ok for trunk?

2014-10-25  Marek Polacek  <pola...@redhat.com>

        * c-objc-common.c (c_tree_printer) <case 'T'>: For a typedef name,
        print the stripped version as well, if they're not the same.

        * gcc.dg/diag-aka-1.c: New test.
        * gcc.dg/pr13804-1.c: Adjust dg-error.
        * gcc.dg/redecl-14.c: Likewise.
        * gcc.dg/pr56980.c: Adjust dg-message.
OK.

Jeff

Reply via email to