Skip to content

[debuginfo] Emit usize and isize as typedefs - #163104

Open
Walnut356 wants to merge 1 commit into
rust-lang:mainfrom
Walnut356:i_usize_typedef
Open

Walnut356 wants to merge 1 commit into
rust-lang:mainfrom
Walnut356:i_usize_typedef

Conversation

@Walnut356

@Walnut356 Walnut356 commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

See: llvm/llvm-project#196812

TL;DR sidesteps a name collision issue that affects generics, e.g. S<u64> and S<usize> resolving as the same type.

This is accomplished by wrapping an existing primitive node in a usize/isize typedef instead.

I'd love to output typedefs for all the primitive types too, so LLDB displays the type names rust-style, but I've got a couple worries with that. Firstly, GDB doesn't seem to like it w.r.t. enums? IIRC it's because of a small difference in how GDB treats typedefs compared to LLDB. I'm like 80% sure it's hard-coded in GDB itself, so it's not something I want to touch atm.

Breakpoint 1, borrowed_enum::main () at tests/debuginfo/borrowed-enum.rs:67
67          zzz(); // #break
$1 = <error reading variable: Could not find active enum variant>
$2 = borrowed_enum::ABC::TheB(0, 286331153, 286331153)
$3 = borrowed_enum::Univariant::TheOnlyCase(4820353753753434)

Secondly, I'm not entirely sure it's a good idea to have both a type and a typedef with the exact same name in the first place. I could easily imagine that causing some similar issues to the one we're trying to solve.

This also includes a small extention to the Rc test to ensure we can read both Rc<u64> and Rc<usize>. Without this change, the second v command would fail to materialize any value:

...
(lldb) v rc_u64
(alloc::rc::Rc<unsigned long, alloc::alloc::Global>) rc_u64 = strong=1, weak=0 { value = 10 } 
(lldb) v rc_usize

error: Invalid type: Cannot determine size

(lldb) quit

@rustbot rustbot added the A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. label Sep 21, 2026
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Sep 21, 2026
@rustbot

rustbot commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

r? @chenyukang

rustbot has assigned @chenyukang.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 77 candidates
  • Random selection from 18 candidates

@chenyukang

Copy link
Copy Markdown
Member

@rustbot reroll

@rustbot rustbot assigned mati865 and unassigned chenyukang Sep 25, 2026
@Walnut356

Copy link
Copy Markdown
Contributor Author

(#163098 means i need to modify the tests again before this gets merged)

@mati865 mati865 left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the late reply and thanks for the fix. r=me once rebased

View changes since this review

@rustbot

rustbot commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job test-pr-check-2 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)

---- [codegen] tests/codegen-llvm/debug-vtable.rs#NONMSVC stdout ----
------FileCheck stdout------------------------------

------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/debug-vtable.rs:22:13: error: NONMSVC: expected string not found in input
// NONMSVC: ![[USIZE:[0-9]+]] = !DIBasicType(name: "usize"
            ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:12:32: note: scanning from here
@vtable.4 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\01\00\00\00\01\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !70, !guid !83
                               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:12:32: note: pattern attempts to capture variables: "USIZE"
@vtable.4 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\01\00\00\00\01\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !70, !guid !83
                               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:23:24: note: possible intended match here
 #dbg_declare(ptr %_2, !149, !DIExpression(), !154)
                       ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll
Check file: /checkout/tests/codegen-llvm/debug-vtable.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'debug_vtable.fc929e6ad8b1de1c-cgu.0' 
            2: source_filename = "debug_vtable.fc929e6ad8b1de1c-cgu.0" 
            3: target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-n32:64-S128-ni:1:10:20" 
            4: target triple = "wasm32-unknown-wasip1" 
            5:  
            6: @anon.509497c08b0d137599fd333787f21bf3.0 = private unnamed_addr constant <{ [4 x i8], [4 x i8] }> <{ [4 x i8] zeroinitializer, [4 x i8] undef }>, align 4, !guid !0 
            7: @_RNvCslGrcpNElu6S_12debug_vtable3XYZ = dso_local global <{ [4 x i8], [8 x i8] }> <{ [4 x i8] zeroinitializer, [8 x i8] undef }>, align 4, !dbg !1, !guid !30 
            8: @vtable.0 = private constant <{ [12 x i8], ptr, ptr }> <{ [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", ptr @_RNvXCslGrcpNElu6S_12debug_vtableNtB2_3FooNtB2_9SomeTrait7method1, ptr @_RNvXCslGrcpNElu6S_12debug_vtableNtB2_3FooNtB2_9SomeTrait7method2 }>, align 4, !dbg !31, !guid !41 
            9: @vtable.1 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", ptr @_RNvXs_CslGrcpNElu6S_12debug_vtableNtB4_3FooINtB4_21SomeTraitWithGenericsyaE7method1 }>, align 4, !dbg !42, !guid !50 
           10: @vtable.2 = private constant [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", align 4, !dbg !51, !guid !58 
           11: @vtable.3 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", ptr @_RNSNvYNCNvCslGrcpNElu6S_12debug_vtable3bar0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceTINtNtBM_6option6OptionRDINtBI_2FnuEp6OutputuEL_EEE9call_once6vtableB8_ }>, align 4, !dbg !59, !guid !69 
           12: @vtable.4 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\01\00\00\00\01\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !70, !guid !83 
check:22'0                                   {                                                                                                                                                                                                                                                  search range start (exclusive)
check:22'1                                                                                                                                                                                                                                                                                      error: no match found in search range
check:22'2                                                                                                                                                                                                                                                                                      pattern attempts to capture variables: "USIZE"
           13: @vtable.5 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\04\00\00\00\04\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !84, !guid !95 
           14:  
           15: ; <debug_vtable::generic_closure<bool>::{closure#0} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 
           16: ; Function Attrs: inlinehint nounwind 
           17: define internal zeroext i1 @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_(ptr %_1) unnamed_addr #0 !dbg !139 !guid !153 { 
           18: start: 
           19:  %_1.dbg.spill = alloca [4 x i8], align 4 
           20:  %_2 = alloca [0 x i8], align 1 
           21:  store ptr %_1, ptr %_1.dbg.spill, align 4 
           22:  #dbg_declare(ptr %_1.dbg.spill, !148, !DIExpression(), !154) 
           23:  #dbg_declare(ptr %_2, !149, !DIExpression(), !154) 
check:22'3                            ?                              possible intended match
           24:  %0 = load i8, ptr %_1, align 1, !dbg !154 
           25:  %1 = trunc nuw i8 %0 to i1, !dbg !154 
           26: ; call debug_vtable::generic_closure::<bool>::{closure#0} 
           27:  %_0 = call zeroext i1 @_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0B4_(i1 zeroext %1) #5, !dbg !154 
           28:  ret i1 %_0, !dbg !154 
           29: } 
           30:  
           31: ; <debug_vtable::generic_closure<u32>::{closure#0} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 
           32: ; Function Attrs: inlinehint nounwind 
           33: define internal i32 @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_(ptr %_1) unnamed_addr #0 !dbg !155 !guid !164 { 
           34: start: 
           35:  %_1.dbg.spill = alloca [4 x i8], align 4 
           36:  %_2 = alloca [0 x i8], align 1 
           37:  store ptr %_1, ptr %_1.dbg.spill, align 4 
           38:  #dbg_declare(ptr %_1.dbg.spill, !160, !DIExpression(), !165) 
           39:  #dbg_declare(ptr %_2, !161, !DIExpression(), !165) 
           40:  %0 = load i32, ptr %_1, align 4, !dbg !165 
           41: ; call debug_vtable::generic_closure::<u32>::{closure#0} 
           42:  %_0 = call i32 @_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0B4_(i32 %0) #5, !dbg !165 
           43:  ret i32 %_0, !dbg !165 
           44: } 
           45:  
           46: ; <debug_vtable::bar::{closure#0} as core::ops::function::FnOnce<(core::option::Option<&dyn core::ops::function::Fn<(), Output = ()>>,)>>::call_once::{shim:vtable#0} 
           47: ; Function Attrs: inlinehint nounwind 
           48: define internal void @_RNSNvYNCNvCslGrcpNElu6S_12debug_vtable3bar0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceTINtNtBM_6option6OptionRDINtBI_2FnuEp6OutputuEL_EEE9call_once6vtableB8_(ptr %_1, ptr %0, ptr %1) unnamed_addr #0 !dbg !166 !guid !202 { 
           49: start: 
           50:  %_1.dbg.spill = alloca [4 x i8], align 4 
           51:  %_2 = alloca [8 x i8], align 4 
           52:  store ptr %0, ptr %_2, align 4 
           53:  %2 = getelementptr inbounds i8, ptr %_2, i32 4 
           54:  store ptr %1, ptr %2, align 4 
           55:  store ptr %_1, ptr %_1.dbg.spill, align 4 
           56:  #dbg_declare(ptr %_1.dbg.spill, !194, !DIExpression(), !203) 
           57:  #dbg_declare(ptr %_2, !195, !DIExpression(), !203) 
           58:  %3 = load ptr, ptr %_2, align 4, !dbg !203 
           59:  %4 = getelementptr inbounds i8, ptr %_2, i32 4, !dbg !203 
           60:  %5 = load ptr, ptr %4, align 4, !dbg !203 
           61: ; call debug_vtable::bar::{closure#0} 
           62:  call void @_RNCNvCslGrcpNElu6S_12debug_vtable3bar0B3_(ptr %3, ptr %5) #5, !dbg !203 
           63:  ret void, !dbg !203 
           64: } 
           65:  
           66: ; <alloc::alloc::Global>::alloc_impl_runtime 
           67: ; Function Attrs: inlinehint nounwind 
           68: define internal { ptr, i32 } @_RNvMs0_NtCsj1TMGJKU3nW_5alloc5allocNtB5_6Global18alloc_impl_runtimeCslGrcpNElu6S_12debug_vtable(i32 %layout.0, i32 %layout.1, i1 zeroext %zeroed) unnamed_addr #0 !dbg !204 !guid !290 { 
           69: start: 
           70:  %ptr.dbg.spill13 = alloca [8 x i8], align 4 
           71:  %self.dbg.spill12 = alloca [4 x i8], align 4 
           72:  %ptr.dbg.spill11 = alloca [4 x i8], align 4 
           73:  %v.dbg.spill10 = alloca [4 x i8], align 4 
           74:  %v.dbg.spill = alloca [4 x i8], align 4 
           75:  %ptr.dbg.spill = alloca [8 x i8], align 4 
           76:  %self.dbg.spill8 = alloca [4 x i8], align 4 
           77:  %self.dbg.spill = alloca [4 x i8], align 4 
           78:  %size.dbg.spill = alloca [4 x i8], align 4 
           79:  %t.dbg.spill = alloca [0 x i8], align 1 
           80:  %e.dbg.spill5 = alloca [0 x i8], align 1 
           81:  %residual.dbg.spill4 = alloca [0 x i8], align 1 
           82:  %e.dbg.spill = alloca [0 x i8], align 1 
           83:  %err.dbg.spill = alloca [0 x i8], align 1 
           84:  %len.dbg.spill3 = alloca [4 x i8], align 4 
           85:  %len.dbg.spill2 = alloca [4 x i8], align 4 
           86:  %len.dbg.spill = alloca [4 x i8], align 4 
           87:  %residual.dbg.spill = alloca [0 x i8], align 1 
           88:  %zeroed.dbg.spill = alloca [1 x i8], align 1 
           89:  %layout.dbg.spill = alloca [8 x i8], align 4 
           90:  %self1 = alloca [4 x i8], align 4 
           91:  %self = alloca [4 x i8], align 4 
           92:  %_9 = alloca [4 x i8], align 4 
           93:  %raw_ptr = alloca [4 x i8], align 4 
           94:  %_0 = alloca [8 x i8], align 4 
           95:  store i32 %layout.0, ptr %layout.dbg.spill, align 4 
           96:  %0 = getelementptr inbounds i8, ptr %layout.dbg.spill, i32 4 
           97:  store i32 %layout.1, ptr %0, align 4 
           98:  #dbg_declare(ptr %layout.dbg.spill, !256, !DIExpression(), !291) 
           99:  #dbg_declare(ptr %layout.dbg.spill, !292, !DIExpression(), !297) 
          100:  #dbg_declare(ptr %layout.dbg.spill, !299, !DIExpression(), !302) 
          101:  %1 = zext i1 %zeroed to i8 
          102:  store i8 %1, ptr %zeroed.dbg.spill, align 1 
          103:  #dbg_declare(ptr %zeroed.dbg.spill, !257, !DIExpression(), !304) 
          104:  #dbg_declare(ptr %raw_ptr, !260, !DIExpression(), !305) 
          105:  #dbg_declare(ptr %raw_ptr, !306, !DIExpression(), !326) 
          106:  #dbg_declare(ptr %raw_ptr, !328, !DIExpression(), !336) 
          107:  #dbg_declare(ptr %raw_ptr, !338, !DIExpression(), !368) 
          108:  #dbg_declare(ptr %self, !370, !DIExpression(), !412) 
          109:  #dbg_declare(ptr %self1, !415, !DIExpression(), !425) 
          110:  #dbg_declare(ptr %residual.dbg.spill, !271, !DIExpression(), !427) 
          111:  store i32 0, ptr %len.dbg.spill, align 4, !dbg !428 
          112:  #dbg_declare(ptr %len.dbg.spill, !435, !DIExpression(), !428) 
          113:  store i32 0, ptr %len.dbg.spill2, align 4, !dbg !438 
          114:  #dbg_declare(ptr %len.dbg.spill2, !443, !DIExpression(), !438) 
          115:  store i32 0, ptr %len.dbg.spill3, align 4, !dbg !446 
          116:  #dbg_declare(ptr %len.dbg.spill3, !457, !DIExpression(), !446) 
          117:  #dbg_declare(ptr %err.dbg.spill, !422, !DIExpression(), !460) 
          118:  #dbg_declare(ptr %e.dbg.spill, !410, !DIExpression(), !461) 
          119:  #dbg_declare(ptr %residual.dbg.spill4, !462, !DIExpression(), !472) 
          120:  #dbg_declare(ptr %e.dbg.spill5, !468, !DIExpression(), !475) 
          121:  #dbg_declare(ptr %t.dbg.spill, !476, !DIExpression(), !486) 
          122:  #dbg_value(ptr poison, !488, !DIExpression(), !496) 
          123:  store i32 %layout.1, ptr %size.dbg.spill, align 4, !dbg !498 
            .
            .
            .
         1330: !802 = !DILocation(line: 109, column: 2, scope: !777) 
         1331: !803 = distinct !DISubprogram(name: "{closure#0}", linkageName: "_RNCNvCslGrcpNElu6S_12debug_vtable3bar0B3_", scope: !68, file: !4, line: 108, type: !804, scopeLine: 108, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !14, retainedNodes: !806) 
         1332: !804 = !DISubroutineType(types: !805) 
         1333: !805 = !{null, !67, !170} 
         1334: !806 = !{!807, !808} 
         1335: !807 = !DILocalVariable(name: "_x", arg: 2, scope: !803, file: !4, line: 108, type: !170) 
         1336: !808 = !DILocalVariable(arg: 1, scope: !803, file: !4, line: 108, type: !67) 
         1337: !809 = !{i64 -4521858280481358820} 
         1338: !810 = !DILocation(line: 108, column: 14, scope: !803) 
         1339: !811 = !DILocation(line: 108, column: 15, scope: !803) 
         1340: !812 = !DILocation(line: 108, column: 40, scope: !803) 
         1341: !813 = distinct !DISubprogram(name: "generic_closure<bool>", linkageName: "_RINvCslGrcpNElu6S_12debug_vtable15generic_closurebEB2_", scope: !3, file: !4, line: 111, type: !814, scopeLine: 111, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !824, retainedNodes: !822) 
         1342: !814 = !DISubroutineType(types: !815) 
         1343: !815 = !{!816, !82} 
         1344: !816 = !DICompositeType(tag: DW_TAG_structure_type, name: "alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=bool>, alloc::alloc::Global>", file: !6, size: 64, align: 32, elements: !817, templateParams: !14, identifier: "5e211151028c774e9c860ec8ff5cdb6") 
         1345: !817 = !{!818, !821} 
         1346: !818 = !DIDerivedType(tag: DW_TAG_member, name: "pointer", scope: !816, file: !6, baseType: !819, size: 32, align: 32) 
         1347: !819 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !820, size: 32, align: 32, dwarfAddressSpace: 0) 
         1348: !820 = !DICompositeType(tag: DW_TAG_structure_type, name: "dyn core::ops::function::FnOnce<(), Output=bool>", file: !6, align: 8, elements: !14, identifier: "61ba4fe50041c3092b20647c3dfc6d69") 
         1349: !821 = !DIDerivedType(tag: DW_TAG_member, name: "vtable", scope: !816, file: !6, baseType: !761, size: 32, align: 32, offset: 32) 
         1350: !822 = !{!823} 
         1351: !823 = !DILocalVariable(name: "x", arg: 1, scope: !813, file: !4, line: 111, type: !82) 
         1352: !824 = !{!825} 
         1353: !825 = !DITemplateTypeParameter(name: "T", type: !82) 
         1354: !826 = !{i64 1746798905827676475} 
         1355: !827 = !DILocation(line: 111, column: 32, scope: !813) 
         1356: !828 = !DILocalVariable(name: "x", arg: 1, scope: !829, file: !643, line: 290, type: !78) 
         1357: !829 = distinct !DISubprogram(name: "new<debug_vtable::generic_closure::{closure_env#0}<bool>>", linkageName: "_RNvMNtCsj1TMGJKU3nW_5alloc5boxedINtB2_3BoxNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0E3newBJ_", scope: !789, file: !643, line: 290, type: !830, scopeLine: 290, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !836, retainedNodes: !833) 
         1358: !830 = !DISubroutineType(types: !831) 
         1359: !831 = !{!832, !78} 
         1360: !832 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "alloc::boxed::Box<debug_vtable::generic_closure::{closure_env#0}<bool>, alloc::alloc::Global>", baseType: !78, size: 32, align: 32, dwarfAddressSpace: 0) 
         1361: !833 = !{!828, !834} 
         1362: !834 = !DILocalVariable(name: "ptr", scope: !835, file: !643, line: 292, type: !146, align: 32) 
         1363: !835 = distinct !DILexicalBlock(scope: !829, file: !643, line: 292, column: 9) 
         1364: !836 = !{!837} 
         1365: !837 = !DITemplateTypeParameter(name: "T", type: !78) 
         1366: !838 = !DILocation(line: 290, column: 16, scope: !829, inlinedAt: !839) 
         1367: !839 = distinct !DILocation(line: 112, column: 5, scope: !813) 
         1368: !840 = !DILocation(line: 292, column: 19, scope: !829, inlinedAt: !839) 
         1369: !841 = !DILocation(line: 292, column: 13, scope: !835, inlinedAt: !839) 
         1370: !842 = !DILocation(line: 295, column: 56, scope: !835, inlinedAt: !839) 
         1371: !843 = !DILocation(line: 113, column: 2, scope: !813) 
         1372: !844 = distinct !DISubprogram(name: "generic_closure<u32>", linkageName: "_RINvCslGrcpNElu6S_12debug_vtable15generic_closuremEB2_", scope: !3, file: !4, line: 111, type: !845, scopeLine: 111, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !855, retainedNodes: !853) 
         1373: !845 = !DISubroutineType(types: !846) 
         1374: !846 = !{!847, !21} 
         1375: !847 = !DICompositeType(tag: DW_TAG_structure_type, name: "alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=u32>, alloc::alloc::Global>", file: !6, size: 64, align: 32, elements: !848, templateParams: !14, identifier: "e052f7d2eb521633f690b0be167c9281") 
         1376: !848 = !{!849, !852} 
         1377: !849 = !DIDerivedType(tag: DW_TAG_member, name: "pointer", scope: !847, file: !6, baseType: !850, size: 32, align: 32) 
         1378: !850 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !851, size: 32, align: 32, dwarfAddressSpace: 0) 
         1379: !851 = !DICompositeType(tag: DW_TAG_structure_type, name: "dyn core::ops::function::FnOnce<(), Output=u32>", file: !6, align: 8, elements: !14, identifier: "825b5ef084190ffcc2bcb4405053b124") 
         1380: !852 = !DIDerivedType(tag: DW_TAG_member, name: "vtable", scope: !847, file: !6, baseType: !761, size: 32, align: 32, offset: 32) 
         1381: !853 = !{!854} 
         1382: !854 = !DILocalVariable(name: "x", arg: 1, scope: !844, file: !4, line: 111, type: !21) 
         1383: !855 = !{!856} 
         1384: !856 = !DITemplateTypeParameter(name: "T", type: !21) 
         1385: !857 = !{i64 1838711410106720201} 
         1386: !858 = !DILocation(line: 111, column: 32, scope: !844) 
         1387: !859 = !DILocalVariable(name: "x", arg: 1, scope: !860, file: !643, line: 290, type: !92) 
         1388: !860 = distinct !DISubprogram(name: "new<debug_vtable::generic_closure::{closure_env#0}<u32>>", linkageName: "_RNvMNtCsj1TMGJKU3nW_5alloc5boxedINtB2_3BoxNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0E3newBJ_", scope: !789, file: !643, line: 290, type: !861, scopeLine: 290, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !867, retainedNodes: !864) 
         1389: !861 = !DISubroutineType(types: !862) 
         1390: !862 = !{!863, !92} 
         1391: !863 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "alloc::boxed::Box<debug_vtable::generic_closure::{closure_env#0}<u32>, alloc::alloc::Global>", baseType: !92, size: 32, align: 32, dwarfAddressSpace: 0) 
         1392: !864 = !{!859, !865} 
         1393: !865 = !DILocalVariable(name: "ptr", scope: !866, file: !643, line: 292, type: !158, align: 32) 
         1394: !866 = distinct !DILexicalBlock(scope: !860, file: !643, line: 292, column: 9) 
         1395: !867 = !{!868} 
         1396: !868 = !DITemplateTypeParameter(name: "T", type: !92) 
         1397: !869 = !DILocation(line: 290, column: 16, scope: !860, inlinedAt: !870) 
         1398: !870 = distinct !DILocation(line: 112, column: 5, scope: !844) 
         1399: !871 = !DILocation(line: 292, column: 19, scope: !860, inlinedAt: !870) 
         1400: !872 = !DILocation(line: 292, column: 13, scope: !866, inlinedAt: !870) 
         1401: !873 = !DILocation(line: 295, column: 56, scope: !866, inlinedAt: !870) 
         1402: !874 = !DILocation(line: 113, column: 2, scope: !844) 
         1403: !875 = distinct !DISubprogram(name: "{closure#0}<bool>", linkageName: "_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0B4_", scope: !79, file: !4, line: 112, type: !876, scopeLine: 112, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !824, retainedNodes: !878) 
         1404: !876 = !DISubroutineType(types: !877) 
         1405: !877 = !{!82, !78} 
         1406: !878 = !{!879} 
         1407: !879 = !DILocalVariable(name: "x", scope: !875, file: !4, line: 111, type: !82, align: 8) 
         1408: !880 = !{i64 -8524571029214046961} 
         1409: !881 = !DILocation(line: 111, column: 32, scope: !875) 
         1410: !882 = !DILocation(line: 112, column: 23, scope: !875) 
         1411: !883 = distinct !DISubprogram(name: "{closure#0}<u32>", linkageName: "_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0B4_", scope: !79, file: !4, line: 112, type: !884, scopeLine: 112, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !855, retainedNodes: !886) 
         1412: !884 = !DISubroutineType(types: !885) 
         1413: !885 = !{!21, !92} 
         1414: !886 = !{!887} 
         1415: !887 = !DILocalVariable(name: "x", scope: !883, file: !4, line: 111, type: !21, align: 32) 
         1416: !888 = !{i64 -3033182054379136532} 
         1417: !889 = !DILocation(line: 111, column: 32, scope: !883) 
         1418: !890 = !DILocation(line: 112, column: 23, scope: !883) 
         1419: !891 = distinct !DISubprogram(name: "instantiate_generic_closures", linkageName: "_RNvCslGrcpNElu6S_12debug_vtable28instantiate_generic_closures", scope: !3, file: !4, line: 115, type: !892, scopeLine: 115, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !99, templateParams: !14) 
         1420: !892 = !DISubroutineType(types: !893) 
         1421: !893 = !{!894} 
         1422: !894 = !DICompositeType(tag: DW_TAG_structure_type, name: "(alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=u32>, alloc::alloc::Global>, alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=bool>, alloc::alloc::Global>)", file: !6, size: 128, align: 32, elements: !895, templateParams: !14, identifier: "ff6291d07965bdc3373ea5e0832cf8e7") 
         1423: !895 = !{!896, !897} 
         1424: !896 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !894, file: !6, baseType: !847, size: 64, align: 32) 
         1425: !897 = !DIDerivedType(tag: DW_TAG_member, name: "__1", scope: !894, file: !6, baseType: !816, size: 64, align: 32, offset: 64) 
         1426: !898 = !{i64 8281639313980377514} 
         1427: !899 = !DILocation(line: 116, column: 6, scope: !891) 
         1428: !900 = !DILocation(line: 116, column: 29, scope: !891) 
         1429: !901 = !DILocation(line: 116, column: 5, scope: !891) 
         1430: !902 = !DILocation(line: 117, column: 2, scope: !891) 
check:22'4                                                           } search range end (exclusive)
>>>>>>

------------------------------------------

error in revision `NONMSVC`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll" "/checkout/tests/codegen-llvm/debug-vtable.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/debug-vtable.rs:22:13: error: NONMSVC: expected string not found in input
// NONMSVC: ![[USIZE:[0-9]+]] = !DIBasicType(name: "usize"
            ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:12:32: note: scanning from here
@vtable.4 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\01\00\00\00\01\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !70, !guid !83
                               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:12:32: note: pattern attempts to capture variables: "USIZE"
@vtable.4 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\01\00\00\00\01\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !70, !guid !83
                               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:23:24: note: possible intended match here
 #dbg_declare(ptr %_2, !149, !DIExpression(), !154)
                       ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll
Check file: /checkout/tests/codegen-llvm/debug-vtable.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'debug_vtable.fc929e6ad8b1de1c-cgu.0' 
            2: source_filename = "debug_vtable.fc929e6ad8b1de1c-cgu.0" 
            3: target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-n32:64-S128-ni:1:10:20" 
            4: target triple = "wasm32-unknown-wasip1" 
            5:  
            6: @anon.509497c08b0d137599fd333787f21bf3.0 = private unnamed_addr constant <{ [4 x i8], [4 x i8] }> <{ [4 x i8] zeroinitializer, [4 x i8] undef }>, align 4, !guid !0 
            7: @_RNvCslGrcpNElu6S_12debug_vtable3XYZ = dso_local global <{ [4 x i8], [8 x i8] }> <{ [4 x i8] zeroinitializer, [8 x i8] undef }>, align 4, !dbg !1, !guid !30 
            8: @vtable.0 = private constant <{ [12 x i8], ptr, ptr }> <{ [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", ptr @_RNvXCslGrcpNElu6S_12debug_vtableNtB2_3FooNtB2_9SomeTrait7method1, ptr @_RNvXCslGrcpNElu6S_12debug_vtableNtB2_3FooNtB2_9SomeTrait7method2 }>, align 4, !dbg !31, !guid !41 
            9: @vtable.1 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", ptr @_RNvXs_CslGrcpNElu6S_12debug_vtableNtB4_3FooINtB4_21SomeTraitWithGenericsyaE7method1 }>, align 4, !dbg !42, !guid !50 
           10: @vtable.2 = private constant [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", align 4, !dbg !51, !guid !58 
           11: @vtable.3 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\00\00\00\00\01\00\00\00", ptr @_RNSNvYNCNvCslGrcpNElu6S_12debug_vtable3bar0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceTINtNtBM_6option6OptionRDINtBI_2FnuEp6OutputuEL_EEE9call_once6vtableB8_ }>, align 4, !dbg !59, !guid !69 
           12: @vtable.4 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\01\00\00\00\01\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !70, !guid !83 
check:22'0                                   {                                                                                                                                                                                                                                                  search range start (exclusive)
check:22'1                                                                                                                                                                                                                                                                                      error: no match found in search range
check:22'2                                                                                                                                                                                                                                                                                      pattern attempts to capture variables: "USIZE"
           13: @vtable.5 = private constant <{ [12 x i8], ptr }> <{ [12 x i8] c"\00\00\00\00\04\00\00\00\04\00\00\00", ptr @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_ }>, align 4, !dbg !84, !guid !95 
           14:  
           15: ; <debug_vtable::generic_closure<bool>::{closure#0} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 
           16: ; Function Attrs: inlinehint nounwind 
           17: define internal zeroext i1 @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_(ptr %_1) unnamed_addr #0 !dbg !139 !guid !153 { 
           18: start: 
           19:  %_1.dbg.spill = alloca [4 x i8], align 4 
           20:  %_2 = alloca [0 x i8], align 1 
           21:  store ptr %_1, ptr %_1.dbg.spill, align 4 
           22:  #dbg_declare(ptr %_1.dbg.spill, !148, !DIExpression(), !154) 
           23:  #dbg_declare(ptr %_2, !149, !DIExpression(), !154) 
check:22'3                            ?                              possible intended match
           24:  %0 = load i8, ptr %_1, align 1, !dbg !154 
           25:  %1 = trunc nuw i8 %0 to i1, !dbg !154 
           26: ; call debug_vtable::generic_closure::<bool>::{closure#0} 
           27:  %_0 = call zeroext i1 @_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0B4_(i1 zeroext %1) #5, !dbg !154 
           28:  ret i1 %_0, !dbg !154 
           29: } 
           30:  
           31: ; <debug_vtable::generic_closure<u32>::{closure#0} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 
           32: ; Function Attrs: inlinehint nounwind 
           33: define internal i32 @_RNSNvYNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceuE9call_once6vtableB9_(ptr %_1) unnamed_addr #0 !dbg !155 !guid !164 { 
           34: start: 
           35:  %_1.dbg.spill = alloca [4 x i8], align 4 
           36:  %_2 = alloca [0 x i8], align 1 
           37:  store ptr %_1, ptr %_1.dbg.spill, align 4 
           38:  #dbg_declare(ptr %_1.dbg.spill, !160, !DIExpression(), !165) 
           39:  #dbg_declare(ptr %_2, !161, !DIExpression(), !165) 
           40:  %0 = load i32, ptr %_1, align 4, !dbg !165 
           41: ; call debug_vtable::generic_closure::<u32>::{closure#0} 
           42:  %_0 = call i32 @_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0B4_(i32 %0) #5, !dbg !165 
           43:  ret i32 %_0, !dbg !165 
           44: } 
           45:  
           46: ; <debug_vtable::bar::{closure#0} as core::ops::function::FnOnce<(core::option::Option<&dyn core::ops::function::Fn<(), Output = ()>>,)>>::call_once::{shim:vtable#0} 
           47: ; Function Attrs: inlinehint nounwind 
           48: define internal void @_RNSNvYNCNvCslGrcpNElu6S_12debug_vtable3bar0INtNtNtCs8Nx2bnuYnor_4core3ops8function6FnOnceTINtNtBM_6option6OptionRDINtBI_2FnuEp6OutputuEL_EEE9call_once6vtableB8_(ptr %_1, ptr %0, ptr %1) unnamed_addr #0 !dbg !166 !guid !202 { 
           49: start: 
           50:  %_1.dbg.spill = alloca [4 x i8], align 4 
           51:  %_2 = alloca [8 x i8], align 4 
           52:  store ptr %0, ptr %_2, align 4 
           53:  %2 = getelementptr inbounds i8, ptr %_2, i32 4 
           54:  store ptr %1, ptr %2, align 4 
           55:  store ptr %_1, ptr %_1.dbg.spill, align 4 
           56:  #dbg_declare(ptr %_1.dbg.spill, !194, !DIExpression(), !203) 
           57:  #dbg_declare(ptr %_2, !195, !DIExpression(), !203) 
           58:  %3 = load ptr, ptr %_2, align 4, !dbg !203 
           59:  %4 = getelementptr inbounds i8, ptr %_2, i32 4, !dbg !203 
           60:  %5 = load ptr, ptr %4, align 4, !dbg !203 
           61: ; call debug_vtable::bar::{closure#0} 
           62:  call void @_RNCNvCslGrcpNElu6S_12debug_vtable3bar0B3_(ptr %3, ptr %5) #5, !dbg !203 
           63:  ret void, !dbg !203 
           64: } 
           65:  
           66: ; <alloc::alloc::Global>::alloc_impl_runtime 
           67: ; Function Attrs: inlinehint nounwind 
           68: define internal { ptr, i32 } @_RNvMs0_NtCsj1TMGJKU3nW_5alloc5allocNtB5_6Global18alloc_impl_runtimeCslGrcpNElu6S_12debug_vtable(i32 %layout.0, i32 %layout.1, i1 zeroext %zeroed) unnamed_addr #0 !dbg !204 !guid !290 { 
           69: start: 
           70:  %ptr.dbg.spill13 = alloca [8 x i8], align 4 
           71:  %self.dbg.spill12 = alloca [4 x i8], align 4 
           72:  %ptr.dbg.spill11 = alloca [4 x i8], align 4 
           73:  %v.dbg.spill10 = alloca [4 x i8], align 4 
           74:  %v.dbg.spill = alloca [4 x i8], align 4 
           75:  %ptr.dbg.spill = alloca [8 x i8], align 4 
           76:  %self.dbg.spill8 = alloca [4 x i8], align 4 
           77:  %self.dbg.spill = alloca [4 x i8], align 4 
           78:  %size.dbg.spill = alloca [4 x i8], align 4 
           79:  %t.dbg.spill = alloca [0 x i8], align 1 
           80:  %e.dbg.spill5 = alloca [0 x i8], align 1 
           81:  %residual.dbg.spill4 = alloca [0 x i8], align 1 
           82:  %e.dbg.spill = alloca [0 x i8], align 1 
           83:  %err.dbg.spill = alloca [0 x i8], align 1 
           84:  %len.dbg.spill3 = alloca [4 x i8], align 4 
           85:  %len.dbg.spill2 = alloca [4 x i8], align 4 
           86:  %len.dbg.spill = alloca [4 x i8], align 4 
           87:  %residual.dbg.spill = alloca [0 x i8], align 1 
           88:  %zeroed.dbg.spill = alloca [1 x i8], align 1 
           89:  %layout.dbg.spill = alloca [8 x i8], align 4 
           90:  %self1 = alloca [4 x i8], align 4 
           91:  %self = alloca [4 x i8], align 4 
           92:  %_9 = alloca [4 x i8], align 4 
           93:  %raw_ptr = alloca [4 x i8], align 4 
           94:  %_0 = alloca [8 x i8], align 4 
           95:  store i32 %layout.0, ptr %layout.dbg.spill, align 4 
           96:  %0 = getelementptr inbounds i8, ptr %layout.dbg.spill, i32 4 
           97:  store i32 %layout.1, ptr %0, align 4 
           98:  #dbg_declare(ptr %layout.dbg.spill, !256, !DIExpression(), !291) 
           99:  #dbg_declare(ptr %layout.dbg.spill, !292, !DIExpression(), !297) 
          100:  #dbg_declare(ptr %layout.dbg.spill, !299, !DIExpression(), !302) 
          101:  %1 = zext i1 %zeroed to i8 
          102:  store i8 %1, ptr %zeroed.dbg.spill, align 1 
          103:  #dbg_declare(ptr %zeroed.dbg.spill, !257, !DIExpression(), !304) 
          104:  #dbg_declare(ptr %raw_ptr, !260, !DIExpression(), !305) 
          105:  #dbg_declare(ptr %raw_ptr, !306, !DIExpression(), !326) 
          106:  #dbg_declare(ptr %raw_ptr, !328, !DIExpression(), !336) 
          107:  #dbg_declare(ptr %raw_ptr, !338, !DIExpression(), !368) 
          108:  #dbg_declare(ptr %self, !370, !DIExpression(), !412) 
          109:  #dbg_declare(ptr %self1, !415, !DIExpression(), !425) 
          110:  #dbg_declare(ptr %residual.dbg.spill, !271, !DIExpression(), !427) 
          111:  store i32 0, ptr %len.dbg.spill, align 4, !dbg !428 
          112:  #dbg_declare(ptr %len.dbg.spill, !435, !DIExpression(), !428) 
          113:  store i32 0, ptr %len.dbg.spill2, align 4, !dbg !438 
          114:  #dbg_declare(ptr %len.dbg.spill2, !443, !DIExpression(), !438) 
          115:  store i32 0, ptr %len.dbg.spill3, align 4, !dbg !446 
          116:  #dbg_declare(ptr %len.dbg.spill3, !457, !DIExpression(), !446) 
          117:  #dbg_declare(ptr %err.dbg.spill, !422, !DIExpression(), !460) 
          118:  #dbg_declare(ptr %e.dbg.spill, !410, !DIExpression(), !461) 
          119:  #dbg_declare(ptr %residual.dbg.spill4, !462, !DIExpression(), !472) 
          120:  #dbg_declare(ptr %e.dbg.spill5, !468, !DIExpression(), !475) 
          121:  #dbg_declare(ptr %t.dbg.spill, !476, !DIExpression(), !486) 
          122:  #dbg_value(ptr poison, !488, !DIExpression(), !496) 
          123:  store i32 %layout.1, ptr %size.dbg.spill, align 4, !dbg !498 
            .
            .
            .
         1330: !802 = !DILocation(line: 109, column: 2, scope: !777) 
         1331: !803 = distinct !DISubprogram(name: "{closure#0}", linkageName: "_RNCNvCslGrcpNElu6S_12debug_vtable3bar0B3_", scope: !68, file: !4, line: 108, type: !804, scopeLine: 108, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !14, retainedNodes: !806) 
         1332: !804 = !DISubroutineType(types: !805) 
         1333: !805 = !{null, !67, !170} 
         1334: !806 = !{!807, !808} 
         1335: !807 = !DILocalVariable(name: "_x", arg: 2, scope: !803, file: !4, line: 108, type: !170) 
         1336: !808 = !DILocalVariable(arg: 1, scope: !803, file: !4, line: 108, type: !67) 
         1337: !809 = !{i64 -4521858280481358820} 
         1338: !810 = !DILocation(line: 108, column: 14, scope: !803) 
         1339: !811 = !DILocation(line: 108, column: 15, scope: !803) 
         1340: !812 = !DILocation(line: 108, column: 40, scope: !803) 
         1341: !813 = distinct !DISubprogram(name: "generic_closure<bool>", linkageName: "_RINvCslGrcpNElu6S_12debug_vtable15generic_closurebEB2_", scope: !3, file: !4, line: 111, type: !814, scopeLine: 111, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !824, retainedNodes: !822) 
         1342: !814 = !DISubroutineType(types: !815) 
         1343: !815 = !{!816, !82} 
         1344: !816 = !DICompositeType(tag: DW_TAG_structure_type, name: "alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=bool>, alloc::alloc::Global>", file: !6, size: 64, align: 32, elements: !817, templateParams: !14, identifier: "5e211151028c774e9c860ec8ff5cdb6") 
         1345: !817 = !{!818, !821} 
         1346: !818 = !DIDerivedType(tag: DW_TAG_member, name: "pointer", scope: !816, file: !6, baseType: !819, size: 32, align: 32) 
         1347: !819 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !820, size: 32, align: 32, dwarfAddressSpace: 0) 
         1348: !820 = !DICompositeType(tag: DW_TAG_structure_type, name: "dyn core::ops::function::FnOnce<(), Output=bool>", file: !6, align: 8, elements: !14, identifier: "61ba4fe50041c3092b20647c3dfc6d69") 
         1349: !821 = !DIDerivedType(tag: DW_TAG_member, name: "vtable", scope: !816, file: !6, baseType: !761, size: 32, align: 32, offset: 32) 
         1350: !822 = !{!823} 
         1351: !823 = !DILocalVariable(name: "x", arg: 1, scope: !813, file: !4, line: 111, type: !82) 
         1352: !824 = !{!825} 
         1353: !825 = !DITemplateTypeParameter(name: "T", type: !82) 
         1354: !826 = !{i64 1746798905827676475} 
         1355: !827 = !DILocation(line: 111, column: 32, scope: !813) 
         1356: !828 = !DILocalVariable(name: "x", arg: 1, scope: !829, file: !643, line: 290, type: !78) 
         1357: !829 = distinct !DISubprogram(name: "new<debug_vtable::generic_closure::{closure_env#0}<bool>>", linkageName: "_RNvMNtCsj1TMGJKU3nW_5alloc5boxedINtB2_3BoxNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0E3newBJ_", scope: !789, file: !643, line: 290, type: !830, scopeLine: 290, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !836, retainedNodes: !833) 
         1358: !830 = !DISubroutineType(types: !831) 
         1359: !831 = !{!832, !78} 
         1360: !832 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "alloc::boxed::Box<debug_vtable::generic_closure::{closure_env#0}<bool>, alloc::alloc::Global>", baseType: !78, size: 32, align: 32, dwarfAddressSpace: 0) 
         1361: !833 = !{!828, !834} 
         1362: !834 = !DILocalVariable(name: "ptr", scope: !835, file: !643, line: 292, type: !146, align: 32) 
         1363: !835 = distinct !DILexicalBlock(scope: !829, file: !643, line: 292, column: 9) 
         1364: !836 = !{!837} 
         1365: !837 = !DITemplateTypeParameter(name: "T", type: !78) 
         1366: !838 = !DILocation(line: 290, column: 16, scope: !829, inlinedAt: !839) 
         1367: !839 = distinct !DILocation(line: 112, column: 5, scope: !813) 
         1368: !840 = !DILocation(line: 292, column: 19, scope: !829, inlinedAt: !839) 
         1369: !841 = !DILocation(line: 292, column: 13, scope: !835, inlinedAt: !839) 
         1370: !842 = !DILocation(line: 295, column: 56, scope: !835, inlinedAt: !839) 
         1371: !843 = !DILocation(line: 113, column: 2, scope: !813) 
         1372: !844 = distinct !DISubprogram(name: "generic_closure<u32>", linkageName: "_RINvCslGrcpNElu6S_12debug_vtable15generic_closuremEB2_", scope: !3, file: !4, line: 111, type: !845, scopeLine: 111, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !855, retainedNodes: !853) 
         1373: !845 = !DISubroutineType(types: !846) 
         1374: !846 = !{!847, !21} 
         1375: !847 = !DICompositeType(tag: DW_TAG_structure_type, name: "alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=u32>, alloc::alloc::Global>", file: !6, size: 64, align: 32, elements: !848, templateParams: !14, identifier: "e052f7d2eb521633f690b0be167c9281") 
         1376: !848 = !{!849, !852} 
         1377: !849 = !DIDerivedType(tag: DW_TAG_member, name: "pointer", scope: !847, file: !6, baseType: !850, size: 32, align: 32) 
         1378: !850 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !851, size: 32, align: 32, dwarfAddressSpace: 0) 
         1379: !851 = !DICompositeType(tag: DW_TAG_structure_type, name: "dyn core::ops::function::FnOnce<(), Output=u32>", file: !6, align: 8, elements: !14, identifier: "825b5ef084190ffcc2bcb4405053b124") 
         1380: !852 = !DIDerivedType(tag: DW_TAG_member, name: "vtable", scope: !847, file: !6, baseType: !761, size: 32, align: 32, offset: 32) 
         1381: !853 = !{!854} 
         1382: !854 = !DILocalVariable(name: "x", arg: 1, scope: !844, file: !4, line: 111, type: !21) 
         1383: !855 = !{!856} 
         1384: !856 = !DITemplateTypeParameter(name: "T", type: !21) 
         1385: !857 = !{i64 1838711410106720201} 
         1386: !858 = !DILocation(line: 111, column: 32, scope: !844) 
         1387: !859 = !DILocalVariable(name: "x", arg: 1, scope: !860, file: !643, line: 290, type: !92) 
         1388: !860 = distinct !DISubprogram(name: "new<debug_vtable::generic_closure::{closure_env#0}<u32>>", linkageName: "_RNvMNtCsj1TMGJKU3nW_5alloc5boxedINtB2_3BoxNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0E3newBJ_", scope: !789, file: !643, line: 290, type: !861, scopeLine: 290, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !867, retainedNodes: !864) 
         1389: !861 = !DISubroutineType(types: !862) 
         1390: !862 = !{!863, !92} 
         1391: !863 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "alloc::boxed::Box<debug_vtable::generic_closure::{closure_env#0}<u32>, alloc::alloc::Global>", baseType: !92, size: 32, align: 32, dwarfAddressSpace: 0) 
         1392: !864 = !{!859, !865} 
         1393: !865 = !DILocalVariable(name: "ptr", scope: !866, file: !643, line: 292, type: !158, align: 32) 
         1394: !866 = distinct !DILexicalBlock(scope: !860, file: !643, line: 292, column: 9) 
         1395: !867 = !{!868} 
         1396: !868 = !DITemplateTypeParameter(name: "T", type: !92) 
         1397: !869 = !DILocation(line: 290, column: 16, scope: !860, inlinedAt: !870) 
         1398: !870 = distinct !DILocation(line: 112, column: 5, scope: !844) 
         1399: !871 = !DILocation(line: 292, column: 19, scope: !860, inlinedAt: !870) 
         1400: !872 = !DILocation(line: 292, column: 13, scope: !866, inlinedAt: !870) 
         1401: !873 = !DILocation(line: 295, column: 56, scope: !866, inlinedAt: !870) 
         1402: !874 = !DILocation(line: 113, column: 2, scope: !844) 
         1403: !875 = distinct !DISubprogram(name: "{closure#0}<bool>", linkageName: "_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closurebE0B4_", scope: !79, file: !4, line: 112, type: !876, scopeLine: 112, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !824, retainedNodes: !878) 
         1404: !876 = !DISubroutineType(types: !877) 
         1405: !877 = !{!82, !78} 
         1406: !878 = !{!879} 
         1407: !879 = !DILocalVariable(name: "x", scope: !875, file: !4, line: 111, type: !82, align: 8) 
         1408: !880 = !{i64 -8524571029214046961} 
         1409: !881 = !DILocation(line: 111, column: 32, scope: !875) 
         1410: !882 = !DILocation(line: 112, column: 23, scope: !875) 
         1411: !883 = distinct !DISubprogram(name: "{closure#0}<u32>", linkageName: "_RNCINvCslGrcpNElu6S_12debug_vtable15generic_closuremE0B4_", scope: !79, file: !4, line: 112, type: !884, scopeLine: 112, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !99, templateParams: !855, retainedNodes: !886) 
         1412: !884 = !DISubroutineType(types: !885) 
         1413: !885 = !{!21, !92} 

@rust-bors

rust-bors Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

☔ The latest upstream changes (presumably #164216) made this pull request unmergeable. Please resolve the merge conflicts by rebasing.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants