[clang] [clang] Avoid MS RTTI type_info name explosion (PR #206317)

via cfe-commits cfe-commits at lists.llvm.org
Sun Jun 28 01:24:25 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 88429 tests passed
* 1694 tests skipped
* 2 tests failed

## Failed Tests
(click on a test name to see its output)

### Clang
<details>
<summary>Clang.DebugInfo/CXX/codeview-unnamed.cpp</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-unknown-linux-gnu -debug-info-kind=limited -emit-llvm -std=c++11 -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix LINUX /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-unknown-linux-gnu -debug-info-kind=limited -emit-llvm -std=c++11 -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix LINUX /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# note: command had no output on stdout or stderr
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-windows-msvc -debug-info-kind=limited -gcodeview -emit-llvm -std=c++11 -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix MSVC /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-windows-msvc -debug-info-kind=limited -gcodeview -emit-llvm -std=c++11 -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix MSVC /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp:57:16: error: MSVC-SAME: expected string not found in input
# |  // MSVC-SAME: identifier: ".?AV<lambda_0>@?0??main@@9@"
# |                ^
# | <stdin>:86:75: note: scanning from here
# | !29 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "<lambda_0>", scope: !6, file: !7, line: 112, size: 32, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !30, identifier: ".?AV<lambda_0>@@")
# |                                                                           ^
# | <stdin>:86:183: note: possible intended match here
# | !29 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "<lambda_0>", scope: !6, file: !7, line: 112, size: 32, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !30, identifier: ".?AV<lambda_0>@@")
# |                                                                                                                                                                                       ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/DebugInfo/CXX/codeview-unnamed.cpp
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           81: !24 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "named", scope: !6, file: !7, line: 96, size: 64, flags: DIFlagTypePassByValue, elements: !25, identifier: ".?AUnamed@?1??main@@9@") 
# |           82: !25 = !{!26, !27} 
# |           83: !26 = !DIDerivedType(tag: DW_TAG_member, name: "bar", scope: !24, file: !7, line: 96, baseType: !10, size: 32) 
# |           84: !27 = !DIDerivedType(tag: DW_TAG_member, name: "p2mem", scope: !24, file: !7, line: 96, baseType: !28, size: 32, offset: 32) 
# |           85: !28 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !10, size: 32, flags: DIFlagSingleInheritance, extraData: !24) 
# |           86: !29 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "<lambda_0>", scope: !6, file: !7, line: 112, size: 32, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !30, identifier: ".?AV<lambda_0>@@") 
# | same:57'0                                                                              {                                                                                                                                              search range start (exclusive)
# | same:57'1                                                                                                                                                                                                                             error: no match found in search range
# | same:57'2                                                                                                                                                                                           ?                                 possible intended match
# |           87: !30 = !{!31, !32} 
# |           88: !31 = !DIDerivedType(tag: DW_TAG_member, name: "argc", scope: !29, file: !7, line: 112, baseType: !10, size: 32) 
# |           89: !32 = !DISubprogram(name: "operator()", scope: !29, file: !7, line: 112, type: !33, scopeLine: 112, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagLocalToUnit) 
# |           90: !33 = !DISubroutineType(types: !34) 
# |           91: !34 = !{!10, !35, !10} 
# |            .
# |            .
# |            .
# |          108: !51 = !DILocation(line: 96, column: 49, scope: !6) 
# |          109: !52 = !DILocalVariable(name: "four", scope: !6, file: !7, line: 112, type: !29) 
# |          110: !53 = !DILocation(line: 112, column: 8, scope: !6) 
# |          111: !54 = !DILocation(line: 112, column: 15, scope: !6) 
# |          112: !55 = !DILocation(line: 112, column: 16, scope: !6) 
# |          113: !56 = !DILocation(line: 122, column: 3, scope: !6) 
# | same:57'3                                                        } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

### lldb-shell
<details>
<summary>lldb-shell.SymbolFile/NativePDB/ast-lambdas.cpp</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang --driver-mode=cl --target=specify-a-target-or-use-a-_host-substitution --target=x86_64-windows-msvc -Od -GS- -std:c++20 -Z7 -c /Fo/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.obj -- /home/gha/actions-runner/_work/llvm-project/llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-lambdas.cpp
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang --driver-mode=cl --target=specify-a-target-or-use-a-_host-substitution --target=x86_64-windows-msvc -Od -GS- -std:c++20 -Z7 -c /Fo/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.obj -- /home/gha/actions-runner/_work/llvm-project/llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-lambdas.cpp
# note: command had no output on stdout or stderr
# RUN: at line 5
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/lld-link -debug:full -nodefaultlib -entry:main /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.obj -out:/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.exe -pdb:/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.pdb
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/lld-link -debug:full -nodefaultlib -entry:main /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.obj -out:/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.exe -pdb:/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.pdb
# note: command had no output on stdout or stderr
# RUN: at line 6
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/lldb-test symbols --dump-ast /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.exe | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-lambdas.cpp
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/lldb-test symbols --dump-ast /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.exe
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-lambdas.cpp
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-lambdas.cpp:35:11: error: CHECK: expected string not found in input
# | // CHECK: namespace `public: void __cdecl Foo::fun(void)'::`1' {
# |           ^
# | <stdin>:1:1: note: scanning from here
# | Module: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.exe
# | ^
# | <stdin>:5:2: note: possible intended match here
# |  void fun();
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-lambdas.cpp
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             1: Module: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/lldb/test/Shell/SymbolFile/NativePDB/Output/ast-lambdas.cpp.tmp.exe 
# | check:35'0    {                                                                                                                                                   search range start (exclusive)
# | check:35'1                                                                                                                                                        error: no match found in search range
# |             2: int main(); 
# |             3: class Foo { 
# |             4:  Foo(); 
# |             5:  void fun(); 
# | check:35'2      ?             possible intended match
# |             6:  int a; 
# |             7:  int b; 
# |             8: }; 
# |             9: class <lambda_1> { 
# |            10:  int operator()() const; 
# |            11:  Foo *__this; 
# |            12: }; 
# |            13: class <lambda_2> { 
# |            14:  int operator()(); 
# |            15:  int local; 
# |            16: }; 
# | check:35'3        } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/206317


More information about the cfe-commits mailing list