DescriptionSubzero: Fix over-aggressive bool folding.
The problem is that bitcode like this:
%cond = cmp %var, [mem]
store ..., mem
br cond, target1, target2
would be bool-folded into this:
//deleted cmp
store ..., mem
br (%var==[mem]), target1, target2
And if the memory operands point to the same location, results are incorrect.
In addition to stores, this is a problem for RMW instructions, and most call instructions which could perform stores before returning.
BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4370
R=eholk@chromium.org, jpp@chromium.org
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=f1f773dd2c9c7118e07caa61d580bdba4447c25c
Patch Set 1 #
Total comments: 24
Patch Set 2 : Code review changes #Patch Set 3 : More code review changes #Patch Set 4 : Hack for pure virtual method #
Messages
Total messages: 14 (3 generated)
|