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} 

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