llvm-project/clang/test/Modules/cxx20-hu-05.cpp
Iain Sandoe d9cea8d3a8 [C++20][Modules][HU 4/5] Handle pre-processed header units.
We wish to support emitting a pre-processed output for an importable
header unit, that can be consumed to produce the same header units as
the original source.

This means that ee need to find the original filename used to produce
the re-preprocessed output, so that it can be assigned as the module
name.  This is peeked from the first line of the pre-processed source
when the action sets up the files.

Differential Revision: https://reviews.llvm.org/D121098
2022-03-27 09:38:06 +01:00

33 lines
882 B
C++

// Test macro preservation in C++20 Header Units.
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
// RUN: cd %t
// Produce a pre-processed file.
// RUN: %clang_cc1 -std=c++20 -E -xc++-user-header hu-01.h -o hu-01.iih
// consume that to produce the heder unit.
// RUN: %clang_cc1 -std=c++20 -emit-header-unit \
// RUN: -xc++-header-unit-header-cpp-output hu-01.iih -o hu-01.pcm
// check that the header unit is named for the original file, not the .iih.
// RUN: %clang_cc1 -std=c++20 -module-file-info hu-01.pcm | \
// RUN: FileCheck --check-prefix=CHECK-HU %s -DTDIR=%t
//--- hu-01.h
#ifndef __GUARD
#define __GUARD
int baz(int);
#define FORTYTWO 42
#define SHOULD_NOT_BE_DEFINED -1
#undef SHOULD_NOT_BE_DEFINED
#endif // __GUARD
// CHECK-HU: ====== C++20 Module structure ======
// CHECK-HU-NEXT: Header Unit './hu-01.h' is the Primary Module at index #1