Skip to content

[ValueTracking] ptrdiff(X, Y) != 0 implies X != Y #118106

@dtcxzyw

Description

@dtcxzyw

Alive2: https://alive2.llvm.org/ce/z/NdrNbE

target datalayout = "p:8:8:8"

define i1 @src(ptr %p0, ptr %p1, i8 range(i8 1, 0) %nonzero) {
entry:
  %i0 = ptrtoint ptr %p0 to i8
  %i1 = ptrtoint ptr %p1 to i8
  %diff = sub i8 %i0, %i1
  %cond = icmp eq i8 %diff, %nonzero
  call void @llvm.assume(i1 %cond)
  %cmp = icmp eq ptr %p0, %p1
  ret i1 %cmp
}

define i1 @tgt(ptr %p0, ptr %p1, i8 range(i8 1, 0) %nonzero) {
  ret i1 false
}

See also dtcxzyw/llvm-tools#35.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions