Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / cxx20-module-file-info-macros.cpp
blobbc7df1c9f50b59747ccc1690558a248313668c4d
1 // Test the output from -module-file-info about C++20 Modules
2 // can reflect macros definitions correctly.
3 // RUN: rm -rf %t
4 // RUN: mkdir -p %t
5 // RUN: split-file %s %t
6 //
7 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/foo.h -o %t/foo.pcm
8 // RUN: %clang_cc1 -module-file-info %t/foo.pcm | FileCheck %t/foo.h
9 //
10 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/include_foo.h -o %t/include_foo.pcm
11 // RUN: %clang_cc1 -module-file-info %t/include_foo.pcm | FileCheck %t/include_foo.h
13 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header -fmodule-file=%t/foo.pcm \
14 // RUN: %t/import_foo.h -o %t/import_foo.pcm
15 // RUN: %clang_cc1 -module-file-info %t/import_foo.pcm | FileCheck %t/import_foo.h
17 // RUN: %clang_cc1 -std=c++20 %t/named_module.cppm -emit-module-interface -o %t/M.pcm
18 // RUN: %clang_cc1 -module-file-info %t/M.pcm | FileCheck %t/named_module.cppm
20 //--- foo.h
21 #pragma once
22 #define FOO
23 #define CONSTANT 43
24 #define FUNC_Macro(X) (X+1)
25 #define TO_BE_UNDEF
26 #undef TO_BE_UNDEF
28 #ifndef FOO
29 #define CONDITIONAL_DEF
30 #endif
32 #define REDEFINE
33 #define REDEFINE
35 // CHECK: Macro Definitions:
36 // CHECK-DAG: REDEFINE
37 // CHECK-DAG: FUNC_Macro
38 // CHECK-DAG: CONSTANT
39 // CHECK-DAG: FOO
40 // CHECK-NEXT: ===
42 //--- include_foo.h
43 #include "foo.h"
44 #undef REDEFINE
45 // CHECK: Macro Definitions:
46 // CHECK-DAG: CONSTANT
47 // CHECK-DAG: FUNC_Macro
48 // CHECK-DAG: FOO
49 // CHECK-NEXT: ===
51 //--- import_foo.h
52 import "foo.h";
53 #undef REDEFINE
54 // CHECK: Macro Definitions:
55 // CHECK-DAG: CONSTANT
56 // CHECK-DAG: FUNC_Macro
57 // CHECK-DAG: FOO
58 // CHECK-NEXT: ===
60 //--- named_module.cppm
61 module;
62 #include "foo.h"
63 export module M;
64 #define M_Module 43
65 // CHECK-NOT: Macro Definitions: