Issue 87958
Summary Hang and Memory Consumption Issue during Clang-19.0.0.git Compilation
Labels new issue
Assignees
Reporter iamanonymouscs
    # Command
`clang bug_5.cc`
# Code
The compilation process hangs indefinitely without producing any output, and I noticed a continuous increase in memory consumption. The code snippet that triggers this problem is as follows:
```c
template<typename> using A = auto;

template<template<typename> class> struct B {};

B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
```
# Version
`clang --version`
```sh
clang version 19.0.0git (https://github.com/llvm/llvm-project.git 987087df90026605fc8d03ebda5a1cd31b71e609)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```
# Output
```sh
bug_5.cc:1:30: error: 'auto' not allowed in type alias
 1 | template<typename> using A = auto;
      | ^~~~
bug_5.cc:5:129: error: too few template arguments for class template 'B'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:3:43: note: template is declared here
    3 | template<template<typename> class> struct B {};
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^
bug_5.cc:5:134: error: expected '>'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:128: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: type name requires a specifier or qualifier
 5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
bug_5.cc:5:126: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:128: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: type name requires a specifier or qualifier
 5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
bug_5.cc:5:126: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:128: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: type name requires a specifier or qualifier
 5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
bug_5.cc:5:126: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:128: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: type name requires a specifier or qualifier
 5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
bug_5.cc:5:126: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:128: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: type name requires a specifier or qualifier
 5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
bug_5.cc:5:126: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: expected '>'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:128: note: to match this '<'
    5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
bug_5.cc:5:134: error: type name requires a specifier or qualifier
 5 | B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<A<B<> b;
      | ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to