On Fri, Jul 5, 2019 at 2:05 PM Mohit Verma <vmohit...@gmail.com> wrote:
> Thanks Keith, Ian. > > Specifically, I am trying to catch all the memory stores/moves during the > build SSA phase, and instead call a function that can do things like record > the old/new values in a journal. > So I changed the methods like (*state).assign, (*state).storeType in > gc/ssa.go and injected equivalent SSA nodes to make the function call. I > can see the modified SSA code when I generate ssa.html using GOSSAFUNC. *This > is why I was looking for a tool that could convert SSA form back to Go code > so I could see if I caught all the stores.* > > Right now, I am running up against something like this: > Escape analysis didn't see the function call, it saw normal assignments & > marked variables in stack. Now I inject a function call during buildSSA. > Now, before the function call, runtime decided that stack should migrate, > and now I get a seg fault. > > That shouldn't matter unless your function call would cause something to escape, than otherwise wouldn't. Or are you passing a pointer to a stack object as a uintptr, maybe? You can turn off escape analysis with a command-line flag, if that helps. Adding function calls should normally be ok. Functions marked nosplit (mostly in the runtime) would be the exception; don't add any calls to those. > I was trying to debug this, but putting up prints in the compiler/runtime > seemed inefficient to me, and I thought the Go team might be doing things > differently during their development/debug. > > Thanks! > Mohit > > On Wed, Jul 3, 2019 at 9:24 PM Keith Randall <k...@google.com> wrote: > >> >> >> On Wed, Jul 3, 2019 at 9:04 PM Ian Lance Taylor <i...@golang.org> wrote: >> >>> [ +khr ] >>> >>> On Wed, Jul 3, 2019 at 4:46 PM Mohit Verma <vmohit...@gmail.com> wrote: >>> > >>> > Hi All, >>> > >>> > I am trying to change the ssa phase of Go compiler to do extra work >>> during memory stores. >>> > For example whenever there is a memory store, I want to make a >>> function call to one of my Go packages instead of the store. >>> > So, far I have some working changes and I can see the new SSA nodes >>> when I dump SSA using GOSSAFUNC. >>> > >>> > I have a couple of questions: >>> > >>> > 1. Is there a tool which can covert the SSA nodes back to some version >>> of Go code? >>> >> >> Nope. Such a thing might be nice, actually. Handing phis, memory values, >> flags, etc. might be hard. >> >> >>> > 2. How does Go team/others develop/make changes to Go compiler? So, >>> far I have been adding prints in the Go compiler >>> (cmd/compile/internal/syntax, gc, & ssa packages) to understand the code >>> flow. But, this is very time consuming. I am sure a better way exists. >>> >> >> That sounds about what I do when working on the compiler. Understanding >> what the compiler is doing is often 90% of the battle, and there's no easy >> solution. You can run the compiler under a debugger, if you want. >> If you can be more specific about what you are trying to do and what you >> are running up against, I might be able to give you more specific >> recommendations. >> If the compiler is generating bad code, you might be able to condition >> your new code on cmd/compile/internal/ssa/func.go:DebugTest which will let >> you binary search for a particular function whose code is bad. >> >> >> >>> > >>> > I'll appreciate any help! >>> > >>> > Thanks! >>> > Mohit >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts+unsubscr...@googlegroups.com. >>> > To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/CAJ%2B6RRU%3D%3D33ct1%3D%2B0U10nDLnFjvBXff%2BrrmbYRvwY-TTRReLfw%40mail.gmail.com >>> . >>> > For more options, visit https://groups.google.com/d/optout. >>> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAB%3Df9xR14BzLT-JSGbCu7GgL3XEzxEJckJmzrjbHNsWzWKDU9w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.