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. Richard. > > > > Thanks, > Prasad