(no title)
philberty | 3 years ago
1. AST 2. HIR 3. THIR (side-table lookups) 4. GCC Generic
We basically skip MIR in gccrs.
Its pretty sensible to have other IR's, we have many passes in gccrs simplifying things so the graph of what your working with is simpler and simpler each time.
I mean in GCC for C++ for example they use GENERIC and add a bunch of custom tree-codes such as LAMBDA_EXPR or TEMPLATE stuff for example then they keep substituting etc and finally as part of handing off to GCC middle-end it triggers the gimplification of all of these custom tree codes. So even the C++ front-end you could argue has two IR's.
steveklabnik|3 years ago
steveklabnik|3 years ago