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. ```llvm 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 ```llvm ; 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 } ``` cc @nunoplopes @regehr