brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 7b89050 Raw
66 lines · plain
1// RUN: rm -rf %t2// RUN: mkdir -p %t3// RUN: split-file %s %t4//5// RUNX: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \6// RUNX:     -emit-module-interface %t/a.cppm -o %t/a.pcm7// RUNX: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \8// RUNX:     %t/b.cpp -fmodule-file=a=%t/a.pcm -disable-llvm-passes \9// RUNX:     -emit-llvm -o - | FileCheck %t/b.cpp10// RUNX: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \11// RUNX:     %t/c.cpp -fmodule-file=a=%t/a.pcm -disable-llvm-passes \12// RUNX:     -emit-llvm -o - | FileCheck %t/c.cpp13 14// Test again with reduced BMI.15// RUN: rm -rf %t16// RUN: mkdir -p %t17// RUN: split-file %s %t18//19// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \20// RUN:     -emit-reduced-module-interface %t/a.cppm -o %t/a.pcm21// RUNX: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \22// RUNX:     %t/b.cpp -fmodule-file=a=%t/a.pcm -disable-llvm-passes \23// RUNX:     -emit-llvm -o - | FileCheck %t/b.cpp24// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \25// RUN:     %t/c.cpp -fmodule-file=a=%t/a.pcm -disable-llvm-passes \26// RUN:     -emit-llvm -o - | FileCheck %t/c.cpp27 28//--- a.cppm29export module a;30 31struct integer {32	explicit operator int() const {33		return 0;34	}35};36 37export template<typename>38int a = static_cast<int>(integer());39 40int aa() {41	return a<void>;42}43 44 45//--- b.cpp46import a;47 48void b() {}49 50// CHECK-NOT: @_ZW1a1dIvE =51// CHECK-NOT: @_ZGVW1a1dIvE =52// CHECK-NOT: @_ZW1a11dynamic_var =53// CHECK-NOT: @_ZGVW1a11dynamic_var =54// CHECK-NOT: @_ZW1a1aIvE =55// CHECK-NOT: @_ZGVW1a1aIvE =56 57//--- c.cpp58import a;59int c() {60    return a<void>;61}62 63// The used variables are generated normally64// CHECK-DAG: @_ZW1a1aIvE =65// CHECK-DAG: @_ZGVW1a1aIvE =66