Hello everyone, I am currently in the end of my PhD, and I worked a lot with GCC. A chapter of my thesis is focusing on GCC and its internal representation. I mainly worked on GIMPLE-SSA, but I wanna write an overview of GCC's three main representations: GENERIC, GIMPLE (High, Low and SSA) and RTL.
GENERIC is quite well documented regarding its data structures and logic, same goes for GIMPLE, alongside the mention of SIMPLE from the McCAT compiler as inspiration, which is an academic source (c.f., https://link.springer.com/chapter/10.1007/3-540-57502-2_61). I found an academic paper designing an RTL system for the Typed Smalltalk (TS) compiler (c.f., https://link.springer.com/chapter/10.1007/978-1-4471-3501-2_14), and I naively thought it was the base of the RTL IR for GCC. But then, going through the paper, I noticed, they are comparing their RTL system to GCC's one. I tried to go back to the commit introducing RTL IR, but it seems it was before the use of git as version control tool and I can't go back the initial commit from 33 years ago. I also tried to grep in the source code for references, but haven't find out anything so far. Also, no mention of inspiration are provided in the internals, as opposed to GIMPLE and its SIMPLE inspiration. Digging a bit more, I've found some academic work from Davidson and Fraser (c.f., https://dl.acm.org/doi/abs/10.1145/357094.357098) which seems to be the first basis of an RTL intermediate language. Hence, my question is about the origin of GCC's RTL IR itself, is the work from Davidson and Fraser the inspiration for the RTL IR? And are there any (other) academic or non-academic sources you can think of? I'll take any pointers you might have. Thank you for reading me, Cheers, Pierrick