|
|
|
|
|
by chubot
2720 days ago
|
|
Hm that is an interesting viewpoint. It seems like compilers are converging on it though? LLVM and GCC both use it. I recall this talk being good: GopherCon 2017: Keith Randall - Generating Better Machine Code with SSA https://www.youtube.com/watch?v=uTMvKVma5ms&t=1s Go has built-in mutable containers, and no const, yet they still use SSA. Is there a real alternative? I guess it is mainly for speeding up code that uses a lot of integers and doubles and so forth, and not code that uses a lot of strings and containers? |
|
Right, as you say, compilers are converging on SSA, and almost all languages have mutable containers. All it means is that there's a mismatch between the semantics of the IL and the semantics of the language. That's a fairly common situation; there are lots of semantics (like concurrency and associated memory consistency) that can't be captured in an IL as they occur in reality, in the language being compiled. It's just a thing that has to be worked around.