summaryrefslogtreecommitdiff
path: root/gcc/tree-pretty-print.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-18 23:27:40 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-18 23:27:40 +0000
commit8c1f25621d77ab8ac90e1f0fe27a032c96a38998 (patch)
treecf65454be302c6501997056e75641b5889c7ca52 /gcc/tree-pretty-print.c
parent4b85d273cef281072cd838625c7b6b62f6b22886 (diff)
downloadgcc-8c1f25621d77ab8ac90e1f0fe27a032c96a38998.tar.gz
PR 40488
* tree-pass.h (TDF_ASMNAME): New. * tree-dump.c (dump_options): Add asmname. * doc/invoke.texi: Document it. * tree-pretty-print.c (maybe_dump_asm_name): Merge into... (dump_decl_name): ...here. (dump_function_name): New flags arg; mind TDF_ASMNAME. (dump_generic_node): Update dump_function_name calls. (print_call_name): New flags arg; update all dump calls. * diagnostic.h (print_call_name): Update. * gimple-pretty-print.c (dump_gimple_call): Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148685 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-pretty-print.c')
-rw-r--r--gcc/tree-pretty-print.c88
1 files changed, 29 insertions, 59 deletions
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index cd8033a1523..14269077715 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -155,72 +155,42 @@ print_generic_expr (FILE *file, tree t, int flags)
dump_generic_node (&buffer, t, 0, flags, false);
}
-/* Dump the assembly name of a decl node if it's sufficiently different
- from the decl name. */
-
-static void
-maybe_dump_asm_name (pretty_printer *buffer, tree node, int flags)
-{
- tree n, a;
-
- if (flags & TDF_SLIM)
- return;
- if (DECL_NAME (node) == NULL || !DECL_ASSEMBLER_NAME_SET_P (node))
- return;
-
- n = DECL_NAME (node);
- a = DECL_ASSEMBLER_NAME (node);
- if (n == a)
- return;
- if (strncmp (IDENTIFIER_POINTER (n), "__builtin_", 10) == 0)
- return;
-
- pp_space (buffer);
- pp_character (buffer, '[');
- pp_tree_identifier (buffer, a);
- pp_character (buffer, ']');
-}
-
/* Dump the name of a _DECL node and its DECL_UID if TDF_UID is set
in FLAGS. */
static void
dump_decl_name (pretty_printer *buffer, tree node, int flags)
{
- tree t = node;
-
- if (DECL_NAME (t))
- pp_tree_identifier (buffer, DECL_NAME (t));
- if ((flags & TDF_UID)
- || DECL_NAME (t) == NULL_TREE)
+ if (DECL_NAME (node))
+ {
+ if ((flags & TDF_ASMNAME) && DECL_ASSEMBLER_NAME_SET_P (node))
+ pp_tree_identifier (buffer, DECL_ASSEMBLER_NAME (node));
+ else
+ pp_tree_identifier (buffer, DECL_NAME (node));
+ }
+ if ((flags & TDF_UID) || DECL_NAME (node) == NULL_TREE)
{
- if (TREE_CODE (t) == LABEL_DECL
- && LABEL_DECL_UID (t) != -1)
- pp_printf (buffer, "L.%d", (int) LABEL_DECL_UID (t));
+ if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
+ pp_printf (buffer, "L.%d", (int) LABEL_DECL_UID (node));
else
{
- char c = TREE_CODE (t) == CONST_DECL ? 'C' : 'D';
- pp_printf (buffer, "%c.%u", c, DECL_UID (t));
+ char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
+ pp_printf (buffer, "%c.%u", c, DECL_UID (node));
}
}
-
- maybe_dump_asm_name (buffer, node, flags);
}
/* Like the above, but used for pretty printing function calls. */
static void
-dump_function_name (pretty_printer *buffer, tree node)
+dump_function_name (pretty_printer *buffer, tree node, int flags)
{
- if (DECL_NAME (node))
- {
- if (TREE_CODE (node) == NOP_EXPR)
- node = TREE_OPERAND (node, 0);
- pp_string (buffer, lang_hooks.decl_printable_name (node, 1));
- maybe_dump_asm_name (buffer, node, 0);
- }
+ if (TREE_CODE (node) == NOP_EXPR)
+ node = TREE_OPERAND (node, 0);
+ if (DECL_NAME (node) && (flags & TDF_ASMNAME) == 0)
+ pp_string (buffer, lang_hooks.decl_printable_name (node, 1));
else
- dump_decl_name (buffer, node, 0);
+ dump_decl_name (buffer, node, flags);
}
/* Dump a function declaration. NODE is the FUNCTION_TYPE. BUFFER, SPC and
@@ -1356,7 +1326,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
break;
case CALL_EXPR:
- print_call_name (buffer, CALL_EXPR_FN (node));
+ print_call_name (buffer, CALL_EXPR_FN (node), flags);
/* Print parameters. */
pp_space (buffer);
@@ -2693,7 +2663,7 @@ op_symbol (const_tree op)
the gimple_call_fn of a GIMPLE_CALL. */
void
-print_call_name (pretty_printer *buffer, tree node)
+print_call_name (pretty_printer *buffer, tree node, int flags)
{
tree op0 = node;
@@ -2706,7 +2676,7 @@ print_call_name (pretty_printer *buffer, tree node)
case VAR_DECL:
case PARM_DECL:
case FUNCTION_DECL:
- dump_function_name (buffer, op0);
+ dump_function_name (buffer, op0, flags);
break;
case ADDR_EXPR:
@@ -2717,20 +2687,20 @@ print_call_name (pretty_printer *buffer, tree node)
case COND_EXPR:
pp_string (buffer, "(");
- dump_generic_node (buffer, TREE_OPERAND (op0, 0), 0, 0, false);
+ dump_generic_node (buffer, TREE_OPERAND (op0, 0), 0, flags, false);
pp_string (buffer, ") ? ");
- dump_generic_node (buffer, TREE_OPERAND (op0, 1), 0, 0, false);
+ dump_generic_node (buffer, TREE_OPERAND (op0, 1), 0, flags, false);
pp_string (buffer, " : ");
- dump_generic_node (buffer, TREE_OPERAND (op0, 2), 0, 0, false);
+ dump_generic_node (buffer, TREE_OPERAND (op0, 2), 0, flags, false);
break;
case COMPONENT_REF:
/* The function is a pointer contained in a structure. */
if (TREE_CODE (TREE_OPERAND (op0, 0)) == INDIRECT_REF ||
TREE_CODE (TREE_OPERAND (op0, 0)) == VAR_DECL)
- dump_function_name (buffer, TREE_OPERAND (op0, 1));
+ dump_function_name (buffer, TREE_OPERAND (op0, 1), flags);
else
- dump_generic_node (buffer, TREE_OPERAND (op0, 0), 0, 0, false);
+ dump_generic_node (buffer, TREE_OPERAND (op0, 0), 0, flags, false);
/* else
We can have several levels of structures and a function
pointer inside. This is not implemented yet... */
@@ -2739,14 +2709,14 @@ print_call_name (pretty_printer *buffer, tree node)
case ARRAY_REF:
if (TREE_CODE (TREE_OPERAND (op0, 0)) == VAR_DECL)
- dump_function_name (buffer, TREE_OPERAND (op0, 0));
+ dump_function_name (buffer, TREE_OPERAND (op0, 0), flags);
else
- dump_generic_node (buffer, op0, 0, 0, false);
+ dump_generic_node (buffer, op0, 0, flags, false);
break;
case SSA_NAME:
case OBJ_TYPE_REF:
- dump_generic_node (buffer, op0, 0, 0, false);
+ dump_generic_node (buffer, op0, 0, flags, false);
break;
default: