Skip to content
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

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
Contributor

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
Contributor

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
Contributor

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
@fmease
Copy link
Member

fmease commented Jan 3, 2024

@bors treeclosed-

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

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
Contributor

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
Contributor

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
Contributor

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

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

@bors
Copy link
Contributor

bors commented Apr 17, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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.

None yet