gcc源代码分析,debug_tree()函数的利用
2015-01-04 22:12
330 查看
tree.def 中第0x3d个元素是
DEFTREECODE (CALL_EXPR, "call_expr", "e", 3)
下面是debug_tree()函数的结果,可以看出expand_expr()函数到gen_rtx()函数的调用过程!expand_expr code = 3d
<call_expr 840f0
type <integer_type 824d0 int permanent SI
size <integer_cst 8254c literal permanent 4
align 32 size_unit 8 sep_unit 32 symtab 0
sep <integer_cst 8251c literal permanent -2147483648 precision 32 min <integer_cst 8251c -2147483648>
max <integer_cst 82534 literal permanent 2147483647
pointer_to_this <pointer_type 88b4c> chain <integer_type 825bc char>
volatile
arg 0 <addr_expr 84090
type <pointer_type 98f48 type <function_type 956e8>
permanent unsigned SI size <integer_cst 8254c 4>
align 32 size_unit 8 sep_unit 32 symtab 0
arg 0 <function_decl 95740 printf type <function_type 956e8>
external public permanent used QI file /usr/include/stdio.h line 214
align 1 size_unit 1 offset 0 chain <function_decl 954d8 ungetc>
arg 1 <tree_list 83270
value <nop_expr 840d8 type <pointer_type 9117c>
literal
arg 0 <nop_expr 840c0 type <pointer_type 88a44>
literal
arg 0 <addr_expr 840a8 type <pointer_type 94f58>
literal
arg 0 <string_cst 84014 type <array_type 94ef4>
static literal "Hello, world!
"(nil)
expand_expr code = 71
<nop_expr 840d8
type <pointer_type 9117c
type <integer_type 91130 char readonly permanent QI
size <integer_cst 82638 literal permanent 1
align 8 size_unit 8 sep_unit 8 symtab 0
sep <integer_cst 82608 literal permanent -128 precision 8 min <integer_cst 82608 -128>
max <integer_cst 82620 literal permanent 127
pointer_to_this <pointer_type 9117c>
permanent unsigned SI
size <integer_cst 8254c literal permanent 4
align 32 size_unit 8 sep_unit 32 symtab 0
chain <function_type 912c0>
literal
arg 0 <nop_expr 840c0
type <pointer_type 88a44 type <integer_type 825bc char>
permanent unsigned SI size <integer_cst 8254c 4>
align 32 size_unit 8 sep_unit 32 symtab 0
chain <array_type 88a90>
literal
arg 0 <addr_expr 840a8 type <pointer_type 94f58>
literal
arg 0 <string_cst 84014 type <array_type 94ef4>
static literal "Hello, world!
"
expand_expr code = 71
<nop_expr 840c0
type <pointer_type 88a44
type <integer_type 825bc char permanent QI
size <integer_cst 82638 literal permanent 1
align 8 size_unit 8 sep_unit 8 symtab 0
sep <integer_cst 82608 literal permanent -128 precision 8 min <integer_cst 82608 -128>
max <integer_cst 82620 literal permanent 127
pointer_to_this <pointer_type 88a44> chain <integer_type 826a8 long int>
permanent unsigned SI
size <integer_cst 8254c literal permanent 4
align 32 size_unit 8 sep_unit 32 symtab 0
chain <array_type 88a90>
literal
arg 0 <addr_expr 840a8
type <pointer_type 94f58 type <array_type 94ef4>
unsigned SI size <integer_cst 8254c 4>
align 32 size_unit 8 sep_unit 32 symtab 0
literal
arg 0 <string_cst 84014 type <array_type 94ef4>
static literal "Hello, world!
"
expand_expr code = 74
<addr_expr 840a8
type <pointer_type 94f58
type <array_type 94ef4 type <integer_type 825bc char>
BLK
size <integer_cst 94f40 literal 15
align 8 size_unit 8 sep_unit 8 symtab 0
sep <integer_cst 82638 literal permanent 1 domain <integer_type 94ea8>
pointer_to_this <pointer_type 94f58> chain <pointer_type 94f58>
unsigned SI
size <integer_cst 8254c literal permanent 4
align 32 size_unit 8 sep_unit 32 symtab 0
literal
arg 0 <string_cst 84014 type <array_type 94ef4>
static literal "Hello, world!
"
expand_expr code = 26
<string_cst 84014
type <array_type 94ef4
type <integer_type 825bc char permanent QI
size <integer_cst 82638 literal permanent 1
align 8 size_unit 8 sep_unit 8 symtab 0
sep <integer_cst 82608 literal permanent -128 precision 8 min <integer_cst 82608 -128>
max <integer_cst 82620 literal permanent 127
pointer_to_this <pointer_type 88a44> chain <integer_type 826a8 long int>
BLK
size <integer_cst 94f40 literal 15
align 8 size_unit 8 sep_unit 8 symtab 0 sep <integer_cst 82638 1>
domain <integer_type 94ea8 SI
size <integer_cst 8254c literal permanent 4
align 32 size_unit 8 sep_unit 32 symtab 0
sep <integer_cst 84048 literal 0 precision 32 min <integer_cst 84048 0>
max <integer_cst 84078 literal 14
pointer_to_this <pointer_type 94f58> chain <pointer_type 94f58>
static literal "Hello, world!
"
(symbol_ref:SI ("*LC0"))
(mem:BLK (symbol_ref:SI ("*LC0")))
(pre_dec:SI (reg:SI 7))
(mem:SI (pre_dec:SI (reg:SI 7)))
(set (mem:SI (pre_dec:SI (reg:SI 7)))
(symbol_ref:SI ("*LC0")))
(insn_list 6 (nil))
(insn_list 2 (insn_list 6 (nil)))
(sequence[ ] )
(reg:SI 0)
(const_int 4)
emit_call_1 funexp symbol_ref
(mem:QI (symbol_ref/v:SI ("printf")))
(call (mem:QI (symbol_ref/v:SI ("printf")))
(const_int 4))
(set (reg:SI 0)
(call (mem:QI (symbol_ref/v:SI ("printf")))
(const_int 4)))
emit_call_insn
相关文章推荐
- gcc源代码分析,在expand_call ()函数 和expand_expr_stmt ()函数的开始处加入debug_tree ()函数
- gcc源代码分析,expand_call()函数第三部分
- gcc源代码分析gen_push_operand ()函数和emit_move_insn ()函数
- gcc源代码分析,expand_expr_stmt()函数
- gcc源代码分析,debug_tree()函数,又一利器啊
- gcc源代码分析,finish_decl ()函数和push_parm_decl ()函数分析
- gcc源代码分析之gen_call_value()函数
- gcc源代码分析,expand_call ()函数分析第五部分,store_one_arg ()函数
- gcc源代码分析,build_pointer_type ()函数分析
- gcc源代码分析,finish_decl ()函数和rest_of_decl_compilation ()函数分析
- gcc源代码分析,build_function_call ()函数分析
- gcc源代码分析,print_node()函数分析第一部分
- gcc源代码分析,insn_extract()函数和recog_operand[]数组的关系
- gcc源代码分析,end_final()函数把insn转化成汇编代码
- gcc源代码分析emit_call_insn()函数
- gcc源代码分析,get_parm_info ()函数分析
- LARBIN源代码分析[12]GLOBAL文件中的四个INIT初始化模块函数
- 关于利用scanf()函数做为do-while循环条件的分析
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现 refer from http://www.ibm.com/developerworks/cn/java/j-lo-tree/index.html?ca=drs-
- 利用分析函数优化自连接