Please, consider case where Load instruction has the same register as a Destination and a Source Base, like in the example below.
$rax = MOV64rm $rax, 1, $noreg, -8,
Currently, after such instruction, we are setting equivalence relation between $rax and deref->$rax+(-8).
This is not valid, because Source operand uses old value of $rax and Destination operand represents a
new (redefined) value of $rax.
This patch handles such cases by only setting identity equivalence $rax == $rax, without
considering it equal to the Source operand.
Please, consider case where Load instruction has the same register as a Destination and a Source Base, like in the example below.
$rax = MOV64rm $rax, 1, $noreg, -8,
Currently, after such instruction, we are setting equivalence relation between
$rax
andderef->$rax+(-8)
. This is not valid, because Source operand uses old value of$rax
and Destination operand represents a new (redefined) value of$rax
.This patch handles such cases by only setting identity equivalence
$rax
==$rax
, without considering it equal to the Source operand.