// RUN: rm -rf %t // RUN: mkdir -p %t // RUN: split-file %s %t // // RUN: %clang_cc1 -std=c++20 %t/counter.cppm -triple x86_64-pc-linux-gnu \ // RUN: -emit-reduced-module-interface -o %t/counter.pcm // RUN: %clang_cc1 -std=c++20 %t/user.cpp -triple x86_64-pc-linux-gnu -fprebuilt-module-path=%t \ // RUN: -disable-llvm-passes -emit-llvm -o - | FileCheck %s //--- counter.cppm export module counter; namespace counter { // Works without thread_local or with inline keyword thread_local int next = 1; export inline auto get_next() noexcept -> int { return next++; } } //--- user.cpp import counter; auto user() -> int { return counter::get_next(); } // CHECK: @_ZN7counterW7counter4nextE = external {{.*}}thread_local {{.*}}global