Issue |
122581
|
Summary |
[clang] Constraint normalization uses too much memory
|
Labels |
clang
|
Assignees |
|
Reporter |
cookiestarfish
|
```
template <typename T>
concept C0 = true;
template <typename T>
concept C1 = true;
template <typename T>
concept C2 = true;
template <typename T>
concept C3 = true;
template <typename T>
concept C4 = true;
template <typename T>
concept X =
(C0<T> && (C2<T> && C3<T>) || (C2<T> && C4<T>) || (C3<T> && C4<T>)) ||
(C0<T> && (C1<T> && C2<T>) ||
(C1<T> && (C1<T> && C3<T>) || (C1<T> && C4<T>) || (C3<T> && C4<T>)) ||
(C2<T> && (C1<T> && C3<T>) || (C1<T> && C4<T>) || (C3<T> && C4<T>))) ||
((C2<T> && C3<T>) || (C2<T> && C4<T>) ||
(C3<T> && C4<T>) && (C1<T> && C2<T>) ||
(C1<T> && (C1<T> && C3<T>) || (C1<T> && C4<T>) || (C3<T> && C4<T>)) ||
(C2<T> && (C1<T> && C3<T>) || (C1<T> && C4<T>) || (C3<T> && C4<T>)));
template <typename T>
concept Y = C0<T> && X<T>;
int foo(X auto x) { return 10; }
int foo(Y auto y) { return 20; }
int bar() { return foo(0); }
```
https://godbolt.org/z/d1e8z7vvK
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs