blob: e2d52c939d05335622ea42636b1871cdf0dcd647 [file] [edit]
// RUN: split-file %s %t
// Build the module interface to a PCM
// RUN: %clang_cc1 -std=c++20 -triple powerpc-ibm-aix \
// RUN: -emit-module-interface %t/copymod.cppm -o %t/copymod.pcm
// Verify that module interface emits copyright global when compiled to IR
// RUN: %clang_cc1 -std=c++20 -triple powerpc-ibm-aix -emit-llvm %t/copymod.cppm -o - \
// RUN: | FileCheck %s --check-prefix=CHECK-MOD
// CHECK-MOD: @[[LOADTIME_COMMENT_STR:__loadtime_comment_str_[0-9a-f]+]] = weak_odr hidden unnamed_addr constant [10 x i8] c"module me\00", section "__loadtime_comment", align 1, !loadtime_comment !0
// CHECK-MOD: @llvm.compiler.used = appending global {{.*}} @[[LOADTIME_COMMENT_STR]]
// Compile an importing TU that uses the prebuilt module and verify that it
// does NOT re-emit the module's copyright global.
// RUN: %clang_cc1 -std=c++20 -triple powerpc-ibm-aix \
// RUN: -fprebuilt-module-path=%t -emit-llvm %t/importmod.cc -o - \
// RUN: | FileCheck %s --check-prefix=CHECK-IMPORT
// CHECK-IMPORT-NOT: @__loadtime_comment_str_
// CHECK-IMPORT-NOT: c"module me\00"
//--- copymod.cppm
export module copymod;
#pragma comment(copyright, "module me")
export inline void f [[gnu::always_inline]]() {}
//--- importmod.cc
import copymod;
void g() { f(); }