1; RUN: opt < %s -instcombine -instcombine-infinite-loop-threshold=3 -S | FileCheck %s 2 3%struct.__va_list = type { i8*, i8*, i8*, i32, i32 } 4 5declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) 6declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) 7declare void @llvm.va_start(i8*) 8declare void @llvm.va_end(i8*) 9declare void @llvm.va_copy(i8*, i8*) 10 11define i32 @func(i8* nocapture readnone %fmt, ...) { 12; CHECK-LABEL: @func( 13; CHECK: entry: 14; CHECK-NEXT: ret i32 0 15entry: 16 %va0 = alloca %struct.__va_list, align 8 17 %va1 = alloca %struct.__va_list, align 8 18 %0 = bitcast %struct.__va_list* %va0 to i8* 19 %1 = bitcast %struct.__va_list* %va1 to i8* 20 call void @llvm.lifetime.start.p0i8(i64 32, i8* %0) 21 call void @llvm.va_start(i8* %0) 22 call void @llvm.lifetime.start.p0i8(i64 32, i8* %1) 23 call void @llvm.va_copy(i8* %1, i8* %0) 24 call void @llvm.va_end(i8* %1) 25 call void @llvm.lifetime.end.p0i8(i64 32, i8* %1) 26 call void @llvm.va_end(i8* %0) 27 call void @llvm.lifetime.end.p0i8(i64 32, i8* %0) 28 ret i32 0 29} 30 31