[PATCH] D159123: [CodeGen] Properly update insertion point of the builder
Danila Malyutin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 29 10:58:31 PDT 2023
danilaml created this revision.
Herald added a subscriber: hiraditya.
Herald added a project: All.
danilaml requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Other code assumes that it can use passed Builder parameter to
generate new instructions but this code path created its own IRBuilder
instance, leaving the passed builder with an old insertion point.
Fixes https://github.com/llvm/llvm-project/issues/65044
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D159123
Files:
llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp
llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
Index: llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
===================================================================
--- llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
+++ llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
@@ -1,4 +1,4 @@
-; XFAIL: *
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
; RUN: llc %s --mattr=+complxnum -o - | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-ni:1-p2:32:8:8:32-ni:2"
@@ -6,6 +6,10 @@
; Check that deinterleaving pass doesn't generate broken IR
define void @check_deinterleave_crash() #0 {
+; CHECK-LABEL: check_deinterleave_crash:
+; CHECK: // %bb.0: // %bb
+; CHECK-NEXT: mov x8, xzr
+; CHECK-NEXT: str wzr, [x8]
bb:
br label %bb173
Index: llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp
===================================================================
--- llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp
+++ llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp
@@ -1952,6 +1952,8 @@
ReplacementNode =
IRB.CreateIntrinsic(Intrinsic::experimental_vector_interleave2, NewTy,
{Node->Real, Node->Imag});
+ if (Builder.GetInsertPoint()->comesBefore(InsertPoint))
+ Builder.SetInsertPoint(InsertPoint);
} else {
ReplacementNode =
Builder.CreateIntrinsic(Intrinsic::experimental_vector_interleave2,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D159123.554428.patch
Type: text/x-patch
Size: 1467 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230829/ea3bfaad/attachment.bin>
More information about the llvm-commits
mailing list