mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 07:56:07 +00:00

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
33 lines
882 B
C++
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
|