xref: /llvm-project/clang/test/CodeGenCXX/module-extern-C.cpp (revision 4168efe1b2243ed31c30c82583a18bff78cfa076)
1*4168efe1SChuanqi Xu // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++20 -emit-llvm -triple %itanium_abi_triple -o - %s | FileCheck %s
2e587372fSChuanqi Xu 
3e587372fSChuanqi Xu module;
4e587372fSChuanqi Xu 
5e587372fSChuanqi Xu #include "Inputs/module-extern-C.h"
6e587372fSChuanqi Xu 
7e587372fSChuanqi Xu export module x;
8e587372fSChuanqi Xu 
9*4168efe1SChuanqi Xu // CHECK: void @foo()
foo()10e587372fSChuanqi Xu extern "C" void foo() {
11e587372fSChuanqi Xu   return;
12e587372fSChuanqi Xu }
13e587372fSChuanqi Xu 
14e587372fSChuanqi Xu extern "C" {
15*4168efe1SChuanqi Xu // CHECK: void @bar()
bar()16e587372fSChuanqi Xu void bar() {
17e587372fSChuanqi Xu   return;
18e587372fSChuanqi Xu }
19*4168efe1SChuanqi Xu // CHECK: i32 @baz()
baz()20e587372fSChuanqi Xu int baz() {
21e587372fSChuanqi Xu   return 3;
22e587372fSChuanqi Xu }
23*4168efe1SChuanqi Xu // CHECK: double @double_func()
double_func()24e587372fSChuanqi Xu double double_func() {
25e587372fSChuanqi Xu   return 5.0;
26e587372fSChuanqi Xu }
27e587372fSChuanqi Xu }
28