brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 93d230d Raw
59 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4%struct.__va_list = type { ptr, ptr, ptr, i32, i32 }5 6define void @func(ptr nocapture readnone %fmt, ...) {7; CHECK-LABEL: define void @func(8; CHECK-SAME: ptr readnone captures(none) [[FMT:%.*]], ...) {9; CHECK-NEXT:  [[ENTRY:.*:]]10; CHECK-NEXT:    ret void11;12entry:13  %va0 = alloca %struct.__va_list, align 814  %va1 = alloca %struct.__va_list, align 815  call void @llvm.lifetime.start.p0(ptr %va0)16  call void @llvm.va_start(ptr %va0)17  call void @llvm.lifetime.start.p0(ptr %va1)18  call void @llvm.va_copy(ptr %va1, ptr %va0)19  call void @llvm.va_end(ptr %va1)20  call void @llvm.lifetime.end.p0(ptr %va1)21  call void @llvm.va_end(ptr %va0)22  call void @llvm.lifetime.end.p0(ptr %va0)23  ret void24}25 26declare void @callee(ptr)27 28define void @func_destroy_copy_src(ptr nocapture readnone %fmt, ...) {29; CHECK-LABEL: define void @func_destroy_copy_src(30; CHECK-SAME: ptr readnone captures(none) [[FMT:%.*]], ...) {31; CHECK-NEXT:  [[ENTRY:.*:]]32; CHECK-NEXT:    [[VA0:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 833; CHECK-NEXT:    [[VA1:%.*]] = alloca [[STRUCT___VA_LIST]], align 834; CHECK-NEXT:    call void @llvm.lifetime.start.p0(ptr nonnull [[VA0]])35; CHECK-NEXT:    call void @llvm.lifetime.start.p0(ptr nonnull [[VA1]])36; CHECK-NEXT:    call void @llvm.va_start.p0(ptr nonnull [[VA0]])37; CHECK-NEXT:    call void @llvm.va_copy.p0(ptr nonnull [[VA1]], ptr nonnull [[VA0]])38; CHECK-NEXT:    call void @llvm.va_end.p0(ptr [[VA0]])39; CHECK-NEXT:    call void @callee(ptr nonnull [[VA1]])40; CHECK-NEXT:    call void @llvm.va_end.p0(ptr [[VA1]])41; CHECK-NEXT:    call void @llvm.lifetime.end.p0(ptr nonnull [[VA1]])42; CHECK-NEXT:    call void @llvm.lifetime.end.p0(ptr nonnull [[VA0]])43; CHECK-NEXT:    ret void44;45entry:46  %va0 = alloca %struct.__va_list, align 847  %va1 = alloca %struct.__va_list, align 848  call void @llvm.lifetime.start.p0(ptr %va0)49  call void @llvm.lifetime.start.p0(ptr %va1)50  call void @llvm.va_start(ptr %va0)51  call void @llvm.va_copy(ptr %va1, ptr %va0)52  call void @llvm.va_end(ptr %va0)53  call void @callee(ptr %va1)54  call void @llvm.va_end(ptr %va1)55  call void @llvm.lifetime.end.p0(ptr %va1)56  call void @llvm.lifetime.end.p0(ptr %va0)57  ret void58}59