summaryrefslogtreecommitdiff
path: root/clang/test/CIR/CodeGen/linkage-spec.cpp
blob: 1affecd28d4889a3c52a4688cbaaafd411dfd004 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o - 2>&1 | FileCheck %s

extern "C" void TopLevelC(){}
// CHECK: cir.func dso_local @TopLevelC() inline(never) {
extern "C++" void TopLevelCpp(){}
// CHECK: cir.func dso_local @_Z11TopLevelCppv() inline(never) {

extern "C++" {
  void ExternCppEmpty(){}
  // CHECK: cir.func dso_local @_Z14ExternCppEmptyv() inline(never) {
  extern "C" void ExternCpp_C(){}
  // CHECK: cir.func dso_local @ExternCpp_C() inline(never) {
  extern "C++" void ExternCpp_Cpp(){}
  // CHECK: cir.func dso_local @_Z13ExternCpp_Cppv() inline(never) {

  extern "C" {
  void ExternCpp_CEmpty(){}
  // CHECK: cir.func dso_local @ExternCpp_CEmpty() inline(never) {
  extern "C" void ExternCpp_C_C(){}
  // CHECK: cir.func dso_local @ExternCpp_C_C() inline(never) {
  extern "C++" void ExternCpp_C_Cpp(){}
  // CHECK: cir.func dso_local @_Z15ExternCpp_C_Cppv() inline(never) {
  }
}

extern "C" {
  void ExternCEmpty(){}
  // CHECK: cir.func dso_local @ExternCEmpty() inline(never) {
  extern "C" void ExternC_C(){}
  // CHECK: cir.func dso_local @ExternC_C() inline(never) {
  extern "C++" void ExternC_Cpp(){}
  // CHECK: cir.func dso_local @_Z11ExternC_Cppv() inline(never) {
  extern "C++" {
  void ExternC_CppEmpty(){}
  // CHECK: cir.func dso_local @_Z16ExternC_CppEmptyv() inline(never) {
  extern "C" void ExternC_Cpp_C(){}
  // CHECK: cir.func dso_local @ExternC_Cpp_C() inline(never) {
  extern "C++" void ExternC_Cpp_Cpp(){}
  // CHECK: cir.func dso_local @_Z15ExternC_Cpp_Cppv() inline(never) {
  }
}