Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Open
cjgillot wants to merge 1 commit into rust-lang:master
base: master
Choose a base branch
Loading
from cjgillot:anonymous-alloc

Conversation

Copy link
Contributor

@cjgillot cjgillot commented Dec 31, 2023

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.

Copy link
Collaborator

rustbot commented Dec 31, 2023

r? @TaKO8Ki

(rustbot has picked a reviewer for you, use r? to override)

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Dec 31, 2023
Copy link
Member

yeah, i agree that we should just let llvm deal with the unnamed consts lol

r? compiler-errors @bors r+ rollup=never

Copy link
Collaborator

bors commented Dec 31, 2023

📌 Commit 7177a04 has been approved by compiler-errors

It is now in the queue for this repository.

@bors bors removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 31, 2023
@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Dec 31, 2023
Copy link
Contributor

Zoxc commented Dec 31, 2023

I added hashing of them to make diffing LLVM IR easier.

Copy link
Collaborator

bors commented Jan 1, 2024

⌛ Testing commit 7177a04 with merge 73e3c5c...

bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 1, 2024
...-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.
Copy link
Contributor

ehuss commented Jan 1, 2024

@bors treeclosed=100

Copy link
Collaborator

bors commented Jan 1, 2024

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 1, 2024
Copy link
Contributor

ehuss commented Jan 1, 2024

@bors retry

Apple runner billing issue.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 1, 2024

This comment has been minimized.

Copy link
Member

bjorn3 commented Jan 1, 2024

You are also removing the alloc_ prefix in this PR.

Copy link
Member

@bjorn3: isn't that just because this is using the anonymous numbering from llvm? is there a reason to keep alloc_ as a prefix?

Copy link
Member

bjorn3 commented Jan 1, 2024

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.

@bors bors mentioned this pull request Jan 1, 2024
Copy link
Contributor Author

cjgillot commented Jan 7, 2024

@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.

@Dylan-DPC Dylan-DPC added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 20, 2024
Copy link
Member

@bors r+

Copy link
Collaborator

bors commented Feb 24, 2024

📌 Commit cb6e396 has been approved by compiler-errors

It is now in the queue for this repository.

Copy link
Collaborator

bors commented Feb 24, 2024

🌲 The tree is currently closed for pull requests below priority 50. This pull request will be tested once the tree is reopened.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 24, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 25, 2024
...-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.
Copy link
Collaborator

bors commented Feb 25, 2024

⌛ Testing commit cb6e396 with merge bf96619...

Copy link
Collaborator

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 ~~~~~~~~~~~~~~
------------------------------------------

Copy link
Collaborator

bors commented Feb 25, 2024

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 25, 2024
Copy link
Member

@rustbot author

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 27, 2024
Copy link
Member

RalfJung commented Mar 4, 2024

I added hashing of them to make diffing LLVM IR easier.

⬆️ That still seems like a valid argument?

Copy link
Member

RalfJung commented Mar 4, 2024
edited by jieyouxu
Loading

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

Copy link
Member

@bors r-

Someone probably ran a resync?

Copy link
Member

RalfJung commented Mar 4, 2024

Yeah but that shouldn't screw everything up.^^

Copy link
Member

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.

fmease reacted with thumbs up emoji

Copy link
Member

RalfJung commented Mar 4, 2024
edited by jieyouxu
Loading

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

Copy link
Collaborator

bors commented Apr 17, 2024

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

@alex-semenyuk alex-semenyuk added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Reviewers

@compiler-errors compiler-errors compiler-errors approved these changes

Labels
S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /