4 ms·
Multiple IRs can get verbose, but it also helps compartmentalize complexity. In a toy C compiler I wrote, I had a pass that did a transform of structs and arra
by retrac 3y ago
Multiple IRs can get verbose, but it also helps compartmentalize complexity.
In a toy C compiler I wrote, I had a pass that did a transform of structs and arrays, turning everything into pointer arithmetic -- only thing that pass did. After that phase, the IR doesn't need to know about arrays or structs.
Though I found a downside with that method. If i encountered an error after parsing, since I had repeatedly transformed the program, it was impossible to give a meaningful error message. Which line in the source or which source-level feature corresponds to the broken AST node? That kind of info is just as tricky to carry around in the AST as type tagging.