Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-pretty-print.c @ 63:b7f97abdc517 gcc-4.6-20100522
update gcc from gcc-4.5.0 to gcc-4.6
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 May 2010 12:47:05 +0900 |
parents | 77e2b8dfacca |
children | f6334be47118 |
line wrap: on
line diff
--- a/gcc/tree-pretty-print.c Fri Feb 12 23:41:23 2010 +0900 +++ b/gcc/tree-pretty-print.c Mon May 24 12:47:05 2010 +0900 @@ -1,5 +1,5 @@ /* Pretty formatting of GENERIC trees in C syntax. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Adapted from c-pretty-print.c by Diego Novillo <dnovillo@redhat.com> @@ -26,14 +26,13 @@ #include "tree.h" #include "output.h" #include "diagnostic.h" -#include "real.h" +#include "tree-pretty-print.h" #include "hashtab.h" #include "tree-flow.h" #include "langhooks.h" #include "tree-iterator.h" #include "tree-chrec.h" #include "tree-pass.h" -#include "fixed-value.h" #include "value-prof.h" #include "predict.h" @@ -199,6 +198,13 @@ pp_printf (buffer, "%c.%u", c, DECL_UID (node)); } } + if ((flags & TDF_ALIAS) && DECL_PT_UID (node) != DECL_UID (node)) + { + if (flags & TDF_NOUID) + pp_printf (buffer, "ptD.xxxx"); + else + pp_printf (buffer, "ptD.%u", DECL_PT_UID (node)); + } } /* Like the above, but used for pretty printing function calls. */ @@ -695,7 +701,10 @@ } else if (TREE_CODE (node) == VECTOR_TYPE) { - pp_string (buffer, "vector "); + pp_string (buffer, "vector"); + pp_character (buffer, '('); + pp_wide_integer (buffer, TYPE_VECTOR_SUBPARTS (node)); + pp_string (buffer, ") "); dump_generic_node (buffer, TREE_TYPE (node), spc, flags, false); } else if (TREE_CODE (node) == INTEGER_TYPE) @@ -2847,3 +2856,52 @@ pp_newline (buffer); INDENT (spc); } + +/* Handle a %K format for TEXT. Separate from default_tree_printer so + it can also be used in front ends. + %K: a statement, from which EXPR_LOCATION and TREE_BLOCK will be recorded. +*/ + +void +percent_K_format (text_info *text) +{ + tree t = va_arg (*text->args_ptr, tree), block; + gcc_assert (text->locus != NULL); + *text->locus = EXPR_LOCATION (t); + gcc_assert (pp_ti_abstract_origin (text) != NULL); + block = TREE_BLOCK (t); + *pp_ti_abstract_origin (text) = NULL; + while (block + && TREE_CODE (block) == BLOCK + && BLOCK_ABSTRACT_ORIGIN (block)) + { + tree ao = BLOCK_ABSTRACT_ORIGIN (block); + + while (TREE_CODE (ao) == BLOCK + && BLOCK_ABSTRACT_ORIGIN (ao) + && BLOCK_ABSTRACT_ORIGIN (ao) != ao) + ao = BLOCK_ABSTRACT_ORIGIN (ao); + + if (TREE_CODE (ao) == FUNCTION_DECL) + { + *pp_ti_abstract_origin (text) = block; + break; + } + block = BLOCK_SUPERCONTEXT (block); + } +} + +/* Print the identifier ID to PRETTY-PRINTER. */ + +void +pp_base_tree_identifier (pretty_printer *pp, tree id) +{ + if (pp_translate_identifiers (pp)) + { + const char *text = identifier_to_locale (IDENTIFIER_POINTER (id)); + pp_append_text (pp, text, text + strlen (text)); + } + else + pp_append_text (pp, IDENTIFIER_POINTER (id), + IDENTIFIER_POINTER (id) + IDENTIFIER_LENGTH (id)); +}