您的位置:首页 > 编程语言

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gcc 源代码 分析