Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Not sure what this has to do with SSA or not? Maybe you're saying if you don't have SSA then value numbering requires extra book-keeping to keep track of the names? that's true but the book-keeping only kicks when a name is updated, not at every program point.

It is the case that if you do a flow-insensitive analysis of variables over SSA, it will be equivalent to a flow-sensitive analysis of variables, because of the static single assignment property. I think that's what the author is trying to say, and I agree.

> To wit MLIR, an SSA IR, handily supports both sparse and dense dataflow analysis:

I don't think dense vs sparse analysis is the same thing as the use of the word "sparse" in the post.

> This is true of course but I struggle to think of a reasonable semantic that would enable you to refine/change/alter the type of a value that wasn't an operation.

If you're compiling a dynamically typed language, for example.



> It is the case that if you do a flow-insensitive analysis of variables over SSA, it will be equivalent to a flow-sensitive analysis of variables, because of the static single assignment property.

you're saying the same thing i'm saying - the question/issue arises from value numbering and naming. see "engineering a compiler" page ~400 where they discuss the benefits of SSA for value numbering: https://imgur.com/a/bPabq7D

> I don't think dense vs sparse analysis is the same thing as the use of the word "sparse" in the post.

it is - the allusion/claim in the post is that SSA is sparse because you don't need to keep track of facts/metadata for all variables at all program points. that's because of the same thing: SSA uniquely locates/identifies values and therefore you can uniquely map between SSA ids and metadata. so you don't need to have a table of stuff that's updated at every program point (like you do in dense analysis), just along control-flow/operand/result edges.


> you're saying the same thing i'm saying - the question/issue arises from value numbering and naming. see "engineering a compiler" page ~400 where they discuss the benefits of SSA for value numbering: https://imgur.com/a/bPabq7D

We're definitely not saying the same thing, because to me, the post's claim about the benefits of SSA for flow analysis are obvious and unobjectionable, whereas you raised an objection.

> it is - the allusion/claim in the post is that SSA is sparse because you don't need to keep track of facts/metadata for all variables at all program points. that's because of the same thing: SSA uniquely locates/identifies values and therefore you can uniquely map between SSA ids and metadata. so you don't need to have a table of stuff that's updated at every program point (like you do in dense analysis), just along control-flow/operand/result edges.

So then what were you talking about when you said, "Not sure what this has to do with SSA or not?". Seems like you're now trying to explain to me exactly what this has to do with SSA or not.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: