Skip to content

Conversation

Walnut356
Copy link
Contributor

@Walnut356 Walnut356 commented Jul 24, 2025

This kills like 17 birds with 1 stone. It allows displaying the proper &/&mut/*const/*mut type name for *-gnu targets, and fixes a bunch of issues with visualizing *-msvc targets.

In short, none of the debuggers (in their current states) respect the "name" field that is passed to LLVMRustDIBuilderCreatePointerType. That field does appear in the DWARF data, but GDB and LLDB don't care.

This patch wraps the pointer nodes (and msvc array type) in a typedef before finalizing them. Worth noting, this typedef trick is already being used for *-msvc primitive types.

*-gnu

Mainly fixes type-name output. Screenshots should be self-explanatory.

GDB

GDB by default hard-codes pointer types to *mut. This "fixes" that without requiring a code change in GDB, but that's mostly just a happy side effect.

image

LLDB

TypeSystemClang ignores the name field of the pointer in the DWARF info. Using a typedef sidesteps that deficiency. We could maybe modify TypeSystemClang so this isn't necessary, but since it relies on clang (read: c/c++) compiler type representations under the hood, I'm not sure if pointers can have names and it's not really reasonable to change clang itself to accommodate rust.

image

*-msvc

As opposed to DWARF, the name field does not exist anywhere in the PDB data. There are 2 reasons for this

  1. Pointer nodes do not contain a name field

  2. Primitive types are unique, special nodes that have an additional unique, special representation for pointer-to-primitive

The issue with this is with container types, for example Vec. Vec<T>'s heap pointer is not a *mut T, it's a *mut u8 that is cast to a T when needed using (more or less) PhantomData<T>. From the type's perspective, T only "exists" in the generic parameters. That means the debugger, working from the type's perspective, must look it up by name, (e.g. Vec<ref$<u8> > must look up the string "ref$<u8>").

Since those type names aren't in the PDB data, the lookup fails, the debugger cannot cast the heap pointer, and thus cannot visualize the elements of the container.

In LLDB, the sole arbiter of "what types exist" when doing a type lookup is the PDB data itself. I'm sure the msdia works the same way, but LLDB's native PDB parser checks the type stream, and any pointer-node-to-T is formatted C-style as T *. This problem also affects Microsoft's debugger.

array$<T,N> also needs a typedef, as arrays have a bespoke node whose "name" field is also ignored in favor of the C-style format (e.g. T[N]). If you use Visual Sudio's natvis diagnostics logging, you can see errors such as this:

Natvis: C:\Users\ant_b\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\liballoc.natvis(10,23): Error: identifier "array$<u32,7>" is undefined
    Error while evaluating '(array$<u32,7>*)buf.inner.ptr.pointer.pointer' in the context of type 'sample.exe!alloc::vec::Vec<array$<u32,7>,alloc::alloc::Global>'.

LLDB (via CodeLLDB)

image

CDB via Visual Studio 2022

image

CDB via C/C++ extension in Visual Studio Code

The output is identical to Visual Studio, but I want to make a special note because i had to jump through a few hoops to get it to work correctly. Built with stable, it worked the same as the "Before" image from Visual Studio, but built with the patched compiler the Vec visualizer wasn't working.

Clearly based on the Visual Studio "After" screenshot, the natvis files still work. If you binary-patch the extension so that it outputs verbose logging info it appears it never even tried to load liballoc.natvis for some reason?

I manually placed the natvis files in C:\Users\<USER>\.vscode\extensions\ms-vscode.cpptools-1.26.3-win32-x64\debugAdapters\vsdbg\bin\Visualizers\ and it worked fine so iunno. Probably worth someone else testing too. Might also be because I'm only using a stage1 build instead of a full toolchain install? I'm not sure.

Alternatives

I tried some fiddling with using the reference debug info node (which does have a valid counterpart in both DWARF and PDB). The issue is that LLDB uses TypeSystemClang, which is very C/C++-oriented. In Rust, references are borrowing pointers. In C++ references are not objects, they are not guaranteed to have a representation at run-time. That means no array-of-refs, no ref-to-ref, no pointer-to-ref. LLDB seems to interpret ref-to-ref incorrectly. That can be worked around but the hack necessary for that is heinous and infects the visualizers too. It also means without the visualizers, the type-name output is sorta worse than it is now.

@rustbot
Copy link
Collaborator

rustbot commented Jul 24, 2025

r? @oli-obk

rustbot has assigned @oli-obk.
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

@rustbot rustbot added 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. labels Jul 24, 2025
@Walnut356
Copy link
Contributor Author

Walnut356 commented Jul 24, 2025

oh yeah, i'm not sure if we even run the debuginfo test suite anymore? But if we do, this is gonna fail a lot of those tests (in a good way). I can get that cleaned up if/when those failures happen.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@Walnut356
Copy link
Contributor Author

Ah, so we do still run the debuginfo tests.

One notable problem is that gdb method calls via the T.func() syntax breaks. GDB will attempt to call the function via the process and the process (in the case of function-call.rs) segfaults. This can probably be fixed pretty easily on their end though, and using the more verbose function_call::RegularStruct::get_x(&r) works just fine for the time being.

All the other failures were just minor considerations for "unwrapping" the typedef into its actual type.

@oli-obk
Copy link
Contributor

oli-obk commented Jul 28, 2025

r? @wesleywiser or reassign to someone else who knows debuginfo well

@rustbot
Copy link
Collaborator

rustbot commented Jul 28, 2025

wesleywiser is not on the review rotation at the moment.
They may take a while to respond.

@bors
Copy link
Collaborator

bors commented Sep 17, 2025

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

@rustbot
Copy link
Collaborator

rustbot commented Sep 30, 2025

This PR was rebased onto a different master 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

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-20-1 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:24:13: error: NONMSVC: expected string not found in input
// NONMSVC: ![[PTR_TYPEDEF:[0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name: "*const ()", file: {{.*}}, baseType: ![[PTR:[0-9]+]])
            ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:891:33: note: scanning from here
!19 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned)
                                ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:893:1: note: possible intended match here
!21 = !DIDerivedType(tag: DW_TAG_typedef, name: "*const ()", file: !5, baseType: !22, align: 64)
^

Input file: /checkout/obj/build/aarch64-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:
<<<<<<
            .
            .
            .
          791:  %6 = extractvalue { ptr, i32 } %4, 1 
          792:  store ptr %5, ptr %0, align 8 
          793:  %7 = getelementptr inbounds i8, ptr %0, i64 8 
          794:  store i32 %6, ptr %7, align 8 
          795:  br label %bb3 
          796:  
          797: bb2: ; preds = %start 
          798:  %_3.0 = extractvalue { ptr, ptr } %3, 0, !dbg !1107 
          799:  %_3.1 = extractvalue { ptr, ptr } %3, 1, !dbg !1107 
          800:  %8 = load ptr, ptr %_1, align 8, !dbg !1109 
          801:  %9 = getelementptr inbounds i8, ptr %_1, i64 8, !dbg !1109 
          802:  %10 = load ptr, ptr %9, align 8, !dbg !1109 
          803:  store ptr %8, ptr %_0, align 8, !dbg !1109 
          804:  %11 = getelementptr inbounds i8, ptr %_0, i64 8, !dbg !1109 
          805:  store ptr %10, ptr %11, align 8, !dbg !1109 
          806:  %12 = getelementptr inbounds i8, ptr %_0, i64 16, !dbg !1109 
          807:  store ptr %_3.0, ptr %12, align 8, !dbg !1109 
          808:  %13 = getelementptr inbounds i8, ptr %12, i64 8, !dbg !1109 
          809:  store ptr %_3.1, ptr %13, align 8, !dbg !1109 
          810:  ret void, !dbg !1110 
          811:  
          812: terminate: ; preds = %bb3 
          813:  %14 = landingpad { ptr, i32 } 
          814:  filter [0 x ptr] zeroinitializer 
          815: ; call core::panicking::panic_in_cleanup 
          816:  call void @_ZN4core9panicking16panic_in_cleanup17hb49ddd0126953a49E() #9, !dbg !1111 
          817:  unreachable, !dbg !1111 
          818:  
          819: bb4: ; preds = %bb3 
          820:  %15 = load ptr, ptr %0, align 8, !dbg !1111 
          821:  %16 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !1111 
          822:  %17 = load i32, ptr %16, align 8, !dbg !1111 
          823:  %18 = insertvalue { ptr, i32 } poison, ptr %15, 0, !dbg !1111 
          824:  %19 = insertvalue { ptr, i32 } %18, i32 %17, 1, !dbg !1111 
          825:  resume { ptr, i32 } %19, !dbg !1111 
          826: } 
          827:  
          828: ; Function Attrs: nounwind uwtable 
          829: declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr) unnamed_addr #2 
          830:  
          831: ; core::panicking::panic_in_cleanup 
          832: ; Function Attrs: cold minsize noinline noreturn nounwind optsize uwtable 
          833: declare void @_ZN4core9panicking16panic_in_cleanup17hb49ddd0126953a49E() unnamed_addr #3 
          834:  
          835: ; __rustc::__rust_no_alloc_shim_is_unstable_v2 
          836: ; Function Attrs: nounwind uwtable 
          837: declare void @_RNvCsbXFxU6NFbkL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() unnamed_addr #2 
          838:  
          839: ; __rustc::__rust_alloc 
          840: ; Function Attrs: nounwind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable 
          841: declare noalias ptr @_RNvCsbXFxU6NFbkL_7___rustc12___rust_alloc(i64, i64 allocalign) unnamed_addr #4 
          842:  
          843: ; __rustc::__rust_alloc_zeroed 
          844: ; Function Attrs: nounwind allockind("alloc,zeroed,aligned") allocsize(0) uwtable 
          845: declare noalias ptr @_RNvCsbXFxU6NFbkL_7___rustc19___rust_alloc_zeroed(i64, i64 allocalign) unnamed_addr #5 
          846:  
          847: ; alloc::alloc::handle_alloc_error 
          848: ; Function Attrs: cold minsize noreturn optsize uwtable 
          849: declare void @_ZN5alloc5alloc18handle_alloc_error17hd155455c34fda75aE(i64, i64) unnamed_addr #6 
          850:  
          851: ; __rustc::__rust_dealloc 
          852: ; Function Attrs: nounwind allockind("free") uwtable 
          853: declare void @_RNvCsbXFxU6NFbkL_7___rustc14___rust_dealloc(ptr allocptr, i64, i64) unnamed_addr #7 
          854:  
          855: attributes #0 = { uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          856: attributes #1 = { inlinehint uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          857: attributes #2 = { nounwind uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          858: attributes #3 = { cold minsize noinline noreturn nounwind optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          859: attributes #4 = { nounwind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "alloc-variant-zeroed"="_RNvCsbXFxU6NFbkL_7___rustc19___rust_alloc_zeroed" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          860: attributes #5 = { nounwind allockind("alloc,zeroed,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          861: attributes #6 = { cold minsize noreturn optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          862: attributes #7 = { nounwind allockind("free") uwtable "alloc-family"="__rust_alloc" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          863: attributes #8 = { cold } 
          864: attributes #9 = { cold noreturn nounwind } 
          865: attributes #10 = { nounwind } 
          866: attributes #11 = { noreturn } 
          867:  
          868: !llvm.module.flags = !{!90, !91, !92} 
          869: !llvm.ident = !{!93} 
          870: !llvm.dbg.cu = !{!94} 
          871:  
          872: !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) 
          873: !1 = distinct !DIGlobalVariable(name: "XYZ", linkageName: "_RNvCslGrcpNElu6S_12debug_vtable3XYZ", scope: !2, file: !3, line: 72, type: !4, isLocal: false, isDefinition: true, align: 64) 
          874: !2 = !DINamespace(name: "debug_vtable", scope: null) 
          875: !3 = !DIFile(filename: "/checkout/tests/codegen-llvm/debug-vtable.rs", directory: "", checksumkind: CSK_MD5, checksum: "bee4d39139f7bc80a4a0076d4a0e2723") 
          876: !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Option<(usize, *const ())>", scope: !6, file: !5, size: 192, align: 64, flags: DIFlagPublic, elements: !8, templateParams: !13, identifier: "ee416877c6650fce7f642a9c7b2455f6") 
          877: !5 = !DIFile(filename: "<unknown>", directory: "") 
          878: !6 = !DINamespace(name: "option", scope: !7) 
          879: !7 = !DINamespace(name: "core", scope: null) 
          880: !8 = !{!9} 
          881: !9 = !DICompositeType(tag: DW_TAG_variant_part, scope: !4, file: !5, size: 192, align: 64, elements: !10, templateParams: !13, identifier: "861fdcbc3dce99ef52e4e9d99c96d957", discriminator: !28) 
          882: !10 = !{!11, !24} 
          883: !11 = !DIDerivedType(tag: DW_TAG_member, name: "None", scope: !9, file: !5, baseType: !12, size: 192, align: 64, extraData: i64 0) 
          884: !12 = !DICompositeType(tag: DW_TAG_structure_type, name: "None", scope: !4, file: !5, size: 192, align: 64, flags: DIFlagPublic, elements: !13, templateParams: !14, identifier: "5215af9904b9ea5a63d5e21fa140242d") 
          885: !13 = !{} 
          886: !14 = !{!15} 
          887: !15 = !DITemplateTypeParameter(name: "T", type: !16) 
          888: !16 = !DICompositeType(tag: DW_TAG_structure_type, name: "(usize, *const ())", file: !5, size: 128, align: 64, elements: !17, templateParams: !13, identifier: "b72d53d400f228657ef18d8b2d6af85") 
          889: !17 = !{!18, !20} 
          890: !18 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !16, file: !5, baseType: !19, size: 64, align: 64) 
          891: !19 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned) 
check:24'0                                     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
          892: !20 = !DIDerivedType(tag: DW_TAG_member, name: "__1", scope: !16, file: !5, baseType: !21, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          893: !21 = !DIDerivedType(tag: DW_TAG_typedef, name: "*const ()", file: !5, baseType: !22, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:24'1     ?                                                                                                 possible intended match
          894: !22 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const ()", baseType: !23, size: 64, align: 64, dwarfAddressSpace: 0) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          895: !23 = !DIBasicType(name: "()", encoding: DW_ATE_unsigned) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          896: !24 = !DIDerivedType(tag: DW_TAG_member, name: "Some", scope: !9, file: !5, baseType: !25, size: 192, align: 64, extraData: i64 1) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          897: !25 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !4, file: !5, size: 192, align: 64, flags: DIFlagPublic, elements: !26, templateParams: !14, identifier: "7ca0a589d08001d9868923a85f4f3fb") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          898: !26 = !{!27} 
check:24'0     ~~~~~~~~~~~~~
          899: !27 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !25, file: !5, baseType: !16, size: 128, align: 64, offset: 64, flags: DIFlagPublic) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          900: !28 = !DIDerivedType(tag: DW_TAG_member, scope: !4, file: !5, baseType: !29, size: 64, align: 64, flags: DIFlagArtificial) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          901: !29 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          902: !30 = !DIGlobalVariableExpression(var: !31, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          903: !31 = distinct !DIGlobalVariable(name: "<debug_vtable::Foo as debug_vtable::SomeTrait>::{vtable}", scope: null, file: !5, type: !32, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          904: !32 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::Foo as debug_vtable::SomeTrait>::{vtable_type}", file: !5, size: 320, align: 64, flags: DIFlagArtificial, elements: !33, vtableHolder: !39, templateParams: !13, identifier: "5a4399fe531ee6bd37a3efd8e5971b79") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          905: !33 = !{!34, !35, !36, !37, !38} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          906: !34 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !32, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          907: !35 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !32, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          908: !36 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !32, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          909: !37 = !DIDerivedType(tag: DW_TAG_member, name: "__method3", scope: !32, file: !5, baseType: !21, size: 64, align: 64, offset: 192) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          910: !38 = !DIDerivedType(tag: DW_TAG_member, name: "__method4", scope: !32, file: !5, baseType: !21, size: 64, align: 64, offset: 256) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          911: !39 = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", scope: !2, file: !5, align: 8, flags: DIFlagPublic, elements: !13, identifier: "e2a8ce5f3e22ee699e55156546c38732") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          912: !40 = !DIGlobalVariableExpression(var: !41, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          913: !41 = distinct !DIGlobalVariable(name: "<debug_vtable::Foo as debug_vtable::SomeTraitWithGenerics<u64, i8>>::{vtable}", scope: null, file: !5, type: !42, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          914: !42 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::Foo as debug_vtable::SomeTraitWithGenerics<u64, i8>>::{vtable_type}", file: !5, size: 256, align: 64, flags: DIFlagArtificial, elements: !43, vtableHolder: !39, templateParams: !13, identifier: "51e06482f696109d7fd6cca608032bca") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          915: !43 = !{!44, !45, !46, !47} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          916: !44 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !42, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          917: !45 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !42, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          918: !46 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !42, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          919: !47 = !DIDerivedType(tag: DW_TAG_member, name: "__method3", scope: !42, file: !5, baseType: !21, size: 64, align: 64, offset: 192) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          920: !48 = !DIGlobalVariableExpression(var: !49, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          921: !49 = distinct !DIGlobalVariable(name: "<debug_vtable::Foo as _>::{vtable}", scope: null, file: !5, type: !50, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          922: !50 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::Foo as _>::{vtable_type}", file: !5, size: 192, align: 64, flags: DIFlagArtificial, elements: !51, vtableHolder: !39, templateParams: !13, identifier: "b09d5ef63403f94223ae11f386c520f") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          923: !51 = !{!52, !53, !54} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~
          924: !52 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !50, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          925: !53 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !50, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          926: !54 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !50, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          927: !55 = !DIGlobalVariableExpression(var: !56, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          928: !56 = distinct !DIGlobalVariable(name: "<debug_vtable::bar::{closure_env#0} as core::ops::function::FnOnce<(core::option::Option<&dyn core::ops::function::Fn<(), Output=()>>)>>::{vtable}", scope: null, file: !5, type: !57, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          929: !57 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::bar::{closure_env#0} as core::ops::function::FnOnce<(core::option::Option<&dyn core::ops::function::Fn<(), Output=()>>)>>::{vtable_type}", file: !5, size: 256, align: 64, flags: DIFlagArtificial, elements: !58, vtableHolder: !63, templateParams: !13, identifier: "220e475b1287aae3c5639a952de2730a") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          930: !58 = !{!59, !60, !61, !62} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          931: !59 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !57, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          932: !60 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !57, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          933: !61 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !57, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          934: !62 = !DIDerivedType(tag: DW_TAG_member, name: "__method3", scope: !57, file: !5, baseType: !21, size: 64, align: 64, offset: 192) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          935: !63 = !DICompositeType(tag: DW_TAG_structure_type, name: "{closure_env#0}", scope: !64, file: !5, align: 8, elements: !13, identifier: "3581fa415e0166357aa292e5ecdc16ad") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          936: !64 = !DINamespace(name: "bar", scope: !2) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          937: !65 = !DIGlobalVariableExpression(var: !66, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          938: !66 = distinct !DIGlobalVariable(name: "<debug_vtable::generic_closure::{closure_env#0}<bool> as core::ops::function::FnOnce<()>>::{vtable}", scope: null, file: !5, type: !67, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          939: !67 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::generic_closure::{closure_env#0}<bool> as core::ops::function::FnOnce<()>>::{vtable_type}", file: !5, size: 256, align: 64, flags: DIFlagArtificial, elements: !68, vtableHolder: !73, templateParams: !13, identifier: "cb92dc64e304ad51da397eff45a6720d") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          940: !68 = !{!69, !70, !71, !72} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          941: !69 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !67, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          942: !70 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !67, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          943: !71 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !67, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          944: !72 = !DIDerivedType(tag: DW_TAG_member, name: "__method3", scope: !67, file: !5, baseType: !21, size: 64, align: 64, offset: 192) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          945: !73 = !DICompositeType(tag: DW_TAG_structure_type, name: "{closure_env#0}<bool>", scope: !74, file: !5, size: 8, align: 8, elements: !75, templateParams: !13, identifier: "fc197a0a2913a4be570440991512783c") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          946: !74 = !DINamespace(name: "generic_closure", scope: !2) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          947: !75 = !{!76} 
check:24'0     ~~~~~~~~~~~~~
          948: !76 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !73, file: !5, baseType: !77, size: 8, align: 8) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          949: !77 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          950: !78 = !DIGlobalVariableExpression(var: !79, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          951: !79 = distinct !DIGlobalVariable(name: "<debug_vtable::generic_closure::{closure_env#0}<u32> as core::ops::function::FnOnce<()>>::{vtable}", scope: null, file: !5, type: !80, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          952: !80 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::generic_closure::{closure_env#0}<u32> as core::ops::function::FnOnce<()>>::{vtable_type}", file: !5, size: 256, align: 64, flags: DIFlagArtificial, elements: !81, vtableHolder: !86, templateParams: !13, identifier: "7a3f0613dc757c88f1da28a5043c28a5") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          953: !81 = !{!82, !83, !84, !85} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          954: !82 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !80, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          955: !83 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !80, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          956: !84 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !80, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          957: !85 = !DIDerivedType(tag: DW_TAG_member, name: "__method3", scope: !80, file: !5, baseType: !21, size: 64, align: 64, offset: 192) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          958: !86 = !DICompositeType(tag: DW_TAG_structure_type, name: "{closure_env#0}<u32>", scope: !74, file: !5, size: 32, align: 32, elements: !87, templateParams: !13, identifier: "b9f7b8f584539ad9431897e6af43adce") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          959: !87 = !{!88} 
check:24'0     ~~~~~~~~~~~~~
          960: !88 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !86, file: !5, baseType: !89, size: 32, align: 32) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          961: !89 = !DIBasicType(name: "u32", size: 32, encoding: DW_ATE_unsigned) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          962: !90 = !{i32 8, !"PIC Level", i32 2} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          963: !91 = !{i32 7, !"Dwarf Version", i32 4} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          964: !92 = !{i32 2, !"Debug Info Version", i32 3} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          965: !93 = !{!"rustc version 1.92.0-nightly (58a4de232 2025-10-02)"} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          966: !94 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !95, producer: "clang LLVM (rustc version 1.92.0-nightly (58a4de232 2025-10-02))", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !96, globals: !165, splitDebugInlining: false, nameTableKind: None) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          967: !95 = !DIFile(filename: "/checkout/tests/codegen-llvm/debug-vtable.rs/@/debug_vtable.fc929e6ad8b1de1c-cgu.0", directory: "/checkout/obj") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          968: !96 = !{!97} 
check:24'0     ~~~~~~~~~~~~~
          969: !97 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "AlignmentEnum", scope: !98, file: !5, baseType: !29, size: 64, align: 64, flags: DIFlagEnumClass, elements: !100) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          970: !98 = !DINamespace(name: "alignment", scope: !99) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          971: !99 = !DINamespace(name: "ptr", scope: !7) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          972: !100 = !{!101, !102, !103, !104, !105, !106, !107, !108, !109, !110, !111, !112, !113, !114, !115, !116, !117, !118, !119, !120, !121, !122, !123, !124, !125, !126, !127, !128, !129, !130, !131, !132, !133, !134, !135, !136, !137, !138, !139, !140, !141, !142, !143, !144, !145, !146, !147, !148, !149, !150, !151, !152, !153, !154, !155, !156, !157, !158, !159, !160, !161, !162, !163, !164} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          973: !101 = !DIEnumerator(name: "_Align1Shl0", value: 1, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          974: !102 = !DIEnumerator(name: "_Align1Shl1", value: 2, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          975: !103 = !DIEnumerator(name: "_Align1Shl2", value: 4, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          976: !104 = !DIEnumerator(name: "_Align1Shl3", value: 8, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          977: !105 = !DIEnumerator(name: "_Align1Shl4", value: 16, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          978: !106 = !DIEnumerator(name: "_Align1Shl5", value: 32, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          979: !107 = !DIEnumerator(name: "_Align1Shl6", value: 64, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          980: !108 = !DIEnumerator(name: "_Align1Shl7", value: 128, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          981: !109 = !DIEnumerator(name: "_Align1Shl8", value: 256, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          982: !110 = !DIEnumerator(name: "_Align1Shl9", value: 512, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          983: !111 = !DIEnumerator(name: "_Align1Shl10", value: 1024, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          984: !112 = !DIEnumerator(name: "_Align1Shl11", value: 2048, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          985: !113 = !DIEnumerator(name: "_Align1Shl12", value: 4096, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          986: !114 = !DIEnumerator(name: "_Align1Shl13", value: 8192, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          987: !115 = !DIEnumerator(name: "_Align1Shl14", value: 16384, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          988: !116 = !DIEnumerator(name: "_Align1Shl15", value: 32768, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          989: !117 = !DIEnumerator(name: "_Align1Shl16", value: 65536, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          990: !118 = !DIEnumerator(name: "_Align1Shl17", value: 131072, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          991: !119 = !DIEnumerator(name: "_Align1Shl18", value: 262144, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          992: !120 = !DIEnumerator(name: "_Align1Shl19", value: 524288, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          993: !121 = !DIEnumerator(name: "_Align1Shl20", value: 1048576, isUnsigned: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
            .
>>>>>>

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

error in revision `NONMSVC`: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-20/bin/FileCheck" "--input-file" "/checkout/obj/build/aarch64-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:24:13: error: NONMSVC: expected string not found in input
// NONMSVC: ![[PTR_TYPEDEF:[0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name: "*const ()", file: {{.*}}, baseType: ![[PTR:[0-9]+]])
            ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:891:33: note: scanning from here
!19 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned)
                                ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/debug-vtable.NONMSVC/debug-vtable.ll:893:1: note: possible intended match here
!21 = !DIDerivedType(tag: DW_TAG_typedef, name: "*const ()", file: !5, baseType: !22, align: 64)
^

Input file: /checkout/obj/build/aarch64-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:
<<<<<<
            .
            .
            .
          791:  %6 = extractvalue { ptr, i32 } %4, 1 
          792:  store ptr %5, ptr %0, align 8 
          793:  %7 = getelementptr inbounds i8, ptr %0, i64 8 
          794:  store i32 %6, ptr %7, align 8 
          795:  br label %bb3 
          796:  
          797: bb2: ; preds = %start 
          798:  %_3.0 = extractvalue { ptr, ptr } %3, 0, !dbg !1107 
          799:  %_3.1 = extractvalue { ptr, ptr } %3, 1, !dbg !1107 
          800:  %8 = load ptr, ptr %_1, align 8, !dbg !1109 
          801:  %9 = getelementptr inbounds i8, ptr %_1, i64 8, !dbg !1109 
          802:  %10 = load ptr, ptr %9, align 8, !dbg !1109 
          803:  store ptr %8, ptr %_0, align 8, !dbg !1109 
          804:  %11 = getelementptr inbounds i8, ptr %_0, i64 8, !dbg !1109 
          805:  store ptr %10, ptr %11, align 8, !dbg !1109 
          806:  %12 = getelementptr inbounds i8, ptr %_0, i64 16, !dbg !1109 
          807:  store ptr %_3.0, ptr %12, align 8, !dbg !1109 
          808:  %13 = getelementptr inbounds i8, ptr %12, i64 8, !dbg !1109 
          809:  store ptr %_3.1, ptr %13, align 8, !dbg !1109 
          810:  ret void, !dbg !1110 
          811:  
          812: terminate: ; preds = %bb3 
          813:  %14 = landingpad { ptr, i32 } 
          814:  filter [0 x ptr] zeroinitializer 
          815: ; call core::panicking::panic_in_cleanup 
          816:  call void @_ZN4core9panicking16panic_in_cleanup17hb49ddd0126953a49E() #9, !dbg !1111 
          817:  unreachable, !dbg !1111 
          818:  
          819: bb4: ; preds = %bb3 
          820:  %15 = load ptr, ptr %0, align 8, !dbg !1111 
          821:  %16 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !1111 
          822:  %17 = load i32, ptr %16, align 8, !dbg !1111 
          823:  %18 = insertvalue { ptr, i32 } poison, ptr %15, 0, !dbg !1111 
          824:  %19 = insertvalue { ptr, i32 } %18, i32 %17, 1, !dbg !1111 
          825:  resume { ptr, i32 } %19, !dbg !1111 
          826: } 
          827:  
          828: ; Function Attrs: nounwind uwtable 
          829: declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr) unnamed_addr #2 
          830:  
          831: ; core::panicking::panic_in_cleanup 
          832: ; Function Attrs: cold minsize noinline noreturn nounwind optsize uwtable 
          833: declare void @_ZN4core9panicking16panic_in_cleanup17hb49ddd0126953a49E() unnamed_addr #3 
          834:  
          835: ; __rustc::__rust_no_alloc_shim_is_unstable_v2 
          836: ; Function Attrs: nounwind uwtable 
          837: declare void @_RNvCsbXFxU6NFbkL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() unnamed_addr #2 
          838:  
          839: ; __rustc::__rust_alloc 
          840: ; Function Attrs: nounwind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable 
          841: declare noalias ptr @_RNvCsbXFxU6NFbkL_7___rustc12___rust_alloc(i64, i64 allocalign) unnamed_addr #4 
          842:  
          843: ; __rustc::__rust_alloc_zeroed 
          844: ; Function Attrs: nounwind allockind("alloc,zeroed,aligned") allocsize(0) uwtable 
          845: declare noalias ptr @_RNvCsbXFxU6NFbkL_7___rustc19___rust_alloc_zeroed(i64, i64 allocalign) unnamed_addr #5 
          846:  
          847: ; alloc::alloc::handle_alloc_error 
          848: ; Function Attrs: cold minsize noreturn optsize uwtable 
          849: declare void @_ZN5alloc5alloc18handle_alloc_error17hd155455c34fda75aE(i64, i64) unnamed_addr #6 
          850:  
          851: ; __rustc::__rust_dealloc 
          852: ; Function Attrs: nounwind allockind("free") uwtable 
          853: declare void @_RNvCsbXFxU6NFbkL_7___rustc14___rust_dealloc(ptr allocptr, i64, i64) unnamed_addr #7 
          854:  
          855: attributes #0 = { uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          856: attributes #1 = { inlinehint uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          857: attributes #2 = { nounwind uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          858: attributes #3 = { cold minsize noinline noreturn nounwind optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          859: attributes #4 = { nounwind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "alloc-variant-zeroed"="_RNvCsbXFxU6NFbkL_7___rustc19___rust_alloc_zeroed" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          860: attributes #5 = { nounwind allockind("alloc,zeroed,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          861: attributes #6 = { cold minsize noreturn optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          862: attributes #7 = { nounwind allockind("free") uwtable "alloc-family"="__rust_alloc" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
          863: attributes #8 = { cold } 
          864: attributes #9 = { cold noreturn nounwind } 
          865: attributes #10 = { nounwind } 
          866: attributes #11 = { noreturn } 
          867:  
          868: !llvm.module.flags = !{!90, !91, !92} 
          869: !llvm.ident = !{!93} 
          870: !llvm.dbg.cu = !{!94} 
          871:  
          872: !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) 
          873: !1 = distinct !DIGlobalVariable(name: "XYZ", linkageName: "_RNvCslGrcpNElu6S_12debug_vtable3XYZ", scope: !2, file: !3, line: 72, type: !4, isLocal: false, isDefinition: true, align: 64) 
          874: !2 = !DINamespace(name: "debug_vtable", scope: null) 
          875: !3 = !DIFile(filename: "/checkout/tests/codegen-llvm/debug-vtable.rs", directory: "", checksumkind: CSK_MD5, checksum: "bee4d39139f7bc80a4a0076d4a0e2723") 
          876: !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Option<(usize, *const ())>", scope: !6, file: !5, size: 192, align: 64, flags: DIFlagPublic, elements: !8, templateParams: !13, identifier: "ee416877c6650fce7f642a9c7b2455f6") 
          877: !5 = !DIFile(filename: "<unknown>", directory: "") 
          878: !6 = !DINamespace(name: "option", scope: !7) 
          879: !7 = !DINamespace(name: "core", scope: null) 
          880: !8 = !{!9} 
          881: !9 = !DICompositeType(tag: DW_TAG_variant_part, scope: !4, file: !5, size: 192, align: 64, elements: !10, templateParams: !13, identifier: "861fdcbc3dce99ef52e4e9d99c96d957", discriminator: !28) 
          882: !10 = !{!11, !24} 
          883: !11 = !DIDerivedType(tag: DW_TAG_member, name: "None", scope: !9, file: !5, baseType: !12, size: 192, align: 64, extraData: i64 0) 
          884: !12 = !DICompositeType(tag: DW_TAG_structure_type, name: "None", scope: !4, file: !5, size: 192, align: 64, flags: DIFlagPublic, elements: !13, templateParams: !14, identifier: "5215af9904b9ea5a63d5e21fa140242d") 
          885: !13 = !{} 
          886: !14 = !{!15} 
          887: !15 = !DITemplateTypeParameter(name: "T", type: !16) 
          888: !16 = !DICompositeType(tag: DW_TAG_structure_type, name: "(usize, *const ())", file: !5, size: 128, align: 64, elements: !17, templateParams: !13, identifier: "b72d53d400f228657ef18d8b2d6af85") 
          889: !17 = !{!18, !20} 
          890: !18 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !16, file: !5, baseType: !19, size: 64, align: 64) 
          891: !19 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned) 
check:24'0                                     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
          892: !20 = !DIDerivedType(tag: DW_TAG_member, name: "__1", scope: !16, file: !5, baseType: !21, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          893: !21 = !DIDerivedType(tag: DW_TAG_typedef, name: "*const ()", file: !5, baseType: !22, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:24'1     ?                                                                                                 possible intended match
          894: !22 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const ()", baseType: !23, size: 64, align: 64, dwarfAddressSpace: 0) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          895: !23 = !DIBasicType(name: "()", encoding: DW_ATE_unsigned) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          896: !24 = !DIDerivedType(tag: DW_TAG_member, name: "Some", scope: !9, file: !5, baseType: !25, size: 192, align: 64, extraData: i64 1) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          897: !25 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !4, file: !5, size: 192, align: 64, flags: DIFlagPublic, elements: !26, templateParams: !14, identifier: "7ca0a589d08001d9868923a85f4f3fb") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          898: !26 = !{!27} 
check:24'0     ~~~~~~~~~~~~~
          899: !27 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !25, file: !5, baseType: !16, size: 128, align: 64, offset: 64, flags: DIFlagPublic) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          900: !28 = !DIDerivedType(tag: DW_TAG_member, scope: !4, file: !5, baseType: !29, size: 64, align: 64, flags: DIFlagArtificial) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          901: !29 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          902: !30 = !DIGlobalVariableExpression(var: !31, expr: !DIExpression()) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          903: !31 = distinct !DIGlobalVariable(name: "<debug_vtable::Foo as debug_vtable::SomeTrait>::{vtable}", scope: null, file: !5, type: !32, isLocal: true, isDefinition: true) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          904: !32 = !DICompositeType(tag: DW_TAG_structure_type, name: "<debug_vtable::Foo as debug_vtable::SomeTrait>::{vtable_type}", file: !5, size: 320, align: 64, flags: DIFlagArtificial, elements: !33, vtableHolder: !39, templateParams: !13, identifier: "5a4399fe531ee6bd37a3efd8e5971b79") 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          905: !33 = !{!34, !35, !36, !37, !38} 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          906: !34 = !DIDerivedType(tag: DW_TAG_member, name: "drop_in_place", scope: !32, file: !5, baseType: !21, size: 64, align: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          907: !35 = !DIDerivedType(tag: DW_TAG_member, name: "size", scope: !32, file: !5, baseType: !19, size: 64, align: 64, offset: 64) 
check:24'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          908: !36 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !32, file: !5, baseType: !19, size: 64, align: 64, offset: 128) 

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.

6 participants