On 29 June 2016 at 12:42, Richard Biener <richard.guent...@gmail.com> wrote: > On Tue, Jun 28, 2016 at 4:16 PM, Prasad Ghangal > <prasad.ghan...@gmail.com> wrote: >> Hi, >> >> For handling PHI, it expects cfg to be built before. So I was >> wondering how are we going to handle this? Do we need to build cfg >> while parsing only? > > For handling PHIs we need to have a CFG in the sense that the GIMPLE PHI > data structures are built in a way to have the PHI argument index correspond > to CFG predecessor edge index. As we'd like to parse phis with args > corresponding > to predecessor block labels, like > > a: > i_1 = 1; > goto p; > > b: > i_2 = 2; > goto p; > > p: > i_3 = __PHI (a: i_1, b: i_2); > > I think that a possibility is to leave those PHIs as internal function > with label / arg > pairs and have CFG construction lower them to real PHIs. > > Of course the parser could as well build a CFG on its own but I think > we should use > the easy way out for now. > > Thus you'd have to modify CFG construction a bit to lower the internal > function calls.
Currently I am just building internal call using gimple_build_call_internal_vec (), and detecting (and removing for now) it after edge creation in tree-cfg. I was observing internal-fn.def, do I need to make entry in internal-fn.def and write expand function? > > Richard. >> >> >> >> Thanks, >> Prasad