On Mon, Sep 19, 2016 at 3:52 AM, Swati Rathi <swatira...@cse.iitb.ac.in> wrote:
> Hello,
>
> We want to fetch fields of a record type from the formal arguments of a
> function.
> For a RECORD_TYPE, we fetch the fields using TYPE_FIELDS.
>
> In the program 471.omnetpp (from the SPEC CPU2006 benchmark suite), we
> encountered a case where we were not able to access the fields. Below is the
> dump of the same record type showing different output in different
> functions. We are not able to access fields of the record type for the first
> case.
>
> Can you tell us the reason for different type nodes?

The first is a pointer to an incomplete struct like what you'd get from

 struct Foo *p;

without a definition of struct Foo.

> Also can you suggest an approach to solve our problem.

Sorry, no.

Richard.

> -------------------------------------------------------------------------------------------
> Pointer declared as "struct cMessage *" is a parameter in one function.
> Below is the dump of node "struct cMessage *".
>
> <pointer_type 0x2b8fad7baa80
>     type <record_type 0x2b8fad7bab28 cMessage VOID
>         align 8 symtab 0 alias set -1 canonical type 0x2b8faa800690 context
> <translation_unit_decl 0x2b8fad76e958 D.82130>
>         pointer_to_this <pointer_type 0x2b8fad7baa80> chain <type_decl
> 0x2b8fad7b3730 cMessage>>
>     unsigned DI
>     size <integer_cst 0x2b8faa6c1ec0 type <integer_type 0x2b8faa6d20a8
> bitsizetype> constant 64>
>     unit size <integer_cst 0x2b8faa6c1ee0 type <integer_type 0x2b8faa6d2000
> sizetype> constant 8>
>     align 64 symtab 0 alias set -1 canonical type 0x2b8faa800e70
>     pointer_to_this <pointer_type 0x2b8fad7d9000>>
>
>
> Another pointer also declared as "struct cMessage *" is a parameter in
> second function. Below is the dump of node "struct cMessage *".
>
> <pointer_type 0x2b8faa834150
>     type <record_type 0x2b8faa82e1f8 cMessage addressable needs-constructing
> BLK
>         size <integer_cst 0x2b8faa8186c0 constant 1408>
>         unit size <integer_cst 0x2b8faa818720 constant 176>
>         align 64 symtab 0 alias set -1 canonical type 0x2b8faa834c78
>         fields <field_decl 0x2b8faa826850 D.2814 type <record_type
> 0x2b8faa819150 cObject>
>             ignored BLK file omnet_include/cmessage.h line 84 col 15
>             size <integer_cst 0x2b8faa6d4620 constant 448>
>             unit size <integer_cst 0x2b8faa7f0620 constant 56>
>             align 64 offset_align 128
>             offset <integer_cst 0x2b8faa6c1f00 constant 0>
>             bit offset <integer_cst 0x2b8faa6c1f60 constant 0> context
> <record_type 0x2b8faa82e1f8 cMessage> chain <field_decl 0x2b8faa8268e8
> swati_test>> context <translation_unit_decl 0x2b8faa6dcf18 D.2350>
>         pointer_to_this <pointer_type 0x2b8faa82e2a0> reference_to_this
> <reference_type 0x2b8fab219c78> chain <type_decl 0x2b8faa82b678 cMessage>>
>     public unsigned DI
>     size <integer_cst 0x2b8faa6c1ec0 type <integer_type 0x2b8faa6d20a8
> bitsizetype> constant 64>
>     unit size <integer_cst 0x2b8faa6c1ee0 type <integer_type 0x2b8faa6d2000
> sizetype> constant 8>
>     align 64 symtab 0 alias set -1 canonical type 0x2b8faa800e70
>     pointer_to_this <pointer_type 0x2b8faa8a3d20>>
>
> -------------------------------------------------------------------------------------------
>
> Thank you.
>
> Regards,
> Swati

Reply via email to