diff --git a/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll b/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll index 61c46185b3378..b68f7182feaa2 100644 --- a/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll +++ b/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll @@ -67,3 +67,15 @@ define void @alloca_constexpr_elt() { store i32 0, ptr %alloca ret void } + +; CHECK-LABEL: @alloca_lifetimes( +; ZERO: call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) +; ONE: call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) +; POISON: call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) +define void @alloca_lifetimes() { + %alloca = alloca i32 + call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) + store i32 0, ptr %alloca + call void @llvm.lifetime.end.p0(i64 4, ptr %alloca) + ret void +} diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp index 8b6446725b7d4..79272fe2eaeb7 100644 --- a/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp +++ b/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp @@ -73,6 +73,9 @@ static bool shouldReduceOperand(Use &Op) { if (&CB->getCalledOperandUse() == &Op) return false; } + // lifetime intrinsic argument must be an alloca. + if (isa(Op.getUser())) + return false; return true; }