4 ms·
Unless there's something I don't understand, that's what the single static assignment pass does in a compiler.
by nwallin 7y ago
Unless there's something I don't understand, that's what the single static assignment pass does in a compiler.
- AgentME 7y agoNew bindings live at different addresses (if you pass a pointer to one binding, and then make a new binding with a new value, the existing pointer will point to the old value and not the new binding's value) and bindings made in a loop iteration won't live to the next iteration.
- lostmsu 7y agoThis sounds like an implementation detail. What does the language spec say about the outcome.
- AgentME 7y agoDifferent bindings are like entirely different variables that just coincidentally share the same name.
- a1369209993 7y agoThe (C) language spec says that: x = 5; int* p = &x; x = 6; // new binding of x printf("%i\n",*p); prints "6". If new bindings lived at different addresses, it would print "5".
- coldtea 7y agoWhen the SSA pass happens in the compiler it's already too late to have guaranteed certain behaviours from the source stage... E.g. you can turn a C program into SSA, but if you have aliasing issues, it's not gonna fix them...