// 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:%.*]], i32* [[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:%.*]], i32* [[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:%.*]], i32* [[A_ADDR]], align 4
// CHECK3-NEXT:    ret void
//
void test(int a)
{
}

#endif
