Actually the using of exceptions is much simpler because there is no
work required at all, it is just the number of exceptions which are available.
I could keep the SSA states simple by having it be input based rather than
both input and output based. The input of a target instruction is the output
of the source instruction's input. For example, there could be some work that
is performed and then a
return is reached making that work pointless.
When it comes to SSA, I am going to after decoding the operations go then determine the state of everything.
Sharing the compute machines with SSA computations would complicate and put the SSA related stuff in the computations. Once all the SSA stuff is figured out then nothing needs to be figured out after that. Thus, in these cases the computation code would be checking immutable state and just doing nothing anyway. So the SSA stuff is elsewhere then.
For SSA stuff, everything can be a "phi" junction so to speak.
When an instruction has multiple jump sources and possibly from instructions which have not been calculated yet, then I can create virtual phi and values for the current instructions. They would be marked as potential phi functions. So the values would be newly assigned and unique, however the compiler could just treat the vlaue as an alias of another. So basically it is a pointless copy operation that is performed. But this is only for jump sources. If it is determined that state is known from the jump sources then only known changed variables need to be calculated.
For broadband SSA set, I need a function which sets all the desired types and potential checking in the target type. So basically it goes through all targets and exception handlers for an operation and sets the type and values. If they are already set then they become phis and things are checked to make sure they are valid.