Clang Project

clang_source_code/test/CXX/modules-ts/basic/basic.def.odr/p4/module.cpp
1// RUN: %clang_cc1 -fmodules-ts %S/module.cppm -triple %itanium_abi_triple -emit-module-interface -o %t
2// RUN: %clang_cc1 -fmodules-ts %s -triple %itanium_abi_triple -fmodule-file=%t -emit-llvm -o - | FileCheck %s --implicit-check-not=unused --implicit-check-not=global_module
3
4// CHECK-DAG: @extern_var_exported = external {{(dso_local )?}}global
5// CHECK-DAG: @inline_var_exported = linkonce_odr {{(dso_local )?}}global
6// CHECK-DAG: @_ZW6ModuleE19static_var_exported = available_externally {{(dso_local )?}}global i32 0,
7// CHECK-DAG: @const_var_exported = available_externally {{(dso_local )?}}constant i32 3,
8//
9// CHECK-DAG: @_ZW6ModuleE25extern_var_module_linkage = external {{(dso_local )?}}global
10// CHECK-DAG: @_ZW6ModuleE25inline_var_module_linkage = linkonce_odr {{(dso_local )?}}global
11// CHECK-DAG: @_ZW6ModuleE25static_var_module_linkage = available_externally {{(dso_local )?}}global i32 0,
12// CHECK-DAG: @_ZW6ModuleE24const_var_module_linkage = available_externally {{(dso_local )?}}constant i32 3,
13
14module Module;
15
16void use() {
17  // CHECK: define linkonce_odr {{.*}}@_Z20used_inline_exportedv
18  used_inline_exported();
19  // CHECK: declare {{.*}}@_Z18noninline_exportedv
20  noninline_exported();
21
22  (void)&extern_var_exported;
23  (void)&inline_var_exported;
24  (void)&static_var_exported; // FIXME: Should not be exported.
25  (void)&const_var_exported;
26
27  // FIXME: This symbol should not be visible here.
28  // CHECK: declare {{.*}}@_ZW6ModuleE26used_static_module_linkagev
29  used_static_module_linkage();
30
31  // CHECK: define linkonce_odr {{.*}}@_ZW6ModuleE26used_inline_module_linkagev
32  used_inline_module_linkage();
33
34  // CHECK: declare {{.*}}@_ZW6ModuleE24noninline_module_linkagev
35  noninline_module_linkage();
36
37  (void)&extern_var_module_linkage;
38  (void)&inline_var_module_linkage;
39  (void)&static_var_module_linkage; // FIXME: Should not be visible here.
40  (void)&const_var_module_linkage;
41}
42