We just emit before the branch for ternary and the implicit branch for logical expressions. So if we had something like: (b ? a[0] = 1 : a[1] = 2) we'd store both to a[0] and a[1]
same with || and &&
I believe I did this as a consequence of my removal of getters/setters/anders. We should just add tests for that in this bug.
WHLSL is no longer relevant.