Do not hash allocations to name them. by cjgillot · Pull Request #119458 · rust-lang/rust (original) (raw)
failures:
---- [codegen] tests/codegen/overaligned-constant.rs stdout ----
error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-17/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll" "/checkout/tests/codegen/overaligned-constant.rs" "--allow-unused-prefixes" "--check-prefixes" "CHECK,NONMSVC" "--dump-input-context" "100"
--- stderr -------------------------------
--- stderr -------------------------------
/checkout/tests/codegen/overaligned-constant.rs:13:16: error: CHECK-SAME: is not on the same line as the previous match
// CHECK-SAME: , align 8
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll:11:192: note: 'next' match was here
@1 = private unnamed_addr constant <{ [8 x i8], ptr, [12 x i8], [4 x i8] }> <{ [8 x i8] c"\01\00\00\00\01\00\00\00", ptr @0, [12 x i8] c"\00\00\00\00\00\00\00\00\00\00\80@", [4 x i8] undef }>, align 8
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll:10:35: note: previous match ended here
@0 = private unnamed_addr constant <{}> zeroinitializer, align 4
/checkout/tests/codegen/overaligned-constant.rs🔞12: error: CHECK: expected string not found in input
/checkout/tests/codegen/overaligned-constant.rs🔞12: error: CHECK: expected string not found in input
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[full]], ptr align 8 @0, i64 32, i1 false)
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll:133:36: note: scanning from here
%_5 = alloca %SmallStruct, align 8
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll:133:36: note: with "full" equal to "%_5"
%_5 = alloca %SmallStruct, align 8
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll:139:2: note: possible intended match here
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_5, ptr align 8 @1, i64 32, i1 false)
Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/overaligned-constant/overaligned-constant.ll
Check file: /checkout/tests/codegen/overaligned-constant.rs
-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
1: ; ModuleID = 'overaligned_constant.15495f7f6a551fd9-cgu.0'
2: source_filename = "overaligned_constant.15495f7f6a551fd9-cgu.0"
3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
4: target triple = "x86_64-unknown-linux-gnu"
5:
6: %SmallStruct = type { %"core::option::Option<S>", { ptr, i64 }, float, [1 x i32] }
7: %"core::option::Option<S>" = type { i32, [1 x i32] }
8:
9: @vtable.0 = private unnamed_addr constant <{ ptr, [16 x i8], ptr, ptr, ptr }> <{ ptr @"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h52c5175ad80ebce0E", [16 x i8] c"\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h1c1299e9eae87a41E", ptr @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h2ac437e293ecf157E", ptr @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h2ac437e293ecf157E" }>, align 8
10: @0 = private unnamed_addr constant <{}> zeroinitializer, align 4
11: @1 = private unnamed_addr constant <{ [8 x i8], ptr, [12 x i8], [4 x i8] }> <{ [8 x i8] c"\01\00\00\00\01\00\00\00", ptr @0, [12 x i8] c"\00\00\00\00\00\00\00\00\00\00\80@", [4 x i8] undef }>, align 8
same:13 !~~~~~~~~ error: match on wrong line
13: ; std::sys_common::backtrace::__rust_begin_short_backtrace
13: ; std::sys_common::backtrace::__rust_begin_short_backtrace
14: ; Function Attrs: noinline nonlazybind uwtable
15: define internal void @_ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17he2127bf8796dbadcE(ptr noundef nonnull %f) unnamed_addr #0 {
17: ; call core::ops::function::FnOnce::call_once
17: ; call core::ops::function::FnOnce::call_once
18: call void @_ZN4core3ops8function6FnOnce9call_once17hbbf57cafd06a30a9E(ptr noundef nonnull %f)
19: call void asm sideeffect "", "~{memory}"(), !srcloc !4
20: ret void
21: }
23: ; std::rt::lang_start
23: ; std::rt::lang_start
24: ; Function Attrs: nonlazybind uwtable
25: define hidden noundef i64 @_ZN3std2rt10lang_start17h143e3c5c1f7cbc18E(ptr noundef nonnull %main, i64 noundef %argc, ptr noundef %argv, i8 noundef %sigpipe) unnamed_addr #1 {
26: start:
27: %_8 = alloca ptr, align 8
28: %_5 = alloca i64, align 8
29: call void @llvm.lifetime.start.p0(i64 8, ptr %_5)
30: call void @llvm.lifetime.start.p0(i64 8, ptr %_8)
31: store ptr %main, ptr %_8, align 8
32: ; call std::rt::lang_start_internal
33: %0 = call noundef i64 @_ZN3std2rt19lang_start_internal17h772f35cc76f762d6E(ptr noundef nonnull align 1 %_8, ptr noalias noundef readonly align 8 dereferenceable(24) @vtable.0, i64 noundef %argc, ptr noundef %argv, i8 noundef %sigpipe)
34: store i64 %0, ptr %_5, align 8
35: %v = load i64, ptr %_5, align 8, !noundef !5
36: call void @llvm.lifetime.end.p0(i64 8, ptr %_8)
37: call void @llvm.lifetime.end.p0(i64 8, ptr %_5)
38: ret i64 %v
39: }
41: ; std::rt::lang_start::{{closure}}
41: ; std::rt::lang_start::{{closure}}
42: ; Function Attrs: inlinehint nonlazybind uwtable
43: define internal noundef i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h2ac437e293ecf157E"(ptr noalias noundef readonly align 8 dereferenceable(8) %_1) unnamed_addr #2 {
44: start:
45: %self = alloca i8, align 1
46: call void @llvm.lifetime.start.p0(i64 1, ptr %self)
47: %_4 = load ptr, ptr %_1, align 8, !nonnull !5, !noundef !5
48: ; call std::sys_common::backtrace::__rust_begin_short_backtrace
49: call void @_ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17he2127bf8796dbadcE(ptr noundef nonnull %_4)
50: ; call <() as std::process::Termination>::report
51: %0 = call noundef i8 @"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he4858985a3f0614aE"()
52: store i8 %0, ptr %self, align 1
53: %_6 = load i8, ptr %self, align 1, !noundef !5
54: %_0 = zext i8 %_6 to i32
55: call void @llvm.lifetime.end.p0(i64 1, ptr %self)
56: ret i32 %_0
57: }
59: ; core::ops::function::FnOnce::call_once{{vtable.shim}}
59: ; core::ops::function::FnOnce::call_once{{vtable.shim}}
60: ; Function Attrs: inlinehint nonlazybind uwtable
61: define internal noundef i32 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h1c1299e9eae87a41E"(ptr noundef %_1) unnamed_addr #2 {
62: start:
63: %_2 = alloca {}, align 1
64: %0 = load ptr, ptr %_1, align 8, !nonnull !5, !noundef !5
65: ; call core::ops::function::FnOnce::call_once
66: %_0 = call noundef i32 @_ZN4core3ops8function6FnOnce9call_once17hc8184bd0614719b2E(ptr noundef nonnull %0)
67: ret i32 %_0
68: }
70: ; core::ops::function::FnOnce::call_once
70: ; core::ops::function::FnOnce::call_once
71: ; Function Attrs: inlinehint nonlazybind uwtable
72: define internal void @_ZN4core3ops8function6FnOnce9call_once17hbbf57cafd06a30a9E(ptr noundef nonnull %_1) unnamed_addr #2 {
73: start:
74: %_2 = alloca {}, align 1
75: call void %_1()
76: ret void
77: }
79: ; core::ops::function::FnOnce::call_once
79: ; core::ops::function::FnOnce::call_once
80: ; Function Attrs: inlinehint nonlazybind uwtable
81: define internal noundef i32 @_ZN4core3ops8function6FnOnce9call_once17hc8184bd0614719b2E(ptr noundef nonnull %0) unnamed_addr #2 personality ptr @rust_eh_personality {
82: start:
83: %1 = alloca { ptr, i32, [1 x i32] }, align 8
84: %_2 = alloca {}, align 1
85: %_1 = alloca ptr, align 8
86: store ptr %0, ptr %_1, align 8
87: ; invoke std::rt::lang_start::{{closure}}
88: %_0 = invoke noundef i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h2ac437e293ecf157E"(ptr noalias noundef readonly align 8 dereferenceable(8) %_1)
89: to label %bb1 unwind label %cleanup
90:
91: bb3: ; preds = %cleanup
92: %2 = load ptr, ptr %1, align 8, !noundef !5
93: %3 = getelementptr inbounds i8, ptr %1, i64 8
94: %4 = load i32, ptr %3, align 8, !noundef !5
95: call void @llvm.lifetime.end.p0(i64 16, ptr %1)
96: %5 = insertvalue { ptr, i32 } poison, ptr %2, 0
97: %6 = insertvalue { ptr, i32 } %5, i32 %4, 1
98: resume { ptr, i32 } %6
99:
100: cleanup: ; preds = %start
101: %7 = landingpad { ptr, i32 }
102: cleanup
103: %8 = extractvalue { ptr, i32 } %7, 0
104: %9 = extractvalue { ptr, i32 } %7, 1
105: call void @llvm.lifetime.start.p0(i64 16, ptr %1)
106: store ptr %8, ptr %1, align 8
107: %10 = getelementptr inbounds i8, ptr %1, i64 8
108: store i32 %9, ptr %10, align 8
109: br label %bb3
110:
111: bb1: ; preds = %start
112: ret i32 %_0
113: }
114:
115: ; core::ptr::drop_in_place<std::rt::lang_start<()>::{{closure}}>
116: ; Function Attrs: inlinehint nonlazybind uwtable
117: define internal void @"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h52c5175ad80ebce0E"(ptr noalias noundef align 8 dereferenceable(8) %_1) unnamed_addr #2 {
119: ret void
120: }
121:
122: ; <() as std::process::Termination>::report
122: ; <() as std::process::Termination>::report
123: ; Function Attrs: inlinehint nonlazybind uwtable
124: define internal noundef i8 @"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he4858985a3f0614aE"() unnamed_addr #2 {
126: ret i8 0
127: }
128:
129: ; overaligned_constant::main
129: ; overaligned_constant::main
130: ; Function Attrs: nonlazybind uwtable
131: define internal void @_ZN20overaligned_constant4main17h80cb6e8a54ca678cE() unnamed_addr #1 {
132: start:
133: %_5 = alloca %SmallStruct, align 8
check:18'0 X error: no match found
check:18'1 with "full" equal to "%_5"
134: %s = alloca i32, align 4
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
135: call void @llvm.lifetime.start.p0(i64 4, ptr %s)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
136: store i32 1, ptr %s, align 4
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137: store i32 3, ptr %s, align 4
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138: call void @llvm.lifetime.start.p0(i64 32, ptr %_5)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
139: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_5, ptr align 8 @1, i64 32, i1 false)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:18'2 ? possible intended match
140: %b.0 = load i32, ptr @1, align 4, !range !6, !noundef !5
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141: %b.1 = load i32, ptr getelementptr inbounds (i8, ptr @1, i64 4), align 4
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142: %0 = getelementptr inbounds %SmallStruct, ptr %_5, i32 0, i32 1
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143: %c.0 = load ptr, ptr %0, align 8, !nonnull !5, !align !7, !noundef !5
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
144: %1 = getelementptr inbounds i8, ptr %0, i64 8
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145: %c.1 = load i64, ptr %1, align 8, !noundef !5
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146: call void @llvm.lifetime.end.p0(i64 32, ptr %_5)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
147: call void @llvm.lifetime.end.p0(i64 4, ptr %s)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
148: ret void
check:18'0 ~~~~~~~~~~
149: }
check:18'0 ~~
150:
check:18'0 ~
151: ; std::rt::lang_start_internal
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
152: ; Function Attrs: nonlazybind uwtable
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153: declare noundef i64 @_ZN3std2rt19lang_start_internal17h772f35cc76f762d6E(ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), i64 noundef, ptr noundef, i8 noundef) unnamed_addr #1
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
154:
check:18'0 ~
155: ; Function Attrs: nonlazybind uwtable
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156: declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
157:
check:18'0 ~
158: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
159: declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160:
check:18'0 ~
161: ; Function Attrs: nonlazybind
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162: define i32 @main(i32 %0, ptr %1) unnamed_addr #4 {
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
163: top:
check:18'0 ~~~~~
164: %2 = sext i32 %0 to i64
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~
165: ; call std::rt::lang_start
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
166: %3 = call i64 @_ZN3std2rt10lang_start17h143e3c5c1f7cbc18E(ptr @_ZN20overaligned_constant4main17h80cb6e8a54ca678cE, i64 %2, ptr %1, i8 0)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167: %4 = trunc i64 %3 to i32
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
168: ret i32 %4
check:18'0 ~~~~~~~~~~~~
169: }
check:18'0 ~~
170:
check:18'0 ~
171: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
172: declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
173:
check:18'0 ~
174: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
175: declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
176:
check:18'0 ~
177: attributes #0 = { noinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
178: attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
179: attributes #2 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
180: attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
181: attributes #4 = { nonlazybind "target-cpu"="x86-64" }
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
182: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
183:
check:18'0 ~
184: !llvm.module.flags = !{!0, !1, !2}
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
185: !llvm.ident = !{!3}
check:18'0 ~~~~~~~~~~~~~~~~~~~~
186:
check:18'0 ~
187: !0 = !{i32 8, !"PIC Level", i32 2}
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188: !1 = !{i32 7, !"PIE Level", i32 2}
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
189: !2 = !{i32 2, !"RtLibUseGOT", i32 1}
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
190: !3 = !{!"rustc version 1.78.0-nightly (bf9661969 2024-02-25)"}
check:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191: !4 = !{i32 1159124}
check:18'0 ~~~~~~~~~~~~~~~~~~~~
192: !5 = !{}
check:18'0 ~~~~~~~~~
193: !6 = !{i32 0, i32 2}
check:18'0 ~~~~~~~~~~~~~~~~~~~~~
194: !7 = !{i64 4}
check:18'0 ~~~~~~~~~~~~~~
------------------------------------------