This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, Here's the first version of TreeBrowser. For the moment it allows you to walk the tree structure, and to search TREE_CODEs (teleports on the first occurence of the node). You could imagine other extensions: - replace a node by another (relink nodes), - build new nodes by calling yyparse again on an argument, - apply an optimization on a localized subtree, - ... Other extensions are welcome. Sebastian Tree Browser TB> h Possible commands are: x - Exits tree-browser. q - Exits tree-browser. h - Prints this help message. fun - Go to the curent function declaration. nx - Go to the next tree node in this chain. pr - Go to the previous tree node in this chain. up - Go to the parent tree node. last - Go to the last node in this chain. first - Go to the first node in this chain. arg0 - Child 0. arg1 - Child 1. arg2 - Child 2. arg3 - Child 3. decl_saved_tree - Body of a function. type - Field accessor. size - Field accessor. unit_size - Field accessor. offset - Field accessor. bit_offset - Field accessor. context - Field accessor. attributes - Field accessor. abstract_origin - Field accessor. arguments - Field accessor. result - Field accessor. initial - Field accessor. arg-type - Field accessor. arg-type-as-written - Field accessor. chain - Field accessor (same as 'nx'). values - Field accessor. domain - Field accessor. method_basetype - Field accessor. fields - Field accessor. arg-types - Field accessor. basetype - Field accessor. pointer_to_this - Field accessor. reference_to_this - Field accessor. vars - Field accessor. supercontext - Field accessor. body - Field accessor. subblocks - Field accessor. block - Field accessor. real - Field accessor. imag - Field accessor. purpose - Field accessor. value - Field accessor. elt - Field accessor. min - Field accessor. max - Field accessor. sc - Search a node having a TREE_CODE given as a parameter. sn - Search an identifier having a name given as a parameter. pp - Pretty print current node. p - Prints the current node. TB> p <function_decl 0x4026e32c vprintf type <function_type 0x4026e414 type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> DI size <integer_cst 0x401968a0 constant 64> unit size <integer_cst 0x40196ac0 constant 8> align 64 symtab 0 alias set -1 attributes <tree_list 0x4026d3a8 purpose <identifier_node 0x4019fb00 nonnull> value <tree_list 0x401a77b0 value <integer_cst 0x401a2600 constant 1>> chain <tree_list 0x4026d390 purpose <identifier_node 0x4019fa40 format> value <tree_list 0x401a7960 value <identifier_node 0x4019fbc0 printf public global <function_decl 0x401b0e0c printf>> chain <tree_list 0x401a7810 value <integer_cst 0x401a2600 1> chain <tree_list 0x401a7798 value <integer_cst 0x401a25e0 0>>>>>> arg-types <tree_list 0x4026d330 value <pointer_type 0x40262658> chain <tree_list 0x4026d348 value <pointer_type 0x40219c3c __gnuc_va_list> chain <tree_list 0x4026d360 value <void_type 0x401a089c void>>>>> public in_system_header external inline QI file /usr/include/bits/stdio.h line 35 arguments <parm_decl 0x40283e80 __fmt type <pointer_type 0x40262658 type <integer_type 0x401a5cb0 char> unsigned restrict SI size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 symtab 0 alias set -1> unsigned used in_system_header SI file /usr/include/bits/stdio.h line 34 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 alias set -2 context <function_decl 0x4026e32c vprintf> result <pointer_type 0x40262658> initial <pointer_type 0x40262658> arg-type <pointer_type 0x40262658> arg-type-as-written <pointer_type 0x40262658> chain <parm_decl 0x40283ef4 __arg type <pointer_type 0x40219c3c __gnuc_va_list> unsigned used in_system_header SI file /usr/include/bits/stdio.h line 34 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 context <function_decl 0x4026e32c vprintf> result <pointer_type 0x40219c3c __gnuc_va_list> initial <pointer_type 0x40219c3c __gnuc_va_list> arg-type <pointer_type 0x40219c3c __gnuc_va_list> arg-type-as-written <pointer_type 0x40219c3c __gnuc_va_list>>> result <result_decl 0x4028615c type <integer_type 0x40199414 int> in_system_header SI file /usr/include/bits/stdio.h line 35 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 context <function_decl 0x4026e32c vprintf>> initial <block 0x401982ec> chain <function_decl 0x4026e074 vfprintf>> TB> decl_saved_tree TB> p <expr_with_file_location 0x40270ba0 type <void_type 0x401a089c void VOID align 8 symtab 0 alias set -1 pointer_to_this <pointer_type 0x401a0910>> side-effects public arg 0 <bind_expr 0x40270b60 type <void_type 0x401a089c void> side-effects body <expr_with_file_location 0x40270b80 type <void_type 0x401a089c void> side-effects public arg 0 <return_expr 0x402854e0 type <void_type 0x401a089c void> side-effects arg 0 <modify_expr 0x40270b40 type <integer_type 0x40199414 int> side-effects arg 0 <result_decl 0x4028615c> arg 1 <call_expr 0x40270b20 type <integer_type 0x40199414 int> side-effects arg 0 <addr_expr 0x40285438 type <pointer_type 0x40286244> arg 0 <function_decl 0x4026e074 vfprintf>> arg 1 <tree_list 0x40285450 value <var_decl 0x40264a6c stdout> chain <tree_list 0x40285468>>>>> arg 1 <identifier_node 0x402841c0 /usr/include/bits/stdio.h> /usr/include/bits/stdio.h:36:0>> arg 1 <identifier_node 0x402841c0 /usr/include/bits/stdio.h> /usr/include/bits/stdio.h:36:0> TB> arg0 TB> p <bind_expr 0x40270b60 type <void_type 0x401a089c void VOID align 8 symtab 0 alias set -1 pointer_to_this <pointer_type 0x401a0910>> side-effects body <expr_with_file_location 0x40270b80 type <void_type 0x401a089c void> side-effects public arg 0 <return_expr 0x402854e0 type <void_type 0x401a089c void> side-effects arg 0 <modify_expr 0x40270b40 type <integer_type 0x40199414 int> side-effects arg 0 <result_decl 0x4028615c> arg 1 <call_expr 0x40270b20 type <integer_type 0x40199414 int> side-effects arg 0 <addr_expr 0x40285438 type <pointer_type 0x40286244> arg 0 <function_decl 0x4026e074 vfprintf>> arg 1 <tree_list 0x40285450 value <var_decl 0x40264a6c stdout> chain <tree_list 0x40285468 value <parm_decl 0x40283e80 __fmt> chain <tree_list 0x40285480>>>>>> arg 1 <identifier_node 0x402841c0 /usr/include/bits/stdio.h> /usr/include/bits/stdio.h:36:0>> TB> body TB> p <expr_with_file_location 0x40270b80 type <void_type 0x401a089c void VOID align 8 symtab 0 alias set -1 pointer_to_this <pointer_type 0x401a0910>> side-effects public arg 0 <return_expr 0x402854e0 type <void_type 0x401a089c void> side-effects arg 0 <modify_expr 0x40270b40 type <integer_type 0x40199414 int> side-effects arg 0 <result_decl 0x4028615c> arg 1 <call_expr 0x40270b20 type <integer_type 0x40199414 int> side-effects arg 0 <addr_expr 0x40285438 type <pointer_type 0x40286244> arg 0 <function_decl 0x4026e074 vfprintf>> arg 1 <tree_list 0x40285450 value <var_decl 0x40264a6c stdout> chain <tree_list 0x40285468 value <parm_decl 0x40283e80 __fmt> chain <tree_list 0x40285480 value <parm_decl 0x40283ef4 __arg>>>>>>> arg 1 <identifier_node 0x402841c0 /usr/include/bits/stdio.h> /usr/include/bits/stdio.h:36:0> TB> arg0 TB> p <return_expr 0x402854e0 type <void_type 0x401a089c void VOID align 8 symtab 0 alias set -1 pointer_to_this <pointer_type 0x401a0910>> side-effects arg 0 <modify_expr 0x40270b40 type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> side-effects arg 0 <result_decl 0x4028615c type <integer_type 0x40199414 int> in_system_header SI file /usr/include/bits/stdio.h line 35 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 context <function_decl 0x4026e32c vprintf>> arg 1 <call_expr 0x40270b20 type <integer_type 0x40199414 int> side-effects arg 0 <addr_expr 0x40285438 type <pointer_type 0x40286244> arg 0 <function_decl 0x4026e074 vfprintf>> arg 1 <tree_list 0x40285450 value <var_decl 0x40264a6c stdout> chain <tree_list 0x40285468 value <parm_decl 0x40283e80 __fmt> chain <tree_list 0x40285480 value <parm_decl 0x40283ef4 __arg>>>>>>> TB> arg0 TB> p <modify_expr 0x40270b40 type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> side-effects arg 0 <result_decl 0x4028615c type <integer_type 0x40199414 int> in_system_header SI file /usr/include/bits/stdio.h line 35 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 context <function_decl 0x4026e32c vprintf>> arg 1 <call_expr 0x40270b20 type <integer_type 0x40199414 int> side-effects arg 0 <addr_expr 0x40285438 type <pointer_type 0x40286244> arg 0 <function_decl 0x4026e074 vfprintf>> arg 1 <tree_list 0x40285450 value <var_decl 0x40264a6c stdout> chain <tree_list 0x40285468 value <parm_decl 0x40283e80 __fmt> chain <tree_list 0x40285480 value <parm_decl 0x40283ef4 __arg>>>>>> TB> arg1 TB> p <call_expr 0x40270b20 type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> side-effects arg 0 <addr_expr 0x40285438 type <pointer_type 0x40286244 type <function_type 0x4026e15c> unsigned SI size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 symtab 0 alias set -1> arg 0 <function_decl 0x4026e074 vfprintf type <function_type 0x4026e15c> used public in_system_header external defer-output QI file /home/pop/gcc/tree-ssa/bin/gcc/include/stdio.h line 294 chain <function_decl 0x4026cd24 sprintf>>> arg 1 <tree_list 0x40285450 value <var_decl 0x40264a6c stdout type <pointer_type 0x40264984> unsigned used public in_system_header common external defer-output SI file /home/pop/gcc/tree-ssa/bin/gcc/include/stdio.h line 143 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 chain <var_decl 0x402649f8 stdin>> chain <tree_list 0x40285468 value <parm_decl 0x40283e80 __fmt> chain <tree_list 0x40285480 value <parm_decl 0x40283ef4 __arg>>>>> TB> arg1 TB> p <tree_list 0x40285450 value <var_decl 0x40264a6c stdout type <pointer_type 0x40264984 type <record_type 0x4023cae0 FILE> unsigned SI size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 symtab 0 alias set -1> unsigned used public in_system_header common external defer-output SI file /home/pop/gcc/tree-ssa/bin/gcc/include/stdio.h line 143 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 chain <var_decl 0x402649f8 stdin type <pointer_type 0x40264984> unsigned public in_system_header common external defer-output SI file /home/pop/gcc/tree-ssa/bin/gcc/include/stdio.h line 142 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 chain <type_decl 0x4026489c fpos64_t>>> chain <tree_list 0x40285468 value <parm_decl 0x40283e80 __fmt type <pointer_type 0x40262658> unsigned used in_system_header SI file /usr/include/bits/stdio.h line 34 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 alias set -2 context <function_decl 0x4026e32c vprintf> result <pointer_type 0x40262658> initial <pointer_type 0x40262658> arg-type <pointer_type 0x40262658> arg-type-as-written <pointer_type 0x40262658> chain <parm_decl 0x40283ef4 __arg>> chain <tree_list 0x40285480 value <parm_decl 0x40283ef4 __arg>>>> TB> value TB> p <var_decl 0x40264a6c stdout type <pointer_type 0x40264984 type <record_type 0x4023cae0 FILE BLK size <integer_cst 0x402506a0 constant 1184> unit size <integer_cst 0x40250660 constant 148> align 32 symtab 0 alias set -1 fields <field_decl 0x40259658 _flags> pointer_to_this <pointer_type 0x40264984>> unsigned SI size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 symtab 0 alias set -1> unsigned used public in_system_header common external defer-output SI file /home/pop/gcc/tree-ssa/bin/gcc/include/stdio.h line 143 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 chain <var_decl 0x402649f8 stdin>> TB> type TB> p <pointer_type 0x40264984 type <record_type 0x4023cae0 FILE BLK size <integer_cst 0x402506a0 constant 1184> unit size <integer_cst 0x40250660 constant 148> align 32 symtab 0 alias set -1 fields <field_decl 0x40259658 _flags type <integer_type 0x40199414 int> in_system_header SI file /usr/include/libio.h line 262 size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 offset_align 128 offset <integer_cst 0x40196ba0 constant 0> bit offset <integer_cst 0x40196c60 constant 0> context <record_type 0x4023c984 _IO_FILE> arguments <integer_cst 0x40196ba0 0> chain <field_decl 0x402596cc _IO_read_ptr>> pointer_to_this <pointer_type 0x40264984>> unsigned SI size <integer_cst 0x40196b20 type <integer_type 0x401a0658 bit_size_type> constant 32> unit size <integer_cst 0x40196b80 type <integer_type 0x401a05e4 unsigned int> constant 4> align 32 symtab 0 alias set -1> TB> type TB> p <record_type 0x4023cae0 FILE BLK size <integer_cst 0x402506a0 type <integer_type 0x401a0658 bit_size_type> constant 1184> unit size <integer_cst 0x40250660 type <integer_type 0x401a05e4 unsigned int> constant 148> align 32 symtab 0 alias set -1 fields <field_decl 0x40259658 _flags type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> in_system_header SI file /usr/include/libio.h line 262 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 offset_align 128 offset <integer_cst 0x40196ba0 constant 0> bit offset <integer_cst 0x40196c60 constant 0> context <record_type 0x4023c984 _IO_FILE> arguments <integer_cst 0x40196ba0 0> chain <field_decl 0x402596cc _IO_read_ptr type <pointer_type 0x401a0d98> unsigned in_system_header SI file /usr/include/libio.h line 267 size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 offset_align 128 offset <integer_cst 0x40196ba0 0> bit offset <integer_cst 0x401964e0 32> context <record_type 0x4023c984 _IO_FILE> arguments <integer_cst 0x40196ba0 0> chain <field_decl 0x40259740 _IO_read_end>>> pointer_to_this <pointer_type 0x40264984>> TB> fields TB> p <field_decl 0x40259658 _flags type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> in_system_header SI file /usr/include/libio.h line 262 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 offset_align 128 offset <integer_cst 0x40196ba0 type <integer_type 0x401a05e4 unsigned int> constant 0> bit offset <integer_cst 0x40196c60 type <integer_type 0x401a0658 bit_size_type> constant 0> context <record_type 0x4023c984 _IO_FILE> arguments <integer_cst 0x40196ba0 0> chain <field_decl 0x402596cc _IO_read_ptr>> TB> context TB> p <record_type 0x4023c984 _IO_FILE type_0 BLK size <integer_cst 0x402506a0 type <integer_type 0x401a0658 bit_size_type> constant 1184> unit size <integer_cst 0x40250660 type <integer_type 0x401a05e4 unsigned int> constant 148> align 32 symtab 0 alias set -1 fields <field_decl 0x40259658 _flags type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> in_system_header SI file /usr/include/libio.h line 262 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 offset_align 128 offset <integer_cst 0x40196ba0 constant 0> bit offset <integer_cst 0x40196c60 constant 0> context <record_type 0x4023c984 _IO_FILE> arguments <integer_cst 0x40196ba0 0> chain <field_decl 0x402596cc _IO_read_ptr type <pointer_type 0x401a0d98> unsigned in_system_header SI file /usr/include/libio.h line 267 size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 offset_align 128 offset <integer_cst 0x40196ba0 0> bit offset <integer_cst 0x401964e0 32> context <record_type 0x4023c984 _IO_FILE> arguments <integer_cst 0x40196ba0 0> chain <field_decl 0x40259740 _IO_read_end>>> pointer_to_this <pointer_type 0x40259244> chain <type_decl 0x4023c9f8>> TB> pp struct _IO_FILEstruct struct _IO_FILE; TB> fun TB> p <function_decl 0x4026e32c vprintf type <function_type 0x4026e414 type <integer_type 0x40199414 int SI size <integer_cst 0x401964e0 constant 32> unit size <integer_cst 0x40196580 constant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x40196540 -2147483648> max <integer_cst 0x40196560 2147483647> pointer_to_this <pointer_type 0x401a5bc8>> DI size <integer_cst 0x401968a0 constant 64> unit size <integer_cst 0x40196ac0 constant 8> align 64 symtab 0 alias set -1 attributes <tree_list 0x4026d3a8 purpose <identifier_node 0x4019fb00 nonnull> value <tree_list 0x401a77b0 value <integer_cst 0x401a2600 constant 1>> chain <tree_list 0x4026d390 purpose <identifier_node 0x4019fa40 format> value <tree_list 0x401a7960 value <identifier_node 0x4019fbc0 printf public global <function_decl 0x401b0e0c printf>> chain <tree_list 0x401a7810 value <integer_cst 0x401a2600 1> chain <tree_list 0x401a7798 value <integer_cst 0x401a25e0 0>>>>>> arg-types <tree_list 0x4026d330 value <pointer_type 0x40262658> chain <tree_list 0x4026d348 value <pointer_type 0x40219c3c __gnuc_va_list> chain <tree_list 0x4026d360 value <void_type 0x401a089c void>>>>> public in_system_header external inline QI file /usr/include/bits/stdio.h line 35 arguments <parm_decl 0x40283e80 __fmt type <pointer_type 0x40262658 type <integer_type 0x401a5cb0 char> unsigned restrict SI size <integer_cst 0x40196b20 constant 32> unit size <integer_cst 0x40196b80 constant 4> align 32 symtab 0 alias set -1> unsigned used in_system_header SI file /usr/include/bits/stdio.h line 34 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 alias set -2 context <function_decl 0x4026e32c vprintf> result <pointer_type 0x40262658> initial <pointer_type 0x40262658> arg-type <pointer_type 0x40262658> arg-type-as-written <pointer_type 0x40262658> chain <parm_decl 0x40283ef4 __arg type <pointer_type 0x40219c3c __gnuc_va_list> unsigned used in_system_header SI file /usr/include/bits/stdio.h line 34 size <integer_cst 0x40196b20 32> unit size <integer_cst 0x40196b80 4> align 32 context <function_decl 0x4026e32c vprintf> result <pointer_type 0x40219c3c __gnuc_va_list> initial <pointer_type 0x40219c3c __gnuc_va_list> arg-type <pointer_type 0x40219c3c __gnuc_va_list> arg-type-as-written <pointer_type 0x40219c3c __gnuc_va_list>>> result <result_decl 0x4028615c type <integer_type 0x40199414 int> in_system_header SI file /usr/include/bits/stdio.h line 35 size <integer_cst 0x401964e0 32> unit size <integer_cst 0x40196580 4> align 32 context <function_decl 0x4026e32c vprintf>> initial <block 0x401982ec> chain <function_decl 0x4026e074 vfprintf>> TB> sc parm_decl parm_decl There's no node with this code (reachable via the walk_tree function from this node). TB> sc pointer_type pointer_type Achoo! I got this node in the tree. TB> p <pointer_type 0x40262658 type <integer_type 0x401a5cb0 char readonly QI size <integer_cst 0x40196380 constant 8> unit size <integer_cst 0x401963a0 constant 1> align 8 symtab 0 alias set -1 precision 8 min <integer_cst 0x40196440 -128> max <integer_cst 0x40196460 127> pointer_to_this <pointer_type 0x401a5d24>> unsigned restrict SI size <integer_cst 0x40196b20 type <integer_type 0x401a0658 bit_size_type> constant 32> unit size <integer_cst 0x40196b80 type <integer_type 0x401a05e4 unsigned int> constant 4> align 32 symtab 0 alias set -1> TB>
Attachment:
tree-browser.tar.gz
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |