1*12ae1ea1SDmitry Polukhin // RUN: rm -fR %t 2*12ae1ea1SDmitry Polukhin // RUN: split-file %s %t 3*12ae1ea1SDmitry Polukhin // RUN: cd %t 4*12ae1ea1SDmitry Polukhin // RUN: %clang_cc1 -verify -std=c++20 -fskip-odr-check-in-gmf -I. -emit-header-unit -xc++-user-header bz1.h 5*12ae1ea1SDmitry Polukhin // RUN: %clang_cc1 -verify -std=c++20 -fskip-odr-check-in-gmf -I. -emit-header-unit -xc++-user-header bz2.h 6*12ae1ea1SDmitry Polukhin // RUN: %clang_cc1 -verify -std=c++20 -fskip-odr-check-in-gmf -I. -emit-header-unit -xc++-user-header -fmodule-file=bz1.pcm -fmodule-file=bz2.pcm bz.cpp 7*12ae1ea1SDmitry Polukhin 8*12ae1ea1SDmitry Polukhin //--- compare 9*12ae1ea1SDmitry Polukhin namespace std { 10*12ae1ea1SDmitry Polukhin namespace __detail { 11*12ae1ea1SDmitry Polukhin 12*12ae1ea1SDmitry Polukhin template<typename _Tp> 13*12ae1ea1SDmitry Polukhin inline constexpr unsigned __cmp_cat_id = 1; 14*12ae1ea1SDmitry Polukhin 15*12ae1ea1SDmitry Polukhin template<typename... _Ts> 16*12ae1ea1SDmitry Polukhin constexpr auto __common_cmp_cat() { 17*12ae1ea1SDmitry Polukhin (__cmp_cat_id<_Ts> | ...); 18*12ae1ea1SDmitry Polukhin } 19*12ae1ea1SDmitry Polukhin 20*12ae1ea1SDmitry Polukhin } // namespace __detail 21*12ae1ea1SDmitry Polukhin } // namespace std 22*12ae1ea1SDmitry Polukhin 23*12ae1ea1SDmitry Polukhin //--- bz0.h 24*12ae1ea1SDmitry Polukhin template <class T> 25*12ae1ea1SDmitry Polukhin int operator|(T, T); 26*12ae1ea1SDmitry Polukhin 27*12ae1ea1SDmitry Polukhin //--- bz1.h 28*12ae1ea1SDmitry Polukhin #include "bz0.h" 29*12ae1ea1SDmitry Polukhin #include <compare> 30*12ae1ea1SDmitry Polukhin // expected-no-diagnostics 31*12ae1ea1SDmitry Polukhin 32*12ae1ea1SDmitry Polukhin //--- bz2.h 33*12ae1ea1SDmitry Polukhin #include <compare> 34*12ae1ea1SDmitry Polukhin // expected-no-diagnostics 35*12ae1ea1SDmitry Polukhin 36*12ae1ea1SDmitry Polukhin //--- bz.cpp 37*12ae1ea1SDmitry Polukhin #include <compare> 38*12ae1ea1SDmitry Polukhin 39*12ae1ea1SDmitry Polukhin import "bz1.h"; // expected-warning {{the implementation of header units is in an experimental phase}} 40*12ae1ea1SDmitry Polukhin import "bz2.h"; // expected-warning {{the implementation of header units is in an experimental phase}} 41