Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[InstSimplify] Allow gep inbounds x, 0 -> x in non-refining op replac…
…ement After the semantics change from https://reviews.llvm.org/D154051, gep inbounds x, 0 can no longer produce poison. As such, we can also perform this fold during non-refining operand replacement and avoid unnecessary drops of the inbounds flag. The online alive2 version has not been update to the new semantics yet, but we can use the following proof locally: define ptr @src(ptr %base, i64 %offset) { %cmp = icmp eq i64 %offset, 0 %gep = getelementptr inbounds i8, ptr %base, i64 %offset %sel = select i1 %cmp, ptr %base, ptr %gep ret ptr %sel } define ptr @tgt(ptr %base, i64 %offset) { %gep = getelementptr inbounds i8, ptr %base, i64 %offset ret ptr %gep }
- Loading branch information