Open
Description
Lifetime.start/end in general should only be used for alloca'd pointers. When running the "operands-to-args" pass the lifetimes should be dropped.
define void @src() {
entry:
%p = alloca i32, align 4
call void @llvm.lifetime.start.p0(i64 4, ptr %p)
store i32 10, ptr %p, align 4
%a = load i32, ptr %p, align 4
call void @llvm.lifetime.end.p0(i64 4, ptr %p)
ret void
}
Running llvm-reduce --delta-passes=operands-to-args --test=test.sh src.ll
; ModuleID = 'src.ll'
source_filename = "src.ll"
define void @src(ptr %p) {
entry:
%p1 = alloca i32, align 4
call void @llvm.lifetime.start.p0(i64 4, ptr %p)
store i32 10, ptr %p, align 4
%a = load i32, ptr %p, align 4
call void @llvm.lifetime.end.p0(i64 4, ptr %p)
ret void
}