Mercurial > hg > CbC > CbC_gcc
diff gcc/c-objc-common.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children |
line wrap: on
line diff
--- a/gcc/c-objc-common.c Tue May 25 18:58:51 2010 +0900 +++ b/gcc/c-objc-common.c Tue Mar 22 17:18:12 2011 +0900 @@ -24,7 +24,7 @@ #include "tree.h" #include "c-tree.h" #include "intl.h" -#include "c-pretty-print.h" +#include "c-family/c-pretty-print.h" #include "flags.h" #include "diagnostic.h" #include "tree-pretty-print.h" @@ -79,21 +79,22 @@ %E: an identifier or expression, %F: a function declaration, %T: a type. + %V: a list of type qualifiers from a tree. + %v: an explicit list of type qualifiers + %#v: an explicit list of type qualifiers of a function type. - These format specifiers form a subset of the format specifiers set used - by the C++ front-end. Please notice when called, the `%' part was already skipped by the diagnostic machinery. */ static bool c_tree_printer (pretty_printer *pp, text_info *text, const char *spec, int precision, bool wide, bool set_locus, bool hash) { - tree t; + tree t = NULL_TREE; tree name; c_pretty_printer *cpp = (c_pretty_printer *) pp; pp->padding = pp_none; - if (precision != 0 || wide || hash) + if (precision != 0 || wide) return false; if (*spec == 'K') @@ -102,10 +103,12 @@ return true; } - t = va_arg (*text->args_ptr, tree); - - if (set_locus && text->locus) - *text->locus = DECL_SOURCE_LOCATION (t); + if (*spec != 'v') + { + t = va_arg (*text->args_ptr, tree); + if (set_locus && text->locus) + *text->locus = DECL_SOURCE_LOCATION (t); + } switch (*spec) { @@ -155,6 +158,14 @@ pp_expression (cpp, t); return true; + case 'V': + pp_c_type_qualifier_list (cpp, t); + return true; + + case 'v': + pp_c_cv_qualifiers (cpp, va_arg (*text->args_ptr, int), hash); + return true; + default: return false; } @@ -173,8 +184,13 @@ void c_initialize_diagnostics (diagnostic_context *context) { - pretty_printer *base = context->printer; - c_pretty_printer *pp = XNEW (c_pretty_printer); + pretty_printer *base; + c_pretty_printer *pp; + + c_common_initialize_diagnostics (context); + + base = context->printer; + pp = XNEW (c_pretty_printer); memcpy (pp_base (pp), base, sizeof (pretty_printer)); pp_c_pretty_printer_init (pp); context->printer = (pretty_printer *) pp;