Issue 121890
Summary [InstCombine] Missing flag check when folding comparison of geps with the same base pointer
Labels miscompilation, llvm:instcombine
Assignees dtcxzyw
Reporter dtcxzyw
    Alive2: https://alive2.llvm.org/ce/z/P5XbMx
```

----------------------------------------
define i1 @src(ptr %ptr, i8 %idx1, i8 %idx2) {
#0:
  %gep1 = gep ptr %ptr, 4 x i8 %idx1
  %gep2 = gep ptr %ptr, 4 x i8 %idx2
  %cmp = icmp eq ptr %gep1, %gep2, offsetonly
  ret i1 %cmp
}
=>
define i1 @tgt(ptr %ptr, i8 %idx1, i8 %idx2) {
#0:
  %cmp = icmp eq i8 %idx1, %idx2
  ret i1 %cmp
}
Transformation doesn't verify!

ERROR: Value mismatch

Example:
ptr %ptr = null
i8 %idx1 = #x00 (0)
i8 %idx2 = #x40 (64)

Source:
ptr %gep1 = null
ptr %gep2 = null
i1 %cmp = #x1 (1)

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >	size: 0	align: 1	alloc type: 0	alive: false	address: 0
Block 1 >	size: 0	align: 1	alloc type: 0	alive: true	address: 1

Target:
i1 %cmp = #x0 (0)
Source value: #x1 (1)
Target value: #x0 (0)


----------------------------------------
define i1 @src1(ptr %ptr, i8 %idx1, i8 %idx2) {
#0:
  %gep1 = gep nuw ptr %ptr, 4 x i8 %idx1
  %gep2 = gep nuw ptr %ptr, 4 x i8 %idx2
  %cmp = icmp eq ptr %gep1, %gep2, offsetonly
  ret i1 %cmp
}
=>
define i1 @tgt1(ptr %ptr, i8 %idx1, i8 %idx2) {
#0:
  %cmp = icmp eq i8 %idx1, %idx2
  ret i1 %cmp
}
Transformation seems to be correct!


----------------------------------------
define i1 @src2(ptr %ptr, i8 %idx1, i8 %idx2) {
#0:
  %gep1 = gep nusw ptr %ptr, 4 x i8 %idx1
 %gep2 = gep nusw ptr %ptr, 4 x i8 %idx2
  %cmp = icmp eq ptr %gep1, %gep2, offsetonly
  ret i1 %cmp
}
=>
define i1 @tgt2(ptr %ptr, i8 %idx1, i8 %idx2) {
#0:
  %cmp = icmp eq i8 %idx1, %idx2
  ret i1 %cmp
}
Transformation seems to be correct!

Summary:
  2 correct transformations
  1 incorrect transformations
  0 failed-to-prove transformations
  0 Alive2 errors
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to