I remember reading this somewhere that not all variables can be converted to SSA form. For example, aliased variables and probably pointers and global variables are not candidates for SSA. Aggregate and array variables may be tricky. If a real program consists of both SSA and non-SSA code, how do I handle both types of code at the same time? For example, there're register allocation algorithms designed for SSA code. So I allocate registers for SSA code first and then run another non-SSA register allocation algorithm for the remaining code? It doesn't seem easy to integrate them together. How does it work in a real compiler?
If this is too much to explain in a post, I'd appreciate pointers to research paper and/or other online resources like blogs, discussions regarding this topic if that makes sense.