[llvm-bugs] [Bug 44403] New: Folding 'gep p, (q - p)' to q should check it is never used for loads & stores
via llvm-bugs
llvm-bugs at lists.llvm.org
Sun Dec 29 12:16:26 PST 2019
https://bugs.llvm.org/show_bug.cgi?id=44403
Bug ID: 44403
Summary: Folding 'gep p, (q - p)' to q should check it is never
used for loads & stores
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P
Component: Scalar Optimizations
Assignee: unassignedbugs at nondot.org
Reporter: juneyoung.lee at sf.snu.ac.kr
CC: llvm-bugs at lists.llvm.org
```
$ cat gep.ll
define i8* @f(i8* %p, i8* %q) {
%i = ptrtoint i8* %p to i64
%j = ptrtoint i8* %q to i64
%diff = sub i64 %j, %i
%p2 = getelementptr i8, i8* %p, i64 %diff
ret i8* %p2
}
$ opt -instcombine gep.ll -S -o -
; ModuleID = 'gep.ll'
source_filename = "gep.ll"
define i8* @f(i8* %p, i8* %q) {
ret i8* %q
}
```
According to the GEP document:
https://llvm.org/docs/GetElementPtr.html#can-i-compute-the-distance-between-two-objects-and-add-that-value-to-one-address-to-compute-the-other-address
Replacing ‘gep p, (q - p)’ with q is invalid when it is used by memory access
operations.
InstCombine and InstSimplify both do this.
`llc gep.ll -o -` emits an optimized assembly, so SelDag or MIR seem to already
have optimizations for these this pattern if my understanding is correct?
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20191229/8ce3b3ab/attachment.html>
More information about the llvm-bugs
mailing list