help with front end and scopes

Andre Groenewald adres.is.gevat@gmail.com
Wed Apr 12 12:07:00 GMT 2017


Thanks for the help. I just want to elaborate just a bit.

So if I understand it correctly, only the function in my case are
gimplified or the starting point.

Lets say I initialised classVariable 10 outside a function.
tree setVariable = build2(INIT_EXPR, void_type_node,
classVariableDecl, build_int_cst_type(integer_type_node, 10));
assume setVariable ends up in the statement list of TestClass correctly.

Does it means that gcc will follow the chain from testFunc to
TestClass (DECL_CONTEXT(testFunc) = TestClass) and then follows the
stament list of TestClass ending up initialising classVariable by only
submitting testFunc to gimple?

Regards,
André

On Wed, Apr 12, 2017 at 10:36 AM, Richard Biener
<richard.guenther@gmail.com> wrote:
> On April 12, 2017 10:24:31 AM GMT+02:00, Andre Groenewald <adres.is.gevat@gmail.com> wrote:
>>I am a bit stuck on global, file and local name spaces and scopes.
>>
>>Normally my expression bindings is associated with a function, which
>>makes the function the scope of all the variables.
>>
>>my front end can parse something like this:
>>
>>int testfunc(int parmVar)
>>{
>>  int testfuncVar;
>>}
>>
>>int testfunc2(int funcVar)
>>{
>>  int testfuncVar2;
>>}
>>
>>Every function is individually gimplified and added and finalized.
>>Everything is chained and bind correctly.
>>
>>parser->Fndecl = build_fn_decl(functionName, fnDeclType);
>>....
>>gimplify_function_tree(parser->Fndecl);
>>cgraph_node::finalize_function(parser->Fndecl, true);
>>
>>I want to expand my front end to something like this:
>>
>>module TestModule
>>{
>>  int moduleVariable;
>>  class TestClass
>>  {
>>    int classVariable;
>>    int testfunc(int parmVar)
>>    {
>>      int testfuncVar;
>>    }
>>  }
>>}
>>
>>The question is what should TestModule be declared as, what tree type
>>or declaration function, and also TestClass. How should TestModule be
>>gimplified and then finalized.
>
> TestModule should be context of TestClass which should be context of testFunc which is the only thing gimplified.
>
> For TestModule you have the choice of NAMESPACE_DECL and TRANSLATION_UNIT_DECL.
>
> Richard.
>
>>Thank you
>>André
>



More information about the Gcc mailing list