I'm confused- the "generate+clean up junk" problem is real and huge, but whether you use SSA is orthogonal (on its own it doesn't even *represent* moves) you can generate good SSA directly (e.g. https://link.springer.com/content/pdf/10.1007%2F978-3-642-37051-9_6.pdf … instead of llvm-style mem2reg), *or* bad move-y 3AC
-
This Tweet is unavailable.
-
-
Well, it's twitter, so it's hard to discuss, but yet - if you mean "use SSA" to just mean "have an IR that assigns nodes to computed values", sure. But I think Jacob meant "use SSA" as actually generate the SSA version of the code and then start processing it.
1 reply 0 retweets 0 likes -
I also meant it as "actually generate the SSA version of the code and then start processing it." The paper I linked is on how to generate a good SSA version of the code directly instead of producing a bunch of garbage along the way.
1 reply 0 retweets 1 like -
But then that is not SSA code is the point. "Generate a good SSA version of the code" is a non-statement. Generate a _non_ SSA version of the code is what you are doing at that point.
1 reply 0 retweets 0 likes -
Replying to @cmuratori @rpjohnst and
(For example, even in the chapter to which you linked, they do not call it "SSA form", they call it "pruned SSA form".)
1 reply 0 retweets 0 likes -
Pruned SSA *is* SSA. "Pruned" is just a desirable quality for SSA to have. Going from SSA to non-SSA is just register allocation; the chapter is going from source to (pruned, i.e. good) SSA.
1 reply 0 retweets 0 likes -
Replying to @rpjohnst @cmuratori and
In this case, no actual pruning occurs! They are just producing SSA that already has that property.
1 reply 0 retweets 0 likes -
Not sure how to say this another way. Jon was talking about SSA form as in _before_ doing optimizations on it. So the thing that chapter _started with_. We are _literally talking about the thing that paper does_ as being what you _want_ to do!
1 reply 0 retweets 1 like -
Replying to @cmuratori @rpjohnst and
Eg., we are saying, do not dump your initial SSA into code. Instead, you want to do a bunch of work to make sure you have an optimal set of things first, and _then_ you start with that code.
1 reply 0 retweets 0 likes
Obviously you can always call something SSA at any time because EVERY POSSIBLE PIECE OF CODE HAS AN SSA FORM. That is not interesting. Anyway, I give up at this point. I thought it should be relatively clear what everyone was talking about but I guess not :(
-
-
Hm, it seems like we both agree with the paper even if I don't understand your description of it. All I was responding to was the initial claim that "SSA adds in a lot of mov instructions, which are supposed to be optimized away later" because that is not inherent to SSA
0 replies 0 retweets 1 likeThanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.