This is the mail archive of the gcc-help@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]

How to get attual method in GCC AST


I am work on a project related with GCC AST.
In my project, i write a plugin for GCC. This plugin read a AST from a
source code, a covert this source code to another language.
Currently i have a problem with GCC AST. In particular, i cannot
retrieve all information about CALL_EXPR.
I read GCC internal, and i have known about structure of CALL_EXPR node in GCC.
But when i have a source code
class A{
public:
?? ?virtual void read();
};
class B : A {
public:
?? ?int a;

?? ?void read() {}
};
class D {
public:
?? ?void test() {
?? ? ? ?B *b;
?? ? ? ?b->read();
?? ?}
};
int main(int argc, char** argv) {
?? ?D d;
?? ?d.test();
}

This is AST of method test in class D i got:
bind_expr (test.cpp:21-18)
?? ?statement_list
?? ? ?decl_expr (test.cpp:20-12)
?? ? ? ?var_decl : b (B *) (test.cpp :20)
?? ? ?cleanup_point_expr (test.cpp:21-18)
?? ? ? ?expr_stmt (test.cpp:21-18)
?? ? ? ? ?call_expr (test.cpp:21-17)
?? ? ? ? ? ?obj_type_ref
?? ? ? ? ? ? ?indirect_ref (test.cpp:21-17)
?? ? ? ? ? ? ? ?non_lvalue_expr (test.cpp:21-17)
?? ? ? ? ? ? ? ? ?component_ref
?? ? ? ? ? ? ? ? ? ?component_ref
?? ? ? ? ? ? ? ? ? ? ?indirect_ref
?? ? ? ? ? ? ? ? ? ? ? ?non_lvalue_expr
?? ? ? ? ? ? ? ? ? ? ? ? ?var_decl : b (B *) (test.cpp :20)
?? ? ? ? ? ? ? ? ? ? ?field_decl : internal hidden (unknown type) (test.cpp :9)
?? ? ? ? ? ? ? ? ? ?field_decl : _vptr.A (int * *) (test.cpp :4)
?? ? ? ? ? ? ?non_lvalue_expr
?? ? ? ? ? ? ? ?var_decl : b (B *) (test.cpp :20)
?? ? ? ? ? ? ?integer_cst 0
?? ? ? ? ? ?non_lvalue_expr
?? ? ? ? ? ? ?var_decl : b (B *) (test.cpp :20)

The problem is method read() of class B is get from a virtual method
of based class A. And i cannot get the real name of ?this method.
Do you have any ideal to help me. Thansk


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]