aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2021-11-04 09:24:27 +0000
committerDavid Green <david.green@arm.com>2021-11-04 09:24:27 +0000
commit1e5f814302f8c24bdcc6f79623b86bd32231278f (patch)
treec07a79dbf1b39f6f62c343cc63112a9cd91b5eaa /llvm/tools/llvm-objdump/llvm-objdump.cpp
parent341cc1b4113223352c99199f7c26ea7329d00fb7 (diff)
downloadllvm-1e5f814302f8c24bdcc6f79623b86bd32231278f.zip
llvm-1e5f814302f8c24bdcc6f79623b86bd32231278f.tar.gz
llvm-1e5f814302f8c24bdcc6f79623b86bd32231278f.tar.bz2
[InstCombine] Fix infinite recursion in ashr/xor vector fold.
The added test has poison lanes due to the vector shuffle. This can cause an infinite loop of combines in instcombine where it folds xor(ashr, -1) -> select (icmp slt 0), -1, 0 -> sext (icmp slt 0) -> xor(ashr, -1). We usually prevent this by checking that the xor constant is not -1, but with vectors some of the lanes may be -1, some may be poison. So this changes the way we detect that from "!C1->isAllOnesValue()" to "!match(C1, m_AllOnes())", which is more able to detect that some of the lanes are poison. Fixes PR52397
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions