// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
// Check that the non-clang/non-filechecked runlines execute
// RUN: cp %s %S/../Output/execute-all-runlines.copy.c
// RUN: cp %S/../Output/execute-all-runlines.copy.c %s.copy.c
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fopenmp %s.copy.c -emit-llvm-bc -o %t-host.bc
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fopenmp -fopenmp-host-ir-file-path %t-host.bc %s.copy.c -emit-llvm -o - | FileCheck %s --check-prefix=CHECK1
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-pch %s -o %t
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -include-pch %t %s.copy.c -emit-llvm -o - | FileCheck %s --check-prefix=CHECK2
// RUN: %clang_cc1 -triple powerpc64le-unknown-linux-gnu -emit-pch %s -o %t
// RUN: %clang_cc1 -triple powerpc64le-unknown-linux-gnu -include-pch %t %s.copy.c -emit-llvm -o - | FileCheck %s --check-prefix=CHECK3


#ifndef HEADER
#define HEADER

void use(int);

// CHECK1-LABEL: @test(
// CHECK1-NEXT:  entry:
// CHECK1-NEXT:    [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK1-NEXT:    store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
// CHECK1-NEXT:    ret void
//
// CHECK2-LABEL: @test(
// CHECK2-NEXT:  entry:
// CHECK2-NEXT:    [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK2-NEXT:    store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
// CHECK2-NEXT:    ret void
//
// CHECK3-LABEL: @test(
// CHECK3-NEXT:  entry:
// CHECK3-NEXT:    [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK3-NEXT:    store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
// CHECK3-NEXT:    ret void
//
void test(int a)
{
}

#endif
