summaryrefslogtreecommitdiff
path: root/gcc/print-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/print-tree.c')
-rw-r--r--gcc/print-tree.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index ab4ae608209..7eef3a386d2 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -661,6 +661,7 @@ print_node (FILE *file, const char *prefix, tree node, int indent)
case tcc_binary:
case tcc_reference:
case tcc_statement:
+ case tcc_vl_exp:
if (TREE_CODE (node) == BIT_FIELD_REF && BIT_FIELD_REF_UNSIGNED (node))
fputs (" unsigned", file);
if (TREE_CODE (node) == BIND_EXPR)
@@ -670,17 +671,34 @@ print_node (FILE *file, const char *prefix, tree node, int indent)
print_node (file, "block", TREE_OPERAND (node, 2), indent + 4);
break;
}
-
- len = TREE_CODE_LENGTH (TREE_CODE (node));
-
- for (i = 0; i < len; i++)
+ if (TREE_CODE (node) == CALL_EXPR)
{
- char temp[10];
-
- sprintf (temp, "arg %d", i);
- print_node (file, temp, TREE_OPERAND (node, i), indent + 4);
+ call_expr_arg_iterator iter;
+ tree arg;
+ print_node (file, "fn", CALL_EXPR_FN (node), indent + 4);
+ print_node (file, "static_chain", CALL_EXPR_STATIC_CHAIN (node),
+ indent + 4);
+ i = 0;
+ FOR_EACH_CALL_EXPR_ARG (arg, iter, node)
+ {
+ char temp[10];
+ sprintf (temp, "arg %d", i);
+ print_node (file, temp, arg, indent + 4);
+ i++;
+ }
}
+ else
+ {
+ len = TREE_OPERAND_LENGTH (node);
+ for (i = 0; i < len; i++)
+ {
+ char temp[10];
+
+ sprintf (temp, "arg %d", i);
+ print_node (file, temp, TREE_OPERAND (node, i), indent + 4);
+ }
+ }
print_node (file, "chain", TREE_CHAIN (node), indent + 4);
break;