[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / InstCombine / vararg.ll
blob111cb4de7bc321bd6d664119f39ead80ca8f18b0
1 ; RUN: opt < %s -instcombine -S | FileCheck %s
3 %struct.__va_list = type { i8*, i8*, i8*, i32, i32 }
5 declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
6 declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
7 declare void @llvm.va_start(i8*)
8 declare void @llvm.va_end(i8*)
9 declare void @llvm.va_copy(i8*, i8*)
11 define i32 @func(i8* nocapture readnone %fmt, ...) {
12 ; CHECK-LABEL: @func(
13 ; CHECK: entry:
14 ; CHECK-NEXT: ret i32 0
15 entry:
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