-
Notifications
You must be signed in to change notification settings - Fork 5
pre-commit: PR128296 #2154
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
base: main
Are you sure you want to change the base?
pre-commit: PR128296 #2154
Conversation
runner: ariselab-64c-v2 770 files changed, 2202011 insertions(+), 2233944 deletions(-)
0 3 bench/abseil-cpp/optimized/node_hash_map_test.ll |
Here's a summary of the major changes in the LLVM IR diffs:
These changes collectively suggest improvements in optimization passes, particularly in areas like redundant null checks elimination, more efficient struct handling, refined alias analysis, and updated function attributes for better code generation and safety guarantees. The removal of model: qwen-plus-latest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minor regressions. A common improvement is additional call slot optimization in hashbrown.
@@ -146,14 +146,14 @@ define hidden void @_ZNK8rawspeed10FileReader8readFileEv(ptr dead_on_unwind noal | |||
br label %.body | |||
|
|||
"_ZNSt10unique_ptrI8_IO_FILEZNK8rawspeed10FileReader8readFileEvE3$_0ED2Ev.exit": ; preds = %28 | |||
%45 = load ptr, ptr %24, align 8, !tbaa !15, !nonnull !21, !noundef !21 | |||
%45 = load ptr, ptr %24, align 8, !tbaa !15 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lost metadata.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is caused when the assume is removed the load have no user and is removed before inline is done, but after inline there is other uses of the pointer.
before this PR as the load was ephemeral the fold was done first after inline when it was not ephemeral any more.
is it possible to only run this fold after inline is done?
store i64 %10, ptr %14, align 8, !alias.scope !770 | ||
%15 = getelementptr inbounds nuw i8, ptr %3, i64 40 | ||
store i64 %12, ptr %15, align 8, !alias.scope !770 | ||
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %3, i64 48, i1 false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regression
@@ -29786,7 +29786,7 @@ _ZNK10MainWindow3GLAEv.exit.thread: ; preds = %1, %_ZNK10MainWindo | |||
br i1 %.not.i11, label %_ZNK10MainWindow3GLAEv.exit13, label %_ZNK10MainWindow3GLAEv.exit13.thread | |||
|
|||
_ZNK10MainWindow3GLAEv.exit13: ; preds = %8 | |||
%12 = load ptr, ptr inttoptr (i64 1464 to ptr), align 8, !nonnull !61, !noundef !61 | |||
%12 = load ptr, ptr inttoptr (i64 1464 to ptr), align 8 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lost metadata
%8 = getelementptr inbounds nuw i8, ptr %4, i64 16 | ||
%9 = load i64, ptr %8, align 8, !noalias !330 | ||
%5 = load ptr, ptr %4, align 8, !noalias !330, !noundef !5 | ||
%6 = icmp eq ptr %5, null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regression
call void %674(ptr noundef nonnull %675, ptr noundef nonnull %525) #16 | ||
%673 = getelementptr inbounds nuw i8, ptr %525, i64 56 | ||
%674 = getelementptr inbounds nuw i8, ptr %525, i64 96 | ||
%675 = load ptr, ptr %674, align 8, !tbaa !169 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lost metadata
br label %smart_str_free_ex.exit | ||
|
||
smart_str_free_ex.exit: ; preds = %37, %41, %46, %36 | ||
%48 = phi i1 [ true, %36 ], [ %47, %46 ], [ true, %41 ], [ true, %37 ] | ||
call void @llvm.assume(i1 %48) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Side note: Should probably avoid sinking assumes if it makes the assume condition a phi node...
@@ -35,13 +35,15 @@ define void @"_ZN76_$LT$hashbrown..raw..RawTable$LT$T$C$A$GT$$u20$as$u20$core..c | |||
call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %3) | |||
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) | |||
call void @_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h12b3d16eb02b1eeaE(ptr nonnull sret({ ptr, [3 x i64] }) align 8 %4, ptr nonnull align 1 %3, i64 48, i64 16, i64 %12, i1 zeroext true) | |||
%13 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 | |||
%13 = load ptr, ptr %4, align 8, !noundef !3 | |||
%.not.i = icmp eq ptr %13, null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regression
Link: llvm/llvm-project#128296
Requested by: @dtcxzyw