Line data Source code
1 : /* Tree-dumping functionality for C-family languages.
2 : Copyright (C) 2002-2026 Free Software Foundation, Inc.
3 : Written by Mark Mitchell <mark@codesourcery.com>
4 :
5 : This file is part of GCC.
6 :
7 : GCC is free software; you can redistribute it and/or modify it under
8 : the terms of the GNU General Public License as published by the Free
9 : Software Foundation; either version 3, or (at your option) any later
10 : version.
11 :
12 : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 : WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 : FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 : for more details.
16 :
17 : You should have received a copy of the GNU General Public License
18 : along with GCC; see the file COPYING3. If not see
19 : <http://www.gnu.org/licenses/>. */
20 :
21 : #include "config.h"
22 : #include "system.h"
23 : #include "coretypes.h"
24 : #include "c-common.h"
25 : #include "tree-dump.h"
26 :
27 : /* Dump any C-specific tree codes and attributes of common codes. */
28 :
29 : static void
30 0 : dump_stmt (dump_info_p di, const_tree t)
31 : {
32 0 : if (EXPR_HAS_LOCATION (t))
33 0 : dump_int (di, "line", EXPR_LINENO (t));
34 0 : }
35 :
36 : bool
37 43275 : c_dump_tree (void *dump_info, tree t)
38 : {
39 43275 : enum tree_code code;
40 43275 : dump_info_p di = (dump_info_p) dump_info;
41 :
42 : /* Figure out what kind of node this is. */
43 43275 : code = TREE_CODE (t);
44 :
45 43275 : switch (code)
46 : {
47 60 : case FIELD_DECL:
48 60 : if (DECL_C_BIT_FIELD (t))
49 0 : dump_string (di, "bitfield");
50 : break;
51 :
52 0 : case BREAK_STMT:
53 0 : case CONTINUE_STMT:
54 0 : dump_stmt (di, t);
55 0 : break;
56 :
57 0 : case DO_STMT:
58 0 : dump_stmt (di, t);
59 0 : dump_child ("body", DO_BODY (t));
60 0 : dump_child ("cond", DO_COND (t));
61 0 : break;
62 :
63 0 : case FOR_STMT:
64 0 : dump_stmt (di, t);
65 0 : dump_child ("init", FOR_INIT_STMT (t));
66 0 : dump_child ("cond", FOR_COND (t));
67 0 : dump_child ("expr", FOR_EXPR (t));
68 0 : dump_child ("body", FOR_BODY (t));
69 0 : break;
70 :
71 0 : case SWITCH_STMT:
72 0 : dump_stmt (di, t);
73 0 : dump_child ("cond", SWITCH_STMT_COND (t));
74 0 : dump_child ("body", SWITCH_STMT_BODY (t));
75 0 : break;
76 :
77 0 : case WHILE_STMT:
78 0 : dump_stmt (di, t);
79 0 : dump_child ("cond", WHILE_COND (t));
80 0 : dump_child ("body", WHILE_BODY (t));
81 0 : break;
82 :
83 : default:
84 : break;
85 : }
86 :
87 43275 : return false;
88 : }
|