-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Do not hash allocations to name them. #119458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
r? @TaKO8Ki
(rustbot has picked a reviewer for you, use r? to override)
yeah, i agree that we should just let llvm deal with the unnamed consts lol
r? compiler-errors @bors r+ rollup=never
I added hashing of them to make diffing LLVM IR easier.
...-errors Do not hash allocations to name them. Computing the stable hash behind an `Allocation` can be quite slow. The given name does not provide a lot of benefit: a hash is not meaningfully easier to understand than an arbitrary index.
@bors treeclosed=100
💔 Test failed - checks-actions
@bors retry
Apple runner billing issue.
This comment has been minimized.
This comment has been minimized.
You are also removing the alloc_
prefix in this PR.
@bjorn3: isn't that just because this is using the anonymous numbering from llvm? is there a reason to keep alloc_
as a prefix?
It shows up in the symbol table, right? Seeing just a symbol named 1234 would be less understandable what it is. Especially when decompiling where it could show up as &1234
when taking a reference to alloc 1234 while looking as taking a reference to a literal integer 1234. Also there are probably tools that can't handle with identifiers that are not valid C identifiers. That these symbols are not public is a mitigating factor though.
@bjorn3 :
It shows up in the symbol table, right?
No, it does not. Those constants are "private unnamed_addr" for LLVM, and get no symbol in the binary. The only change is the name that appear in LLVM IR dumps.
7177a04
to
cb6e396
Compare
@bors r+
🌲 The tree is currently closed for pull requests below priority 50. This pull request will be tested once the tree is reopened.
...-errors Do not hash allocations to name them. Computing the stable hash behind an `Allocation` can be quite slow. The given name does not provide a lot of benefit: a hash is not meaningfully easier to understand than an arbitrary index.
The job x86_64-gnu-llvm-17
failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
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:18:12: error: CHECK: expected string not found in input
/checkout/tests/codegen/overaligned-constant.rs:18: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$$GT17ドルh52c5175ad80ebce0E", [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$$u7d17ドルh1c1299e9eae87a41E", ptr @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d17ドルh2ac437e293ecf157E", ptr @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d17ドルh2ac437e293ecf157E" }>, 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$$u7d17ドルh2ac437e293ecf157E"(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$GT6ドルreport17he4858985a3f0614aE"()
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$$u7d17ドルh1c1299e9eae87a41E"(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$$u7d17ドルh2ac437e293ecf157E"(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$$GT17ドルh52c5175ad80ebce0E"(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$GT6ドルreport17he4858985a3f0614aE"() 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 ~~~~~~~~~~~~~~
------------------------------------------
💔 Test failed - checks-actions
@rustbot author
I added hashing of them to make diffing LLVM IR easier.
⬆️ That still seems like a valid argument?
This PR is somehow back in the bors queue. It's not currently approved though. I don't know what's going on but I don't want bors to merge random PRs.^^
Since this is not the only affected PR...
(削除) @/bors treeclosed=100 (削除ここまで)
EDIT(jieyouxu): bors pls don't see this
@bors r-
Someone probably ran a resync?
Yeah but that shouldn't screw everything up.^^
Right, I'm just pointing out that this is typically how PRs get back into the queue. I don't think anyone is gonna fix homu to stop doing that, though.
Okay it seems it's just "PRs that were approved and then failed CI" that got re-queued. Not catastrophic then, they'll probably fail again.
(削除) @/bors treeclosed- (削除ここまで)
EDIT(jieyouxu): bors pls don't see this
☔ The latest upstream changes (presumably #123936) made this pull request unmergeable. Please resolve the merge conflicts.
Computing the stable hash behind an
Allocation
can be quite slow. The given name does not provide a lot of benefit: a hash is not meaningfully easier to understand than an arbitrary index.