| Issue |
61670
|
| Summary |
[GVN] memcpy miscompile
|
| Labels |
|
| Assignees |
|
| Reporter |
aeubanks
|
```
$ cat /tmp/a.ll
define i64 @src(i64 %arg) {
%call2 = alloca i64
%call3 = alloca i64
store i64 %arg, ptr %call2, align 8
tail call void @llvm.memcpy.p0.p0.i64(ptr %call3, ptr %call2, i64 8, i1 false)
%load1 = load i64, ptr %call3, align 8
ret i64 %load1
}
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
$ opt -p gvn -S /tmp/a.ll
define i64 @src(i64 %arg) {
%call2 = alloca i64, align 8
%call3 = alloca i64, align 8
store i64 %arg, ptr %call2, align 8
tail call void @llvm.memcpy.p0.p0.i64(ptr %call3, ptr %call2, i64 8, i1 false)
ret i64 undef ; ???
}
```
alive verifies the miscompile: https://alive2.llvm.org/ce/z/GssD2L
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs