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

Reply via email to