================
@@ -24,3 +24,26 @@ entry:
store float %3, ptr %arrayidx.dst, align 4
ret void
}
+
+; All offsets must be positive, so inbounds can be preserved.
----------------
ritter-x2a wrote:
No, the last GEP in tgt should use `%arrayidx.dst` instead of `%arrayidx.src`.
Here is the IR that the patched LLVM produces:
```
define void @must_be_inbounds(ptr %dst, ptr %src, i32 %i) #0 {
entry:
%i.prom = zext i32 %i to i64
%0 = getelementptr inbounds float, ptr %src, i64 %i.prom
%arrayidx.src2 = getelementptr inbounds i8, ptr %0, i64 4
%1 = load float, ptr %arrayidx.src2, align 4
%2 = getelementptr inbounds float, ptr %dst, i64 %i.prom
%arrayidx.dst4 = getelementptr inbounds i8, ptr %2, i64 4
store float %1, ptr %arrayidx.dst4, align 4
ret void
}
```
That times out for me in the online alive2.
https://github.com/llvm/llvm-project/pull/130617
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits