// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
// Check that the CHECK lines are generated before the definition and not the declaration
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu %s -emit-llvm -o - | FileCheck %s

int foo(int arg);

void empty_function(void);

// CHECK-LABEL: @main(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[RETVAL:%.*]] = alloca i32, align 4
// CHECK-NEXT:    store i32 0, i32* [[RETVAL]], align 4
// CHECK-NEXT:    call void @empty_function()
// CHECK-NEXT:    [[CALL:%.*]] = call i32 @foo(i32 1)
// CHECK-NEXT:    ret i32 [[CALL]]
//
int main() {
  empty_function();
  return foo(1);
}

// CHECK-LABEL: @foo(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[ARG_ADDR:%.*]] = alloca i32, align 4
// CHECK-NEXT:    store i32 [[ARG:%.*]], i32* [[ARG_ADDR]], align 4
// CHECK-NEXT:    [[TMP0:%.*]] = load i32, i32* [[ARG_ADDR]], align 4
// CHECK-NEXT:    ret i32 [[TMP0]]
//
int foo(int arg) {
  return arg;
}

// CHECK-LABEL: @empty_function(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    ret void
//
void empty_function(void) {}
