[PATCH] D114279: [InstSimplify] Fold X {lshr,udiv} C <u X --> true for nonzero X, non-identity C
Erik Desjardins via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 19 13:20:28 PST 2021
erikdesjardins created this revision.
erikdesjardins added reviewers: nikic, lebedev.ri, spatel.
Herald added subscribers: JDevlieghere, hiraditya.
erikdesjardins requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
This eliminates the bounds check in Rust code like
pub fn mid(data: &[i32]) -> i32 {
if data.is_empty() { return 0; }
return data[data.len()/2];
}
(from https://blog.sigplan.org/2021/11/18/undefined-behavior-deserves-a-better-reputation/)
Alive proofs:
lshr https://alive2.llvm.org/ce/z/t9Btcx
udiv https://alive2.llvm.org/ce/z/vLcbRQ
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D114279
Files:
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/test/Transforms/InstSimplify/compare.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D114279.388611.patch
Type: text/x-patch
Size: 4838 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211119/42dcf839/attachment.bin>
More information about the llvm-commits
mailing list