-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.llvm-fixed-upstreamIssue expected to be fixed by the next major LLVM upgrade, or backported fixesIssue expected to be fixed by the next major LLVM upgrade, or backported fixes
Description
This was only recently fixed by #123878 (bug was #120493), but the test fails on LLVM 19 like this:
failures:
---- [codegen] tests/codegen/vec-in-place.rs stdout ----
error: verification with 'FileCheck' failed
status: exit status: 1
command: "/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/llvm-installed/bin/FileCheck" "--input-file" "/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll" "/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs:97:16: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll:122:2: note: found here
br i1 %_47.not8.i.i.i.i.i, label %bb6.i.i, label %bb11.i.i.i.i.i
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs:98:16: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: call
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll:119:7: note: found here
tail call void @llvm.experimental.noalias.scope.decl(metadata !87)
^~~~
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs:100:16: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: %{{.*}} = udiv
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll:136:2: note: found here
%3 = udiv exact i64 %2, 24
^~~~~~~~~
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs:108:16: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll:189:2: note: found here
br i1 %_47.not8.i.i.i.i.i, label %bb6.i.i, label %bb11.i.i.i.i.i
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs:109:16: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: call
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll:186:7: note: found here
tail call void @llvm.experimental.noalias.scope.decl(metadata !128)
^~~~
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs:111:16: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: %{{.*}} = udiv
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll:203:2: note: found here
%3 = udiv exact i64 %2, 24
^~~~~~~~~
Input file: /var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/codegen/vec-in-place/vec-in-place.ll
Check file: /var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/codegen/vec-in-place.rs
-dump-input=help explains the following input dump.
Input was:
<<<<<<
.
.
.
19: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !3, !noalias !6
20: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !9, !noalias !14
21: %0 = getelementptr inbounds i8, ptr %_0, i64 8
22: store ptr %me.sroa.4.0.copyload.i, ptr %0, align 8, !alias.scope !9, !noalias !14
23: %1 = getelementptr inbounds i8, ptr %_0, i64 16
24: store i64 %me.sroa.5.0.copyload.i, ptr %1, align 8, !alias.scope !9, !noalias !14
25: ret void
26: }
27:
28: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable
29: define void @vec_iterator_cast_wrapper(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #0 personality ptr @rust_eh_personality {
30: start:
31: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !17, !noalias !20
32: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
33: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !17, !noalias !20, !nonnull !8, !noundef !8
34: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
35: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !17, !noalias !20
36: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !22, !noalias !27
37: %0 = getelementptr inbounds i8, ptr %_0, i64 8
38: store ptr %me.sroa.4.0.copyload.i, ptr %0, align 8, !alias.scope !22, !noalias !27
39: %1 = getelementptr inbounds i8, ptr %_0, i64 16
40: store i64 %me.sroa.5.0.copyload.i, ptr %1, align 8, !alias.scope !22, !noalias !27
41: ret void
42: }
43:
44: ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable
45: define void @vec_iterator_cast_unwrap(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #1 personality ptr @rust_eh_personality {
46: start:
47: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !30, !noalias !33
48: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
49: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !30, !noalias !33, !nonnull !8, !noundef !8
50: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
51: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !30, !noalias !33
52: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !35, !noalias !40
53: %0 = getelementptr inbounds i8, ptr %_0, i64 8
54: store ptr %me.sroa.4.0.copyload.i, ptr %0, align 8, !alias.scope !35, !noalias !40
55: %1 = getelementptr inbounds i8, ptr %_0, i64 16
56: store i64 %me.sroa.5.0.copyload.i, ptr %1, align 8, !alias.scope !35, !noalias !40
57: ret void
58: }
59:
60: ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable
61: define void @vec_iterator_cast_aggregate(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #1 personality ptr @rust_eh_personality {
62: start:
63: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !43, !noalias !46
64: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
65: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !43, !noalias !46, !nonnull !8, !noundef !8
66: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
67: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !43, !noalias !46
68: %_18.i.idx = and i64 %me.sroa.5.0.copyload.i, 576460752303423487
69: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !48, !noalias !53
70: %0 = getelementptr inbounds i8, ptr %_0, i64 8
71: store ptr %me.sroa.4.0.copyload.i, ptr %0, align 8, !alias.scope !48, !noalias !53
72: %1 = getelementptr inbounds i8, ptr %_0, i64 16
73: store i64 %_18.i.idx, ptr %1, align 8, !alias.scope !48, !noalias !53
74: ret void
75: }
76:
77: ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable
78: define void @vec_iterator_cast_deaggregate_tra(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #1 personality ptr @rust_eh_personality {
79: start:
80: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !56, !noalias !59
81: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
82: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !56, !noalias !59, !nonnull !8, !noundef !8
83: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
84: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !56, !noalias !59
85: %_18.i.idx = and i64 %me.sroa.5.0.copyload.i, 576460752303423487
86: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !61, !noalias !66
87: %0 = getelementptr inbounds i8, ptr %_0, i64 8
88: store ptr %me.sroa.4.0.copyload.i, ptr %0, align 8, !alias.scope !61, !noalias !66
89: %1 = getelementptr inbounds i8, ptr %_0, i64 16
90: store i64 %_18.i.idx, ptr %1, align 8, !alias.scope !61, !noalias !66
91: ret void
92: }
93:
94: ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable
95: define void @vec_iterator_cast_deaggregate_fold(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #1 personality ptr @rust_eh_personality {
96: start:
97: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !69, !noalias !72
98: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
99: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !69, !noalias !72, !nonnull !8, !noundef !8
100: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
101: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !69, !noalias !72
102: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !74, !noalias !79
103: %0 = getelementptr inbounds i8, ptr %_0, i64 8
104: store ptr %me.sroa.4.0.copyload.i, ptr %0, align 8, !alias.scope !74, !noalias !79
105: %1 = getelementptr inbounds i8, ptr %_0, i64 16
106: store i64 %me.sroa.5.0.copyload.i, ptr %1, align 8, !alias.scope !74, !noalias !79
107: ret void
108: }
109:
110: ; Function Attrs: nounwind nonlazybind uwtable
111: define void @vec_iterator_cast_unwrap_drop(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #2 personality ptr @rust_eh_personality {
112: start:
113: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !82, !noalias !85
114: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
115: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !82, !noalias !85, !nonnull !8, !noundef !8
116: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
117: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !82, !noalias !85
118: %_18.i = getelementptr inbounds %"Wrapper<alloc::string::String>", ptr %me.sroa.4.0.copyload.i, i64 %me.sroa.5.0.copyload.i
119: tail call void @llvm.experimental.noalias.scope.decl(metadata !87)
not:98 !~~~ error: no match expected
120: tail call void @llvm.experimental.noalias.scope.decl(metadata !90)
121: %_47.not8.i.i.i.i.i = icmp eq i64 %me.sroa.5.0.copyload.i, 0
122: br i1 %_47.not8.i.i.i.i.i, label %bb6.i.i, label %bb11.i.i.i.i.i
not:97 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match expected
123:
124: bb11.i.i.i.i.i: ; preds = %start, %bb11.i.i.i.i.i
125: %accum.sroa.4.010.i.i.i.i.i = phi ptr [ %_6.i.i.i.i.i.i.i, %bb11.i.i.i.i.i ], [ %me.sroa.4.0.copyload.i, %start ]
126: %_6.i.i.i.i.i.i.i = getelementptr i8, ptr %accum.sroa.4.010.i.i.i.i.i, i64 24
127: %_47.not.i.i.i.i.i = icmp eq ptr %_6.i.i.i.i.i.i.i, %_18.i
128: br i1 %_47.not.i.i.i.i.i, label %bb6.i.i, label %bb11.i.i.i.i.i
129:
130: bb6.i.i: ; preds = %bb11.i.i.i.i.i, %start
131: %self2.i.i.i = phi ptr [ %me.sroa.4.0.copyload.i, %start ], [ %_6.i.i.i.i.i.i.i, %bb11.i.i.i.i.i ]
132: %accum.sroa.4.0.lcssa.i.i.i.i.i = phi ptr [ %me.sroa.4.0.copyload.i, %start ], [ %_18.i, %bb11.i.i.i.i.i ]
133: %0 = ptrtoint ptr %_18.i to i64
134: %1 = ptrtoint ptr %self2.i.i.i to i64
135: %2 = sub nuw i64 %0, %1
136: %3 = udiv exact i64 %2, 24
not:100 !~~~~~~~~ error: no match expected
137: tail call void @llvm.experimental.noalias.scope.decl(metadata !93)
138: %_710.i.i.i.i = icmp eq ptr %_18.i, %self2.i.i.i
139: br i1 %_710.i.i.i.i, label %"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17heaba35c2218b2756E.exit", label %bb5.i.i.i.i
140:
141: bb5.i.i.i.i: ; preds = %bb6.i.i, %"_ZN4core3ptr71drop_in_place$LT$vec_in_place..Wrapper$LT$alloc..string..String$GT$$GT$17he9d1d0763a5e7e3bE.exit.i.i.i.i"
142: %_3.sroa.0.011.i.i.i.i = phi i64 [ %4, %"_ZN4core3ptr71drop_in_place$LT$vec_in_place..Wrapper$LT$alloc..string..String$GT$$GT$17he9d1d0763a5e7e3bE.exit.i.i.i.i" ], [ 0, %bb6.i.i ]
143: %_6.i.i.i.i = getelementptr inbounds [0 x %"Wrapper<alloc::string::String>"], ptr %self2.i.i.i, i64 0, i64 %_3.sroa.0.011.i.i.i.i
144: %4 = add nuw i64 %_3.sroa.0.011.i.i.i.i, 1
145: tail call void @llvm.experimental.noalias.scope.decl(metadata !96)
146: tail call void @llvm.experimental.noalias.scope.decl(metadata !99)
147: tail call void @llvm.experimental.noalias.scope.decl(metadata !102)
148: tail call void @llvm.experimental.noalias.scope.decl(metadata !105)
149: tail call void @llvm.experimental.noalias.scope.decl(metadata !108)
150: %_3.i.i.i1.i.i.i.i.i.i.i = load i64, ptr %_6.i.i.i.i, align 8, !alias.scope !111, !noalias !114, !noundef !8
151: %5 = icmp eq i64 %_3.i.i.i1.i.i.i.i.i.i.i, 0
152: br i1 %5, label %"_ZN4core3ptr71drop_in_place$LT$vec_in_place..Wrapper$LT$alloc..string..String$GT$$GT$17he9d1d0763a5e7e3bE.exit.i.i.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0f2d39528d187dc6E.exit.i.i2.i.i.i.i.i.i.i"
153:
154: "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0f2d39528d187dc6E.exit.i.i2.i.i.i.i.i.i.i": ; preds = %bb5.i.i.i.i
155: %6 = getelementptr inbounds i8, ptr %_6.i.i.i.i, i64 8
156: %self1.i.i.i3.i.i.i.i.i.i.i = load ptr, ptr %6, align 8, !alias.scope !111, !noalias !114, !nonnull !8, !noundef !8
157: tail call void @__rust_dealloc(ptr noundef nonnull %self1.i.i.i3.i.i.i.i.i.i.i, i64 noundef %_3.i.i.i1.i.i.i.i.i.i.i, i64 noundef 1) #6, !noalias !120
158: br label %"_ZN4core3ptr71drop_in_place$LT$vec_in_place..Wrapper$LT$alloc..string..String$GT$$GT$17he9d1d0763a5e7e3bE.exit.i.i.i.i"
159:
160: "_ZN4core3ptr71drop_in_place$LT$vec_in_place..Wrapper$LT$alloc..string..String$GT$$GT$17he9d1d0763a5e7e3bE.exit.i.i.i.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0f2d39528d187dc6E.exit.i.i2.i.i.i.i.i.i.i", %bb5.i.i.i.i
161: %_7.i.i.i.i = icmp eq i64 %4, %3
162: br i1 %_7.i.i.i.i, label %"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17heaba35c2218b2756E.exit", label %bb5.i.i.i.i
163:
164: "_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17heaba35c2218b2756E.exit": ; preds = %"_ZN4core3ptr71drop_in_place$LT$vec_in_place..Wrapper$LT$alloc..string..String$GT$$GT$17he9d1d0763a5e7e3bE.exit.i.i.i.i", %bb6.i.i
165: %7 = ptrtoint ptr %accum.sroa.4.0.lcssa.i.i.i.i.i to i64
166: %8 = ptrtoint ptr %me.sroa.4.0.copyload.i to i64
167: %9 = sub nuw i64 %7, %8
168: %10 = udiv exact i64 %9, 24
169: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !121, !noalias !122
170: %11 = getelementptr inbounds i8, ptr %_0, i64 8
171: store ptr %me.sroa.4.0.copyload.i, ptr %11, align 8, !alias.scope !121, !noalias !122
172: %12 = getelementptr inbounds i8, ptr %_0, i64 16
173: store i64 %10, ptr %12, align 8, !alias.scope !121, !noalias !122
174: ret void
175: }
176:
177: ; Function Attrs: nounwind nonlazybind uwtable
178: define void @vec_iterator_cast_wrap_drop(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %vec) unnamed_addr #2 personality ptr @rust_eh_personality {
179: start:
180: %me.sroa.0.0.copyload.i = load i64, ptr %vec, align 8, !alias.scope !123, !noalias !126
181: %me.sroa.4.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 8
182: %me.sroa.4.0.copyload.i = load ptr, ptr %me.sroa.4.0.self.sroa_idx.i, align 8, !alias.scope !123, !noalias !126, !nonnull !8, !noundef !8
183: %me.sroa.5.0.self.sroa_idx.i = getelementptr inbounds i8, ptr %vec, i64 16
184: %me.sroa.5.0.copyload.i = load i64, ptr %me.sroa.5.0.self.sroa_idx.i, align 8, !alias.scope !123, !noalias !126
185: %_18.i = getelementptr inbounds %"alloc::string::String", ptr %me.sroa.4.0.copyload.i, i64 %me.sroa.5.0.copyload.i
186: tail call void @llvm.experimental.noalias.scope.decl(metadata !128)
not:109 !~~~ error: no match expected
187: tail call void @llvm.experimental.noalias.scope.decl(metadata !131)
188: %_47.not8.i.i.i.i.i = icmp eq i64 %me.sroa.5.0.copyload.i, 0
189: br i1 %_47.not8.i.i.i.i.i, label %bb6.i.i, label %bb11.i.i.i.i.i
not:108 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match expected
190:
191: bb11.i.i.i.i.i: ; preds = %start, %bb11.i.i.i.i.i
192: %accum.sroa.4.010.i.i.i.i.i = phi ptr [ %_6.i.i.i.i.i.i.i, %bb11.i.i.i.i.i ], [ %me.sroa.4.0.copyload.i, %start ]
193: %_6.i.i.i.i.i.i.i = getelementptr i8, ptr %accum.sroa.4.010.i.i.i.i.i, i64 24
194: %_47.not.i.i.i.i.i = icmp eq ptr %_6.i.i.i.i.i.i.i, %_18.i
195: br i1 %_47.not.i.i.i.i.i, label %bb6.i.i, label %bb11.i.i.i.i.i
196:
197: bb6.i.i: ; preds = %bb11.i.i.i.i.i, %start
198: %self2.i.i.i = phi ptr [ %me.sroa.4.0.copyload.i, %start ], [ %_6.i.i.i.i.i.i.i, %bb11.i.i.i.i.i ]
199: %accum.sroa.4.0.lcssa.i.i.i.i.i = phi ptr [ %me.sroa.4.0.copyload.i, %start ], [ %_18.i, %bb11.i.i.i.i.i ]
200: %0 = ptrtoint ptr %_18.i to i64
201: %1 = ptrtoint ptr %self2.i.i.i to i64
202: %2 = sub nuw i64 %0, %1
203: %3 = udiv exact i64 %2, 24
not:111 !~~~~~~~~ error: no match expected
204: tail call void @llvm.experimental.noalias.scope.decl(metadata !134)
205: %_710.i.i.i.i = icmp eq ptr %_18.i, %self2.i.i.i
206: br i1 %_710.i.i.i.i, label %"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h2f243e1fd049e2c3E.exit", label %bb5.i.i.i.i
207:
208: bb5.i.i.i.i: ; preds = %bb6.i.i, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0ebea32be7a5449E.exit.i.i.i.i"
209: %_3.sroa.0.011.i.i.i.i = phi i64 [ %4, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0ebea32be7a5449E.exit.i.i.i.i" ], [ 0, %bb6.i.i ]
210: %_6.i.i.i.i = getelementptr inbounds [0 x %"alloc::string::String"], ptr %self2.i.i.i, i64 0, i64 %_3.sroa.0.011.i.i.i.i
211: %4 = add nuw i64 %_3.sroa.0.011.i.i.i.i, 1
212: tail call void @llvm.experimental.noalias.scope.decl(metadata !137)
213: tail call void @llvm.experimental.noalias.scope.decl(metadata !140)
214: tail call void @llvm.experimental.noalias.scope.decl(metadata !143)
215: tail call void @llvm.experimental.noalias.scope.decl(metadata !146)
216: %_3.i.i.i1.i.i.i.i.i.i = load i64, ptr %_6.i.i.i.i, align 8, !alias.scope !149, !noalias !152, !noundef !8
217: %5 = icmp eq i64 %_3.i.i.i1.i.i.i.i.i.i, 0
218: br i1 %5, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0ebea32be7a5449E.exit.i.i.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0f2d39528d187dc6E.exit.i.i2.i.i.i.i.i.i"
219:
220: "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0f2d39528d187dc6E.exit.i.i2.i.i.i.i.i.i": ; preds = %bb5.i.i.i.i
221: %6 = getelementptr inbounds i8, ptr %_6.i.i.i.i, i64 8
222: %self1.i.i.i3.i.i.i.i.i.i = load ptr, ptr %6, align 8, !alias.scope !149, !noalias !152, !nonnull !8, !noundef !8
223: tail call void @__rust_dealloc(ptr noundef nonnull %self1.i.i.i3.i.i.i.i.i.i, i64 noundef %_3.i.i.i1.i.i.i.i.i.i, i64 noundef 1) #6, !noalias !158
224: br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0ebea32be7a5449E.exit.i.i.i.i"
225:
226: "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0ebea32be7a5449E.exit.i.i.i.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0f2d39528d187dc6E.exit.i.i2.i.i.i.i.i.i", %bb5.i.i.i.i
227: %_7.i.i.i.i = icmp eq i64 %4, %3
228: br i1 %_7.i.i.i.i, label %"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h2f243e1fd049e2c3E.exit", label %bb5.i.i.i.i
229:
230: "_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h2f243e1fd049e2c3E.exit": ; preds = %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0ebea32be7a5449E.exit.i.i.i.i", %bb6.i.i
231: %7 = ptrtoint ptr %accum.sroa.4.0.lcssa.i.i.i.i.i to i64
232: %8 = ptrtoint ptr %me.sroa.4.0.copyload.i to i64
233: %9 = sub nuw i64 %7, %8
234: %10 = udiv exact i64 %9, 24
235: store i64 %me.sroa.0.0.copyload.i, ptr %_0, align 8, !alias.scope !159, !noalias !160
236: %11 = getelementptr inbounds i8, ptr %_0, i64 8
237: store ptr %me.sroa.4.0.copyload.i, ptr %11, align 8, !alias.scope !159, !noalias !160
238: %12 = getelementptr inbounds i8, ptr %_0, i64 16
239: store i64 %10, ptr %12, align 8, !alias.scope !159, !noalias !160
240: ret void
241: }
242:
243: ; Function Attrs: nonlazybind uwtable
244: declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #3
245:
246: ; Function Attrs: nounwind nonlazybind allockind("free") uwtable
247: declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #4
248:
249: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
250: declare void @llvm.experimental.noalias.scope.decl(metadata) #5
251:
252: attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
253: attributes #1 = { nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
254: attributes #2 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
255: attributes #3 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
256: attributes #4 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" }
257: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }
258: attributes #6 = { nounwind }
259:
260: !llvm.module.flags = !{!0, !1}
261: !llvm.ident = !{!2}
262:
263: !0 = !{i32 8, !"PIC Level", i32 2}
264: !1 = !{i32 2, !"RtLibUseGOT", i32 1}
265: !2 = !{!"rustc version 1.80.0-dev"}
266: !3 = !{!4}
267: !4 = distinct !{!4, !5, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h4e944e9c75742b34E: %self"}
268: !5 = distinct !{!5, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h4e944e9c75742b34E"}
269: !6 = !{!7}
270: !7 = distinct !{!7, !5, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h4e944e9c75742b34E: %_0"}
271: !8 = !{}
272: !9 = !{!10, !12}
273: !10 = distinct !{!10, !11, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17h95c3e8ed0aa22dd5E: %vec"}
274: !11 = distinct !{!11, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17h95c3e8ed0aa22dd5E"}
275: !12 = distinct !{!12, !13, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h42a09ea266c3b9e0E: %_0"}
276: !13 = distinct !{!13, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h42a09ea266c3b9e0E"}
277: !14 = !{!15, !16}
278: !15 = distinct !{!15, !11, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17h95c3e8ed0aa22dd5E: %iterator"}
279: !16 = distinct !{!16, !13, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h42a09ea266c3b9e0E: %iterator"}
280: !17 = !{!18}
281: !18 = distinct !{!18, !19, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h816975ba8271cf4fE: %self"}
282: !19 = distinct !{!19, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h816975ba8271cf4fE"}
283: !20 = !{!21}
284: !21 = distinct !{!21, !19, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h816975ba8271cf4fE: %_0"}
285: !22 = !{!23, !25}
286: !23 = distinct !{!23, !24, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17hf702aa1637d1c1e2E: %vec"}
287: !24 = distinct !{!24, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17hf702aa1637d1c1e2E"}
288: !25 = distinct !{!25, !26, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h8ca7b4c96408a2b9E: %_0"}
289: !26 = distinct !{!26, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h8ca7b4c96408a2b9E"}
290: !27 = !{!28, !29}
291: !28 = distinct !{!28, !24, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17hf702aa1637d1c1e2E: %iterator"}
292: !29 = distinct !{!29, !26, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h8ca7b4c96408a2b9E: %iterator"}
293: !30 = !{!31}
294: !31 = distinct !{!31, !32, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h42a94bf679cb6a17E: %self"}
295: !32 = distinct !{!32, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h42a94bf679cb6a17E"}
296: !33 = !{!34}
297: !34 = distinct !{!34, !32, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h42a94bf679cb6a17E: %_0"}
298: !35 = !{!36, !38}
299: !36 = distinct !{!36, !37, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17h090eecf57f869f89E: %vec"}
300: !37 = distinct !{!37, !"_ZN5alloc3vec16in_place_collect18from_iter_in_place17h090eecf57f869f89E"}
301: !38 = distinct !{!38, !39, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h0d58b7de551627c3E: %_0"}
302: !39 = distinct !{!39, !"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h0d58b7de551627c3E"}
303: !40 = !{!41, !42}
.
.
.
>>>>>>
------------------------------------------
failures:
[codegen] tests/codegen/vec-in-place.rs
Filing this so we don't lose track of it.
jwong101
Metadata
Metadata
Assignees
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.llvm-fixed-upstreamIssue expected to be fixed by the next major LLVM upgrade, or backported fixesIssue expected to be fixed by the next major LLVM upgrade, or backported fixes