// If this test fails, it should be investigated under Debug builds. // Before the PR, this test was encountering an `llvm_unreachable()`. // RUN: rm -rf %t // RUN: mkdir -p %t // RUN: split-file %s %t // RUN: cd %t // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-01.h \ // RUN: -fcxx-exceptions -o %t/hu-01.pcm // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-02.h \ // RUN: -Wno-experimental-header-units -fcxx-exceptions \ // RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-02.pcm // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-03.h \ // RUN: -Wno-experimental-header-units -fcxx-exceptions \ // RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-03.pcm // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-04.h \ // RUN: -Wno-experimental-header-units -fcxx-exceptions \ // RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-04.pcm // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-05.h \ // RUN: -Wno-experimental-header-units -fcxx-exceptions \ // RUN: -fmodule-file=%t/hu-03.pcm -fmodule-file=%t/hu-04.pcm \ // RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-05.pcm // RUN: %clang_cc1 -std=c++20 -emit-obj %t/main.cpp \ // RUN: -Wno-experimental-header-units -fcxx-exceptions \ // RUN: -fmodule-file=%t/hu-02.pcm -fmodule-file=%t/hu-05.pcm \ // RUN: -fmodule-file=%t/hu-04.pcm -fmodule-file=%t/hu-03.pcm \ // RUN: -fmodule-file=%t/hu-01.pcm //--- hu-01.h template struct A { A() {} ~A() {} }; template struct EBO : T { EBO() = default; }; template struct HT : EBO> {}; //--- hu-02.h import "hu-01.h"; inline void f() { HT(); } //--- hu-03.h import "hu-01.h"; struct C { C(); HT _; }; //--- hu-04.h import "hu-01.h"; void g(HT = {}); //--- hu-05.h import "hu-03.h"; import "hu-04.h"; import "hu-01.h"; struct B { virtual ~B() = default; virtual void f() { HT(); } }; //--- main.cpp import "hu-02.h"; import "hu-05.h"; import "hu-03.h"; int main() { f(); C(); B(); }