// REQUIRES: powerpc-registered-target // RUN: %clang_cc1 -triple powerpc-unknown-openbsd -fblocks -emit-llvm -o - %s | FileCheck %s #include id testObject(va_list ap) { return va_arg(ap, id); } // CHECK: @testObject // CHECK: using_regs: // CHECK-NEXT: getelementptr inbounds %struct.__va_list_tag, %struct.__va_list_tag* %{{[0-9]+}}, i32 0, i32 4 // CHECK-NEXT: load i8*, i8** %{{[0-9]+}}, align 4 // CHECK-NEXT: mul i8 %numUsedRegs, 4 // CHECK-NEXT: getelementptr inbounds i8, i8* %{{[0-9]+}}, i8 %{{[0-9]+}} // CHECK-NEXT: bitcast i8* %{{[0-9]+}} to i8** // CHECK-NEXT: add i8 %numUsedRegs, 1 // CHECK-NEXT: store i8 %{{[0-9]+}}, i8* %gpr, align 4 // CHECK-NEXT: br label %cont typedef void (^block)(void); block testBlock(va_list ap) { return va_arg(ap, block); } // CHECK: @testBlock // CHECK: using_regs: // CHECK-NEXT: getelementptr inbounds %struct.__va_list_tag, %struct.__va_list_tag* %{{[0-9]+}}, i32 0, i32 4 // CHECK-NEXT: load i8*, i8** %{{[0-9]+}}, align 4 // CHECK-NEXT: mul i8 %numUsedRegs, 4 // CHECK-NEXT: getelementptr inbounds i8, i8* %{{[0-9]+}}, i8 %{{[0-9]+}} // CHECK-NEXT: bitcast i8* %{{[0-9]+}} to void ()** // CHECK-NEXT: add i8 %numUsedRegs, 1 // CHECK-NEXT: store i8 %{{[0-9]+}}, i8* %gpr, align 4 // CHECK-NEXT: br label %cont