Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / concept_serialization.cpp
blobeb02578dbef19599bb7b45f8497331238c425680
1 // RUN: rm -rf %t
2 // RUN: %clang_cc1 -std=c++20 -fmodules-cache-path=%t -x c++ %s -verify
3 // expected-no-diagnostics
4 #pragma clang module build std
5 module std [system] { module concepts [system] {} }
6 #pragma clang module contents
8 #pragma clang module begin std.concepts
9 template <class T>
10 T declval();
11 template<class T, class U>
12 concept common_reference_with = T::val;
13 template<class T>
14 concept input_or_output_iterator = true;
15 template <class T>
16 concept input_iterator = input_or_output_iterator<T> &&
17 common_reference_with<decltype(declval<T&>)&&, T&>;
18 #pragma clang module end /*std.concepts*/
19 #pragma clang module endbuild /*std*/
21 #pragma clang module import std.concepts
22 template<input_or_output_iterator>
23 struct iter_value_or_void{};
24 // ensure that we don't assert on a subsumption check due to improper
25 // deserialization.
26 template<input_iterator I>
27 struct iter_value_or_void<I>{};