The TwoAddressCodeConversionStage performs a three operand to two operand conversion stage. This affects all logical and arithmetic operations, which operate on three operands in IR by default. This stage depends on previously created
The transformation algorithm performs a three->two address code conversion by modifying instructions in the form
a = b c and splitting them into two instructions: A move a = b and changing the original instruction into the format of
a = a b. Please note that this does break SSA properties though as the variable
a will be assigned twice in the intermediate representation. As a consequence this stage should only be used after optimizations and especially after stages depending on the SSA state of the instruction stream.