Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Do not hash allocations to name them. #119458

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

cjgillot
Copy link
Contributor

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.

@rustbot
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
@compiler-errors
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

@bors
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
@Zoxc
Copy link
Contributor

Zoxc commented Dec 31, 2023

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

@bors
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.
@ehuss
Copy link
Contributor

ehuss commented Jan 1, 2024

@bors treeclosed=100

@bors
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
@ehuss
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
@rust-log-analyzer

This comment has been minimized.

@bjorn3
Copy link
Member

bjorn3 commented Jan 1, 2024

You are also removing the alloc_ prefix in this PR.

@compiler-errors
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?

@bjorn3
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
@cjgillot
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
@compiler-errors
Copy link
Member

@bors r+

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

@bors
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.
@bors
Copy link
Collaborator

bors commented Feb 25, 2024

⌛ Testing commit cb6e396 with merge bf96619...

@rust-log-analyzer
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$$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     ~~~~~~~~~~~~~~
------------------------------------------



@bors
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
@compiler-errors
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
@RalfJung
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?

@RalfJung
Copy link
Member

RalfJung commented Mar 4, 2024

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

@compiler-errors
Copy link
Member

@bors r-

Someone probably ran a resync?

@RalfJung
Copy link
Member

RalfJung commented Mar 4, 2024

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

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

@RalfJung
Copy link
Member

RalfJung commented Mar 4, 2024

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

@bors
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
# for free to join this conversation on GitHub. Already have an account? # to comment
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
Development

Successfully merging this pull request may close these issues.