Skip to content

Apply EarlyOtherwiseBranch to scalar value#129047

Merged
bors merged 1 commit into
rust-lang:masterfrom
dianqk:early_otherwise_branch_scalar
Sep 23, 2024
Merged

Apply EarlyOtherwiseBranch to scalar value#129047
bors merged 1 commit into
rust-lang:masterfrom
dianqk:early_otherwise_branch_scalar

Conversation

@dianqk

@dianqk dianqk commented Aug 13, 2024

Copy link
Copy Markdown
Member

In the future, I'm thinking of hoisting discriminant via GVN so that we only need to write very little code here.

r? @cjgillot

@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 Aug 13, 2024
@rustbot

rustbot commented Aug 13, 2024

Copy link
Copy Markdown
Collaborator

Some changes occurred to MIR optimizations

cc @rust-lang/wg-mir-opt

@bors

bors commented Sep 9, 2024

Copy link
Copy Markdown
Collaborator

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

@cjgillot

Copy link
Copy Markdown
Contributor

r=me after rebase

@dianqk dianqk force-pushed the early_otherwise_branch_scalar branch from f8ebe31 to e3a9eaf Compare September 18, 2024 14:00
@dianqk

dianqk commented Sep 18, 2024

Copy link
Copy Markdown
Member Author

Rebased.
This reverts the change of early_otherwise_branch.rs in #129929. cc @nnethercote

@cjgillot

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Sep 22, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit e3a9eaf has been approved by cjgillot

It is now in the queue for this repository.

@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 Sep 22, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 23, 2024
…, r=cjgillot

Apply `EarlyOtherwiseBranch` to scalar value

In the future, I'm thinking of hoisting discriminant via GVN so that we only need to write very little code here.

r? `@cjgillot`
@bors

bors commented Sep 23, 2024

Copy link
Copy Markdown
Collaborator

⌛ Testing commit e3a9eaf with merge ec80a37...

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu-llvm-19 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/issues/issue-111508-vec-tryinto-array.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-19/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111508-vec-tryinto-array/issue-111508-vec-tryinto-array.ll" "/checkout/tests/codegen/issues/issue-111508-vec-tryinto-array.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/issues/issue-111508-vec-tryinto-array.rs:12:15: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/issues/issue-111508-vec-tryinto-array.rs:12:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: unwrap_failed
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111508-vec-tryinto-array/issue-111508-vec-tryinto-array.ll:161:24: note: found here
; invoke core::result::unwrap_failed

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111508-vec-tryinto-array/issue-111508-vec-tryinto-array.ll
Check file: /checkout/tests/codegen/issues/issue-111508-vec-tryinto-array.rs


-dump-input=help explains the following input dump.
Input was:
<<<<<<
        .
        .
        .
        .
       61:  tail call void @__rust_dealloc(ptr noundef nonnull %self3.i.i.i.i3, i64 noundef %_5.i.i.i.i1, i64 noundef 1) #8, !noalias !24 
       62:  br label %"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h18b90d2aed168b5cE.exit4" 
       63:  
       64: "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h18b90d2aed168b5cE.exit4": ; preds = %bb4, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2" 
       65:  ret void 
       66: } 
       67:  
       68: ; <alloc::vec::Vec<T,A> as core::fmt::Debug>::fmt 
       69: ; Function Attrs: nonlazybind uwtable 
       70: define internal noundef zeroext i1 @"_ZN65_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17ha3a5f891ff49c05aE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %self, ptr noalias noundef align 8 dereferenceable(64) %f) unnamed_addr #0 personality ptr @rust_eh_personality { 
       71: start: 
       72:  %entry.i.i = alloca [8 x i8], align 8 
       73:  %_5.i = alloca [16 x i8], align 8 
       74:  %self1 = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 
       75:  %0 = getelementptr inbounds i8, ptr %self, i64 16 
       76:  %len = load i64, ptr %0, align 8, !noundef !3 
       77:  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_5.i), !noalias !25 
       78: ; call core::fmt::Formatter::debug_list 
       79:  call void @_ZN4core3fmt9Formatter10debug_list17hde3d95a55a067d9dE(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %_5.i, ptr noalias noundef nonnull align 8 dereferenceable(64) %f), !noalias !29 
       80:  %_11.i = getelementptr inbounds i8, ptr %self1, i64 %len 
       81:  %1 = icmp eq i64 %len, 0 
       82:  br i1 %1, label %"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h956362543c5fafecE.exit", label %bb5.i.i 
       83:  
       84: bb5.i.i: ; preds = %start, %bb5.i.i 
       85:  %iter.sroa.4.06.i.i = phi ptr [ %_24.i.i.i, %bb5.i.i ], [ %self1, %start ] 
       86:  %_24.i.i.i = getelementptr inbounds i8, ptr %iter.sroa.4.06.i.i, i64 1 
       87:  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %entry.i.i), !noalias !30 
       88:  store ptr %iter.sroa.4.06.i.i, ptr %entry.i.i, align 8, !noalias !30 
       89: ; call core::fmt::builders::DebugList::entry 
       90:  %_9.i.i = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h75b8b82a9fc5be91E(ptr noalias noundef nonnull align 8 dereferenceable(16) %_5.i, ptr noundef nonnull align 1 %entry.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @vtable.0) 
       91:  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %entry.i.i), !noalias !30 
       92:  %2 = icmp eq ptr %_24.i.i.i, %_11.i 
       93:  br i1 %2, label %"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h956362543c5fafecE.exit", label %bb5.i.i 
       94:  
       95: "_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h956362543c5fafecE.exit": ; preds = %bb5.i.i, %start 
       96: ; call core::fmt::builders::DebugList::finish 
       97:  %_0.i = call noundef zeroext i1 @_ZN4core3fmt8builders9DebugList6finish17h5240307549155e39E(ptr noalias noundef nonnull align 8 dereferenceable(16) %_5.i) 
       98:  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_5.i), !noalias !25 
       99:  ret i1 %_0.i 
      100: } 
      101:  
      102: ; Function Attrs: nonlazybind uwtable 
      103: define noundef i8 @example(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %a) unnamed_addr #0 personality ptr @rust_eh_personality { 
      104: start: 
      105:  %e.i = alloca [24 x i8], align 8 
      106:  %_5.sroa.5 = alloca [16 x i8], align 8 
      107:  %0 = getelementptr inbounds i8, ptr %a, i64 16 
      108:  %_2 = load i64, ptr %0, align 8, !noundef !3 
      109:  %1 = icmp eq i64 %_2, 32 
      110:  br i1 %1, label %bb2, label %bb1 
      111:  
      112: bb2: ; preds = %start 
      113:  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_5.sroa.5) 
      114:  %_5.sroa.0.0.copyload = load ptr, ptr %a, align 8 
      115:  %_5.sroa.5.0.a.sroa_idx = getelementptr inbounds i8, ptr %a, i64 8 
      116:  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_5.sroa.5, ptr noundef nonnull align 8 dereferenceable(16) %_5.sroa.5.0.a.sroa_idx, i64 16, i1 false) 
      117:  tail call void @llvm.experimental.noalias.scope.decl(metadata !33) 
      118:  tail call void @llvm.experimental.noalias.scope.decl(metadata !36) 
      119:  %_5.sroa.5.8.sroa_idx = getelementptr inbounds i8, ptr %_5.sroa.5, i64 8 
      120:  %_5.sroa.5.8._5.sroa.5.8._5.sroa.5.8._5.sroa.5.16._3.i = load i64, ptr %_5.sroa.5.8.sroa_idx, align 8 
      121:  %_2.not.i = icmp eq i64 %_5.sroa.5.8._5.sroa.5.8._5.sroa.5.8._5.sroa.5.16._3.i, 32 
      122:  br i1 %_2.not.i, label %bb6.i, label %bb2.i 
      123:  
      124: bb6.i: ; preds = %bb2 
      125:  %2 = icmp ne ptr %_5.sroa.0.0.copyload, null 
      126:  tail call void @llvm.assume(i1 %2) 
      127:  %_4.sroa.9.1.self.i.sroa_idx = getelementptr inbounds i8, ptr %_5.sroa.0.0.copyload, i64 15 
      128:  %_4.sroa.9.1.copyload = load i8, ptr %_4.sroa.9.1.self.i.sroa_idx, align 1, !noalias !36 
      129:  %_4.sroa.11.1.self.i.sroa_idx = getelementptr inbounds i8, ptr %_5.sroa.0.0.copyload, i64 24 
      130:  %_4.sroa.11.1.copyload = load i8, ptr %_4.sroa.11.1.self.i.sroa_idx, align 1, !noalias !36 
      131:  tail call void @llvm.experimental.noalias.scope.decl(metadata !38) 
      132:  tail call void @llvm.experimental.noalias.scope.decl(metadata !41) 
      133:  tail call void @llvm.experimental.noalias.scope.decl(metadata !44) 
      134:  tail call void @llvm.experimental.noalias.scope.decl(metadata !47) 
      135:  %_5.sroa.5.0._5.sroa.5.0._5.sroa.5.0._5.sroa.5.8._5.i.i.i.i1.i.i = load i64, ptr %_5.sroa.5, align 8, !alias.scope !50, !noalias !53 
      136:  %3 = icmp eq i64 %_5.sroa.5.0._5.sroa.5.0._5.sroa.5.0._5.sroa.5.8._5.i.i.i.i1.i.i, 0 
      137:  br i1 %3, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h96d9884df458f7e6E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i.i" 
      138:  
      139: "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i.i": ; preds = %bb6.i 
      140:  tail call void @__rust_dealloc(ptr noundef nonnull %_5.sroa.0.0.copyload, i64 noundef %_5.sroa.5.0._5.sroa.5.0._5.sroa.5.0._5.sroa.5.8._5.i.i.i.i1.i.i, i64 noundef 1) #8, !noalias !55 
      141:  br label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h96d9884df458f7e6E.exit" 
      142:  
      143: bb2.i: ; preds = %bb2 
      144:  %4 = lshr i64 %_5.sroa.5.8._5.sroa.5.8._5.sroa.5.8._5.sroa.5.16._3.i, 8 
      145:  %5 = trunc i64 %4 to i8 
      146:  %_5.sroa.5.0._5.sroa.5.0._5.sroa.5.0._5.sroa.5.8._4.sroa.9.8.copyload8 = load i8, ptr %_5.sroa.5, align 8, !alias.scope !56 
      147:  %_5.sroa.5.1.sroa_idx = getelementptr inbounds i8, ptr %_5.sroa.5, i64 1 
      148:  %_5.sroa.5.1._5.sroa.5.1._5.sroa.5.1._5.sroa.5.9._4.sroa.10.8.copyload9 = load i64, ptr %_5.sroa.5.1.sroa_idx, align 1, !alias.scope !56 
      149:  %6 = getelementptr inbounds i8, ptr %a, i64 18 
      150:  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_5.sroa.5) 
      151:  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %e.i), !noalias !57 
      152:  store ptr %_5.sroa.0.0.copyload, ptr %e.i, align 8, !noalias !61 
      153:  %_4.sroa.9.8.e.i.sroa_idx = getelementptr inbounds i8, ptr %e.i, i64 8 
      154:  store i8 %_5.sroa.5.0._5.sroa.5.0._5.sroa.5.0._5.sroa.5.8._4.sroa.9.8.copyload8, ptr %_4.sroa.9.8.e.i.sroa_idx, align 8, !noalias !61 
      155:  %_4.sroa.10.8.e.i.sroa_idx = getelementptr inbounds i8, ptr %e.i, i64 9 
      156:  store i64 %_5.sroa.5.1._5.sroa.5.1._5.sroa.5.1._5.sroa.5.9._4.sroa.10.8.copyload9, ptr %_4.sroa.10.8.e.i.sroa_idx, align 1, !noalias !61 
      157:  %_4.sroa.11.8.e.i.sroa_idx = getelementptr inbounds i8, ptr %e.i, i64 17 
      158:  store i8 %5, ptr %_4.sroa.11.8.e.i.sroa_idx, align 1, !noalias !61 
      159:  %_4.sroa.12.8.e.i.sroa_idx = getelementptr inbounds i8, ptr %e.i, i64 18 
      160:  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %_4.sroa.12.8.e.i.sroa_idx, ptr noundef nonnull align 2 dereferenceable(6) %6, i64 6, i1 false) 
      161: ; invoke core::result::unwrap_failed 
not:12                            !~~~~~~~~~~~~  error: no match expected
      162:  invoke void @_ZN4core6result13unwrap_failed17h434e67006fc3a961E(ptr noalias noundef nonnull readonly align 1 @alloc_00ae4b301f7fab8ac9617c03fcbd7274, i64 noundef 43, ptr noundef nonnull align 1 %e.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @vtable.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @alloc_ed8bfa62ecc2b9e2af0bced4759850cb) #9 
      163:  to label %unreachable.i unwind label %cleanup.i, !noalias !57 
      164:  
      165: cleanup.i: ; preds = %bb2.i 
      166:  %7 = landingpad { ptr, i32 } 
      167:  cleanup 
      168:  call void @llvm.experimental.noalias.scope.decl(metadata !62) 
      169:  call void @llvm.experimental.noalias.scope.decl(metadata !65), !noalias !57 
      170:  call void @llvm.experimental.noalias.scope.decl(metadata !68), !noalias !57 
      171:  call void @llvm.experimental.noalias.scope.decl(metadata !71), !noalias !57 
      172:  %_5.i.i.i.i1.i = load i64, ptr %_4.sroa.9.8.e.i.sroa_idx, align 8, !alias.scope !74, !noalias !77 
      173:  %8 = icmp eq i64 %_5.i.i.i.i1.i, 0 
      174:  br i1 %8, label %bb5.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i" 
      175:  
      176: "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i": ; preds = %cleanup.i 
      177:  %self3.i.i.i.i3.i = load ptr, ptr %e.i, align 8, !alias.scope !74, !noalias !77, !nonnull !3, !noundef !3 
      178:  call void @__rust_dealloc(ptr noundef nonnull %self3.i.i.i.i3.i, i64 noundef %_5.i.i.i.i1.i, i64 noundef 1) #8, !noalias !79 
      179:  br label %bb5.i 
      180:  
      181: unreachable.i: ; preds = %bb2.i 
      182:  unreachable 
      183:  
      184: bb5.i: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i", %cleanup.i 
      185:  resume { ptr, i32 } %7 
      186:  
      187: "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h96d9884df458f7e6E.exit": ; preds = %bb6.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i.i" 
      188:  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_5.sroa.5) 
      189:  %9 = add i8 %_4.sroa.11.1.copyload, %_4.sroa.9.1.copyload 
      190:  br label %bb4 
      191:  
      192: bb1: ; preds = %start 
      193:  tail call void @llvm.experimental.noalias.scope.decl(metadata !80) 
      194:  tail call void @llvm.experimental.noalias.scope.decl(metadata !83) 
      195:  tail call void @llvm.experimental.noalias.scope.decl(metadata !86) 
      196:  tail call void @llvm.experimental.noalias.scope.decl(metadata !89) 
      197:  %10 = getelementptr inbounds i8, ptr %a, i64 8 
      198:  %_5.i.i.i.i1.i2 = load i64, ptr %10, align 8, !alias.scope !92, !noalias !95 
      199:  %11 = icmp eq i64 %_5.i.i.i.i1.i2, 0 
      200:  br i1 %11, label %bb4, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i3" 
      201:  
      202: "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i3": ; preds = %bb1 
      203:  %self3.i.i.i.i3.i4 = load ptr, ptr %a, align 8, !alias.scope !92, !noalias !95, !nonnull !3, !noundef !3 
      204:  tail call void @__rust_dealloc(ptr noundef nonnull %self3.i.i.i.i3.i4, i64 noundef %_5.i.i.i.i1.i2, i64 noundef 1) #8, !noalias !97 
      205:  br label %bb4 
      206:  
      207: bb4: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i3", %bb1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h96d9884df458f7e6E.exit" 
      208:  %_0.sroa.0.0 = phi i8 [ %9, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h96d9884df458f7e6E.exit" ], [ 0, %bb1 ], [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hfa1166012eef5c67E.exit.i.i.i2.i3" ] 
      209:  ret i8 %_0.sroa.0.0 
      210: } 
      212: ; core::fmt::Formatter::debug_list 
      212: ; core::fmt::Formatter::debug_list 
      213: ; Function Attrs: nonlazybind uwtable 
      214: declare void @_ZN4core3fmt9Formatter10debug_list17hde3d95a55a067d9dE(ptr dead_on_unwind noalias nocapture noundef writable sret([16 x i8]) align 8 dereferenceable(16), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #0 
      216: ; core::fmt::builders::DebugList::finish 
      216: ; core::fmt::builders::DebugList::finish 
      217: ; Function Attrs: nonlazybind uwtable 
      218: declare noundef zeroext i1 @_ZN4core3fmt8builders9DebugList6finish17h5240307549155e39E(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #0 
      219:  
      220: ; core::fmt::num::imp::<impl core::fmt::Display for u8>::fmt 
      221: ; Function Attrs: nonlazybind uwtable 
      222: declare noundef zeroext i1 @"_ZN4core3fmt3num3imp51_$LT$impl$u20$core..fmt..Display$u20$for$u20$u8$GT$3fmt17h5925c53d32a1d1b0E"(ptr noalias noundef readonly align 1 dereferenceable(1), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #0 
      223:  
      224: ; core::fmt::num::<impl core::fmt::UpperHex for u8>::fmt 
      225: ; Function Attrs: nonlazybind uwtable 
      226: declare noundef zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$u8$GT$3fmt17h749693142f184537E"(ptr noalias noundef readonly align 1 dereferenceable(1), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #0 
      227:  
      228: ; core::fmt::num::<impl core::fmt::LowerHex for u8>::fmt 
      229: ; Function Attrs: nonlazybind uwtable 
      230: declare noundef zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$u8$GT$3fmt17h6a984048f9983b37E"(ptr noalias noundef readonly align 1 dereferenceable(1), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #0 
      231:  
      232: ; Function Attrs: nounwind nonlazybind uwtable 
      233: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef range(i32 1, 17), i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 
      235: ; core::fmt::builders::DebugList::entry 
      235: ; core::fmt::builders::DebugList::entry 
      236: ; Function Attrs: nonlazybind uwtable 
      237: declare noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h75b8b82a9fc5be91E(ptr noalias noundef align 8 dereferenceable(16), ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(32)) unnamed_addr #0 
      238:  
      239: ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) 
      240: declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 
      242: ; core::result::unwrap_failed 
      242: ; core::result::unwrap_failed 
      243: ; Function Attrs: cold noinline noreturn nonlazybind uwtable 
      244: declare void @_ZN4core6result13unwrap_failed17h434e67006fc3a961E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #3 
      245:  
      246: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      247: declare void @llvm.assume(i1 noundef) #4 
      248:  
      249: ; Function Attrs: nounwind nonlazybind allockind("free") uwtable 
      250: declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #5 
      251:  
      252: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      253: declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 
      254:  
      255: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      256: declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 
      257:  
      258: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      259: declare void @llvm.experimental.noalias.scope.decl(metadata) #7 
      260:  
      261: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
        .
        .
>>>>>>
------------------------------------------

@bors

bors commented Sep 23, 2024

Copy link
Copy Markdown
Collaborator

💔 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 Sep 23, 2024
@dianqk

dianqk commented Sep 23, 2024

Copy link
Copy Markdown
Member Author

@bors retry

@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 Sep 23, 2024
@bors

bors commented Sep 23, 2024

Copy link
Copy Markdown
Collaborator

⌛ Testing commit e3a9eaf with merge a772336...

@bors

bors commented Sep 23, 2024

Copy link
Copy Markdown
Collaborator

☀️ Test successful - checks-actions
Approved by: cjgillot
Pushing a772336 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 23, 2024
@bors bors merged commit a772336 into rust-lang:master Sep 23, 2024
@rustbot rustbot added this to the 1.83.0 milestone Sep 23, 2024
@dianqk dianqk deleted the early_otherwise_branch_scalar branch September 23, 2024 10:56
@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (a772336): comparison URL.

Overall result: ❌✅ regressions and improvements - no action needed

@rustbot label: -perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.7% [0.7%, 0.7%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.5% [-0.5%, -0.5%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.1% [-0.5%, 0.7%] 2

Max RSS (memory usage)

Results (primary 5.0%, secondary 3.7%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
5.0% [3.9%, 6.8%] 3
Regressions ❌
(secondary)
3.7% [0.8%, 6.5%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 5.0% [3.9%, 6.8%] 3

Cycles

Results (primary -0.5%, secondary -8.0%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.5% [-0.5%, -0.4%] 3
Improvements ✅
(secondary)
-8.0% [-8.0%, -8.0%] 1
All ❌✅ (primary) -0.5% [-0.5%, -0.4%] 3

Binary size

Results (primary 0.2%, secondary 0.0%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.3% [0.0%, 0.8%] 3
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 1
Improvements ✅
(primary)
-0.0% [-0.1%, -0.0%] 2
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.2% [-0.1%, 0.8%] 5

Bootstrap: 768.601s -> 767.14s (-0.19%)
Artifact size: 341.54 MiB -> 341.53 MiB (-0.00%)

jieyouxu added a commit to jieyouxu/rust that referenced this pull request Sep 24, 2024
…h_scalar, r=cjgillot"

This reverts commit a772336, reversing
changes made to 702987f.

It seems Apply EarlyOtherwiseBranch to scalar value rust-lang#129047 may have
lead to several nightly regressions:

- rust-lang#130769
- rust-lang#130774
- rust-lang#130771

And since this is a mir-opt ICE that seems to quite easy to trigger with
real-world crates being affected, let's revert for now and reland the
mir-opt later.
jieyouxu added a commit to jieyouxu/rust that referenced this pull request Sep 24, 2024
…h_scalar, r=cjgillot"

This reverts commit a772336, reversing
changes made to 702987f.

It seems Apply EarlyOtherwiseBranch to scalar value rust-lang#129047 may have
lead to several nightly regressions:

- rust-lang#130769
- rust-lang#130774
- rust-lang#130771

And since this is a mir-opt ICE that seems to quite easy to trigger with
real-world crates being affected, let's revert for now and reland the
mir-opt later.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 24, 2024
Revert "Apply EarlyOtherwiseBranch to scalar value rust-lang#129047"

This reverts PR rust-lang#129047, commit a772336, reversing changes made to 702987f.

cc `@DianQK` and `@cjgillot` as the PR author and reviewer of rust-lang#129047 respectively.

It seems [Apply EarlyOtherwiseBranch to scalar value rust-lang#129047](rust-lang#129047) may have lead to several nightly regressions:

- rust-lang#130769
- rust-lang#130774
- rust-lang#130771

Example test that would ICE with changes in rust-lang#129047 (this test is included in this PR):

```rs
//@ compile-flags: -C opt-level=3
//@ check-pass

use std::task::Poll;

pub fn poll(val: Poll<Result<Option<Vec<u8>>, u8>>) {
    match val {
        Poll::Ready(Ok(Some(_trailers))) => {}
        Poll::Ready(Err(_err)) => {}
        Poll::Ready(Ok(None)) => {}
        Poll::Pending => {}
    }
}
```

Since this is a mir-opt ICE that seems to quite easy to trigger with real-world crates being affected, let's revert for now and reland the mir-opt after these are fixed.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 24, 2024
Revert "Apply EarlyOtherwiseBranch to scalar value rust-lang#129047"

This reverts PR rust-lang#129047, commit a772336, reversing changes made to 702987f.

cc `@DianQK` and `@cjgillot` as the PR author and reviewer of rust-lang#129047 respectively.

It seems [Apply EarlyOtherwiseBranch to scalar value rust-lang#129047](rust-lang#129047) may have lead to several nightly regressions:

- rust-lang#130769
- rust-lang#130774
- rust-lang#130771

Example test that would ICE with changes in rust-lang#129047 (this test is included in this PR):

```rs
//@ compile-flags: -C opt-level=3
//@ check-pass

use std::task::Poll;

pub fn poll(val: Poll<Result<Option<Vec<u8>>, u8>>) {
    match val {
        Poll::Ready(Ok(Some(_trailers))) => {}
        Poll::Ready(Err(_err)) => {}
        Poll::Ready(Ok(None)) => {}
        Poll::Pending => {}
    }
}
```

Since this is a mir-opt ICE that seems to quite easy to trigger with real-world crates being affected, let's revert for now and reland the mir-opt after these are fixed.
dianqk added a commit to dianqk/rust that referenced this pull request Sep 24, 2024
github-actions Bot pushed a commit to rust-lang/miri that referenced this pull request Sep 25, 2024
Revert "Apply EarlyOtherwiseBranch to scalar value #129047"

This reverts PR #129047, commit a772336fb3fbd1fe4493077fcfe04e0221296a99, reversing changes made to 702987f75b74f789ba227ee04a3d7bb1680c2309.

cc `@DianQK` and `@cjgillot` as the PR author and reviewer of #129047 respectively.

It seems [Apply EarlyOtherwiseBranch to scalar value #129047](rust-lang/rust#129047) may have lead to several nightly regressions:

- rust-lang/rust#130769
- rust-lang/rust#130774
- rust-lang/rust#130771

Example test that would ICE with changes in #129047 (this test is included in this PR):

```rs
//@ compile-flags: -C opt-level=3
//@ check-pass

use std::task::Poll;

pub fn poll(val: Poll<Result<Option<Vec<u8>>, u8>>) {
    match val {
        Poll::Ready(Ok(Some(_trailers))) => {}
        Poll::Ready(Err(_err)) => {}
        Poll::Ready(Ok(None)) => {}
        Poll::Pending => {}
    }
}
```

Since this is a mir-opt ICE that seems to quite easy to trigger with real-world crates being affected, let's revert for now and reland the mir-opt after these are fixed.
dianqk added a commit to dianqk/rust that referenced this pull request Oct 30, 2024
dianqk added a commit to dianqk/rust that referenced this pull request Nov 27, 2024
dianqk added a commit to dianqk/rust that referenced this pull request Dec 18, 2024
DiuDiu777 pushed a commit to DiuDiu777/rust that referenced this pull request Dec 19, 2024
Kobzol pushed a commit to Kobzol/portable-simd that referenced this pull request Feb 3, 2026
Revert "Apply EarlyOtherwiseBranch to scalar value #129047"

This reverts PR #129047, commit a772336fb3fbd1fe4493077fcfe04e0221296a99, reversing changes made to 702987f75b74f789ba227ee04a3d7bb1680c2309.

cc `@DianQK` and `@cjgillot` as the PR author and reviewer of #129047 respectively.

It seems [Apply EarlyOtherwiseBranch to scalar value #129047](rust-lang/rust#129047) may have lead to several nightly regressions:

- rust-lang/rust#130769
- rust-lang/rust#130774
- rust-lang/rust#130771

Example test that would ICE with changes in #129047 (this test is included in this PR):

```rs
//@ compile-flags: -C opt-level=3
//@ check-pass

use std::task::Poll;

pub fn poll(val: Poll<Result<Option<Vec<u8>>, u8>>) {
    match val {
        Poll::Ready(Ok(Some(_trailers))) => {}
        Poll::Ready(Err(_err)) => {}
        Poll::Ready(Ok(None)) => {}
        Poll::Pending => {}
    }
}
```

Since this is a mir-opt ICE that seems to quite easy to trigger with real-world crates being affected, let's revert for now and reland the mir-opt after these are fixed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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.

6 participants