[PATCH] D110867: X86InstrInfo: Support immediates that are +1/-1 different in optimizeCompareInstr
Hans Wennborg via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 3 08:56:35 PDT 2021
hans added a comment.
This seems to have caused a miscompile of Chromium, see https://bugs.chromium.org/p/chromium/issues/detail?id=1265339 (there's even a screenshot).
It appears that in a switch statement, one of the cases gets lost.
See https://bugs.chromium.org/p/chromium/issues/detail?id=1265339#c38 for the attached IR, and how the codegen changes with this patch. Sadly it's not reduced, but at least it's stand-alone.
What we've got is something like:
cmp $21, reg
jle foo
foo:
cmp $20, reg
jle bar
bar:
je baz
I suspect what's happening is that this transformation figures the second cmp is redundant if it changes "jle bar" to "jl bar", but it doesn't take into account that the "je baz" was also depending on that second cmp.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110867/new/
https://reviews.llvm.org/D110867
More information about the llvm-commits
mailing list