// 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, ptr [[RETVAL]], align 4
// CHECK-NEXT:    call void @empty_function()
// CHECK-NEXT:    [[CALL:%.*]] = call i32 @foo(i32 noundef 1)
// CHECK-NEXT:    ret i32 [[CALL]]
//
int main(void) {
  empty_function();
  return foo(1);
}

// CHECK-LABEL: @foo(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[ARG_ADDR:%.*]] = alloca i32, align 4
// CHECK-NEXT:    store i32 [[ARG:%.*]], ptr [[ARG_ADDR]], align 4
// CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[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) {}
