xref: /llvm-project/clang/test/Modules/cxx20-no-check-input.cppm (revision 5b388f86aa9ce65778677ae56587867d6786355e)
1*5b388f86SChuanqi Xu// RUN: rm -rf %t
2*5b388f86SChuanqi Xu// RUN: split-file %s %t
3*5b388f86SChuanqi Xu// RUN: cd %t
4*5b388f86SChuanqi Xu//
5*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
6*5b388f86SChuanqi Xu// RUN:     %t/a.cppm -emit-module-interface -o %t/a.pcm
7*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
8*5b388f86SChuanqi Xu// RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
9*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
10*5b388f86SChuanqi Xu// RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
11*5b388f86SChuanqi Xu//
12*5b388f86SChuanqi Xu// RUN: echo "//Update" >> %t/foo.h
13*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
14*5b388f86SChuanqi Xu// RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
15*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
16*5b388f86SChuanqi Xu// RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
17*5b388f86SChuanqi Xu//
18*5b388f86SChuanqi Xu// RUN: echo "//Update" >> %t/a.cppm
19*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
20*5b388f86SChuanqi Xu// RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
21*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
22*5b388f86SChuanqi Xu// RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
23*5b388f86SChuanqi Xu//
24*5b388f86SChuanqi Xu// RUN: rm -f %t/foo.h
25*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
26*5b388f86SChuanqi Xu// RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
27*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
28*5b388f86SChuanqi Xu// RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
29*5b388f86SChuanqi Xu//
30*5b388f86SChuanqi Xu// RUN: rm -f %t/a.cppm
31*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
32*5b388f86SChuanqi Xu// RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
33*5b388f86SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
34*5b388f86SChuanqi Xu// RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
35*5b388f86SChuanqi Xu
36*5b388f86SChuanqi Xu//--- foo.h
37*5b388f86SChuanqi Xuinline int foo = 43;
38*5b388f86SChuanqi Xu
39*5b388f86SChuanqi Xu//--- a.cppm
40*5b388f86SChuanqi Xu// expected-no-diagnostics
41*5b388f86SChuanqi Xumodule;
42*5b388f86SChuanqi Xu#include "foo.h"
43*5b388f86SChuanqi Xuexport module a;
44*5b388f86SChuanqi Xuexport using ::foo;
45*5b388f86SChuanqi Xu
46*5b388f86SChuanqi Xu//--- a.ll
47*5b388f86SChuanqi Xu// check the LLVM IR are generated succesfully.
48*5b388f86SChuanqi Xu// CHECK: define{{.*}}@_ZGIW1a
49*5b388f86SChuanqi Xu
50*5b388f86SChuanqi Xu//--- use.cpp
51*5b388f86SChuanqi Xu// expected-no-diagnostics
52*5b388f86SChuanqi Xuimport a;
53*5b388f86SChuanqi Xuint use() {
54*5b388f86SChuanqi Xu    return foo;
55*5b388f86SChuanqi Xu}
56*5b388f86SChuanqi Xu
57