summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2021-07-01 17:30:04 -0400
committerSanjay Patel <spatel@rotateright.com>2021-07-01 17:40:07 -0400
commit9eb613b2de3163686b1a4bd1160f15ac56a4b083 (patch)
treeef21e8f8eefd510563d00690c2b70e1613ff25ad /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
parent09e3bf01b3da978b5437bf84c0b0f290974d8743 (diff)
[InstSimplify] do not propagate poison from select arm to icmp user
This is the cause of the miscompile in: https://llvm.org/PR50944 The problem has likely existed for some time, but it was made visible with: 5af8bacc94024 ( D104661 ) handleOtherCmpSelSimplifications() assumed it can convert select of constants to bool logic ops, but that does not work with poison. We had a very similar construct in InstCombine, so the fix here mimics the fix there. The bug is in instsimplify, but I'm not sure how to reproduce it outside of instcombine. The reason this is visible in instcombine is because we have a hack (FIXME) to bypass simplification of a select when it has an icmp user: https://github.com/llvm/llvm-project/blob/955f12589940634acc6c9901e8b25534808f691c/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp#L2632 So we get to an unusual case where we are trying to simplify an instruction that has an operand that would have already simplified if we had processed it in normal order. Differential Revision: https://reviews.llvm.org/D105298
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
0 files changed, 0 insertions, 0 deletions