gcc源代码分析,finish_decl ()函数和push_parm_decl ()函数分析
2015-01-14 21:56
344 查看
parms:
parm
{ push_parm_decl ($1); }
/* This is what appears inside the parens in a function declarator.
Is value is represented in the format that grokdeclarator expects. */
parmlist_2: /* empty */
{ $$ = get_parm_info (0); }
| parms
{ $$ = get_parm_info (1); }
| parms ',' ELLIPSIS
{ $$ = get_parm_info (0); }
ELLIPSIS 表示...
/* Given a parsed parameter declaration,
decode it into a PARM_DECL and push that on the current binding level. */
void
push_parm_decl (parm)
tree parm;
{
register tree decl = grokdeclarator (TREE_VALUE (parm), TREE_PURPOSE (parm),
PARM, 0);
/* Add this decl to the current binding level. */
finish_decl (pushdecl (decl), NULL_TREE, NULL_TREE);
}
<tree_list 95680表示push_parm_decl ()函数的参数。
<parm_decl 941c0表示grokdeclarator ()函数的返回结果。
in push_parm_decl
<tree_list 95680 permanent
purpose <tree_list 95650 permanent
value <identifier_node 82038 char permanent global <type_decl 82650 char>
chain <tree_list 95638 permanent
value <identifier_node 82210 const permanent chain <tree_list 95638>
value <indirect_ref 95668 permanent
in build_pointer_type
<integer_type 91130 char readonly permanent QI
size <integer_cst 82638 type <integer_type 82848* unsigned int> literal permanent 1
align 8 size_unit 8 sep_unit 8 symtab 0
sep <integer_cst 82608 type <integer_type 825bc* char> literal permanent -128 precision 8 min <integer_cst 82608 -128>
max <integer_cst 82620 type <integer_type 825bc* char> literal permanent 127
pointer_to_this <pointer_type 9117c>
<parm_decl 941c0
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>
unsigned SI file /usr/include/stdio.h line 214 size <integer_cst 8254c 4>
align 32 size_unit 8 offset 0 arguments <pointer_type 9117c>
in finish_decl
<parm_decl 941c0
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>
unsigned SI file /usr/include/stdio.h line 214 size <integer_cst 8254c 4>
align 32 size_unit 8 offset 0 arguments <pointer_type 9117c>
parm
{ push_parm_decl ($1); }
/* This is what appears inside the parens in a function declarator.
Is value is represented in the format that grokdeclarator expects. */
parmlist_2: /* empty */
{ $$ = get_parm_info (0); }
| parms
{ $$ = get_parm_info (1); }
| parms ',' ELLIPSIS
{ $$ = get_parm_info (0); }
ELLIPSIS 表示...
/* Given a parsed parameter declaration,
decode it into a PARM_DECL and push that on the current binding level. */
void
push_parm_decl (parm)
tree parm;
{
register tree decl = grokdeclarator (TREE_VALUE (parm), TREE_PURPOSE (parm),
PARM, 0);
/* Add this decl to the current binding level. */
finish_decl (pushdecl (decl), NULL_TREE, NULL_TREE);
}
<tree_list 95680表示push_parm_decl ()函数的参数。
<parm_decl 941c0表示grokdeclarator ()函数的返回结果。
in push_parm_decl
<tree_list 95680 permanent
purpose <tree_list 95650 permanent
value <identifier_node 82038 char permanent global <type_decl 82650 char>
chain <tree_list 95638 permanent
value <identifier_node 82210 const permanent chain <tree_list 95638>
value <indirect_ref 95668 permanent
in build_pointer_type
<integer_type 91130 char readonly permanent QI
size <integer_cst 82638 type <integer_type 82848* unsigned int> literal permanent 1
align 8 size_unit 8 sep_unit 8 symtab 0
sep <integer_cst 82608 type <integer_type 825bc* char> literal permanent -128 precision 8 min <integer_cst 82608 -128>
max <integer_cst 82620 type <integer_type 825bc* char> literal permanent 127
pointer_to_this <pointer_type 9117c>
<parm_decl 941c0
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>
unsigned SI file /usr/include/stdio.h line 214 size <integer_cst 8254c 4>
align 32 size_unit 8 offset 0 arguments <pointer_type 9117c>
in finish_decl
<parm_decl 941c0
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>
unsigned SI file /usr/include/stdio.h line 214 size <integer_cst 8254c 4>
align 32 size_unit 8 offset 0 arguments <pointer_type 9117c>
相关文章推荐
- gcc源代码分析,finish_decl ()函数和rest_of_decl_compilation ()函数分析
- gcc源代码分析gen_push_operand ()函数和emit_move_insn ()函数
- gcc源代码分析,get_parm_info ()函数分析
- gcc源代码分析,build_pointer_type ()函数分析
- gcc源代码分析,build_function_call ()函数分析
- gcc源代码分析,insn_extract()函数和recog_operand[]数组的关系
- gcc源代码分析,end_final()函数把insn转化成汇编代码
- gcc源代码分析,print_node()函数分析第一部分
- gcc源代码分析,在expand_call ()函数 和expand_expr_stmt ()函数的开始处加入debug_tree ()函数
- gcc源代码分析之gen_call_value()函数
- gcc源代码分析,debug_tree()函数的利用
- gcc源代码分析,expand_call ()函数分析第五部分,store_one_arg ()函数
- gcc源代码分析,expand_call()函数第三部分
- gcc源代码分析emit_call_insn()函数
- gcc源代码分析,expand_expr_stmt()函数
- 【C语言学习趣事】_GCC源代码分析_2_assert.h
- Gcc源代码分析,insn和rtx的关系
- gcc源代码分析,genemit由i386.md文件生成insn-emit.c文件
- linux 内核源代码情景分析——几个重要的数据结构和函数
- 【C语言学习趣事】_GCC源代码分析_2_assert.h