Puzzled by this behavior

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Thu Jun 2 22:36:55 UTC 2022


On Thursday, 2 June 2022 at 21:47:06 UTC, deadalnix wrote:
> I would like to know what you think about sea of node vs SSA on 
> this front?
>
> I'm looking at significantly changing SDC's IR now that I have 
> a better idea of what it should look like, but I'm not quite 
> sure which of the two would be more suitable.

It is very difficult to be sure about anything a priori as it 
will have to be designed for the passes you want to make, or 
maybe it should be designed so that it is easy to translate to a 
specialized IRs, or maybe it should be designed so that your IR 
can be annotated and extended for future passes that has not been 
decided upon yet. Many options…

It is important to retain all the type information and 
constraints so that they can be exploited. One weakness in Clang 
is that the translation to the LLVM IR has tossed away too much 
information (type/constraints). Maybe ask yourself if there is 
some information worth retaining from template expansion, like 
template constraints? Constraints = opportunities to deduce.

I guess one would want to start by listing the passes you wish to 
perform and the information you need to do so. Maybe look at what 
data structures Swift has landed on to support ARC passes? 
Another thing worth looking at is Boogie, which performs some 
transforms so that asserts in functions can be resolved (on a 
lucky day) by an SMT solver.

I wouldn't say you have to do this or that, but a graph of nodes 
is always the natural option when you want to allow future 
extensions. You can worry about performance later, I would go for 
something that is flexible and "bug resistant". Basic blocks can 
be a single node, if you want, so it might not be an either-or 
choice. I don't think you will be sure what is right until you 
write some passes.

Maybe start with something minimal (for a language subset) and 
try to write som passes for that minimal subset, then you get a 
feel for what you need. I think I would do that, so you can try 
different options with lower costs.





More information about the Digitalmars-d mailing list