Matt Davis <mattdav...@gmail.com> writes: > I have been working on my PhD thesis and I want to focus on the Go > language. I know Ian Taylor has done tons of work regarding the Go > frontend for gcc. Likewise, I know gcc implements SSA and even > link-time optimization. For my specific research I will need to do > some intermodule analysis. I know gcc has link-time optimization, > however I might, for my purposes, need to add additional information > to the object files that would allow my specific optimization of a Go > program to aid other compiled modules/translation-units. Ideally, my > implementation, I would hope, would translate nice to gogo then to > GIMPLE. In the short term I would like to use this intermodule > analysis to give enough information to the compiler so that when a > module/object-file is recompiled the changed routines and dependent > routines would be the only aspects recompiled, instead of having to > recompile an entire object file each time a small change is made. > > Thoughts? Is this even feasible?
I think the frontend work is entirely feasible in Go. It would be difficult to do entirely correctly in C++ because of the complex name lookup rules. But Go has simple name lookup, so identifying which parts of a program depends on which other parts should be more or less straightforward. As far as translating the information to GIMPLE, and taking advantage of it in the optimizers, it kind of depends on what kind of information you are thinking about. Ian