Tobias Burnus wrote: Hi Tobias,
> Hmm, that should not be the case that the middle end gets confused. I > think there is some merit in printing also the name, e.g., HelloWorld > rather than MAIN__ in middle end warnings ("unused variable foo in > HelloWorld"), but otherwise the name given to the program in gimple > shouldn't matter as long as the assembler name is MAIN__. > > Seemingly there are some issues; however, they do not seem to be new. > MAIN__ was before generated and the main() was linked from the library. > The library's main (in fmain.c / libgfortranbegin.a) should already have > called __main(). Thus if gimple_expand_cfg() automatically adds __main() > calls for "main" then this must have happened before. > >> I think this is probably an invalid way for the front-end to drive the >> mid-end - it's ok when the two functions are semantically the same, as when >> C++ clones constructors, but these are actually two entirely different >> functions, and in particular, only one of them should cause >> expand_main_function to be called. I'd like that to be the real "main" >> function, which is where the fortran runtime init gets called, rather than >> "MAIN__", which is the user-level main function, because the runtime init >> itself might need to use st_printf and that won't work until __main() is >> called, but I'm not sure how to disetangle the two now. >> > > I agree that for "main" the call to "__main()" should happend and thus > expand_main_function should be called. I'm not sure in about the exact > assumptions of the middle end. In principle, it would be OK if the > MAIN__ function would show up as MAIN__ in gimple/-fdump-tree-original. > The only potential inconvenience I see, is the mentioned reference to > MAIN__ instead of <program name> in middle-end warnings, which can > confuse users. Wouldn't the simplest thing be to rename the other main function - the initialisation one that is automatically generated by create_main_function()? It could be called anything different we liked, and it's not user-visible, so it ought to not be a problem to rename? cheers, DaveK