[PATCH] D140166: [IR] return nullptr in Instruction::getInsertionPointAfterDef for CallBrInst
Nick Desaulniers via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 15 13:42:13 PST 2022
nickdesaulniers created this revision.
Herald added a subscriber: hiraditya.
Herald added a project: All.
nickdesaulniers requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
A recommended in
https://reviews.llvm.org/D135997#3991427.
I will fold this in to D135997 <https://reviews.llvm.org/D135997> if it is accepted in code review on phab.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D140166
Files:
llvm/lib/IR/Instruction.cpp
llvm/test/Transforms/Coroutines/coro-debug.ll
llvm/test/Transforms/InstCombine/freeze.ll
llvm/test/Transforms/Reassociate/callbr.ll
Index: llvm/test/Transforms/Reassociate/callbr.ll
===================================================================
--- llvm/test/Transforms/Reassociate/callbr.ll
+++ llvm/test/Transforms/Reassociate/callbr.ll
@@ -6,8 +6,10 @@
; CHECK-NEXT: [[RES:%.*]] = callbr i32 asm "", "=r,!i"()
; CHECK-NEXT: to label [[NORMAL:%.*]] [label %abnormal]
; CHECK: normal:
-; CHECK-NEXT: [[FACTOR:%.*]] = mul i32 [[RES]], -2
-; CHECK-NEXT: [[SUB2:%.*]] = add i32 [[FACTOR]], 5
+; CHECK-NEXT: [[RES_NEG:%.*]] = sub i32 0, [[RES]]
+; CHECK-NEXT: [[SUB1:%.*]] = add i32 [[RES_NEG]], 5
+; CHECK-NEXT: [[RES_NEG1:%.*]] = sub i32 0, [[RES]]
+; CHECK-NEXT: [[SUB2:%.*]] = add i32 [[SUB1]], [[RES_NEG1]]
; CHECK-NEXT: ret i32 [[SUB2]]
; CHECK: abnormal:
; CHECK-NEXT: ret i32 0
Index: llvm/test/Transforms/InstCombine/freeze.ll
===================================================================
--- llvm/test/Transforms/InstCombine/freeze.ll
+++ llvm/test/Transforms/InstCombine/freeze.ll
@@ -453,9 +453,9 @@
; CHECK-NEXT: to label [[CALLBR_CONT:%.*]] []
; CHECK: callbr.cont:
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ [[X]], [[ENTRY:%.*]] ], [ 0, [[CALLBR_CONT]] ]
+; CHECK-NEXT: call void @use_i32(i32 [[X]])
; CHECK-NEXT: [[FR:%.*]] = freeze i32 [[X]]
; CHECK-NEXT: call void @use_i32(i32 [[FR]])
-; CHECK-NEXT: call void @use_i32(i32 [[FR]])
; CHECK-NEXT: call void @use_i32(i32 [[PHI]])
; CHECK-NEXT: br label [[CALLBR_CONT]]
;
Index: llvm/test/Transforms/Coroutines/coro-debug.ll
===================================================================
--- llvm/test/Transforms/Coroutines/coro-debug.ll
+++ llvm/test/Transforms/Coroutines/coro-debug.ll
@@ -193,6 +193,8 @@
; CHECK: %[[CALLBR_RES:.+]] = callbr i32 asm
; CHECK-NEXT: to label %[[DEFAULT_DEST:.+]] [label
; CHECK: [[DEFAULT_DEST]]:
+; CHECK-NEXT: %1 = load i8*, i8** %coro_hdl.reload.addr
+; CHECK-NEXT: call void @free(i8* %1)
; CHECK-NEXT: call void @llvm.dbg.declare(metadata i32 %[[CALLBR_RES]]
; CHECK: define internal fastcc void @f.destroy(%f.Frame* noalias nonnull align 8 dereferenceable(40) %FramePtr) #0 personality i32 0 !dbg ![[DESTROY:[0-9]+]]
; CHECK: define internal fastcc void @f.cleanup(%f.Frame* noalias nonnull align 8 dereferenceable(40) %FramePtr) #0 personality i32 0 !dbg ![[CLEANUP:[0-9]+]]
Index: llvm/lib/IR/Instruction.cpp
===================================================================
--- llvm/lib/IR/Instruction.cpp
+++ llvm/lib/IR/Instruction.cpp
@@ -138,8 +138,7 @@
InsertBB = II->getNormalDest();
InsertPt = InsertBB->getFirstInsertionPt();
} else if (auto *CB = dyn_cast<CallBrInst>(this)) {
- InsertBB = CB->getDefaultDest();
- InsertPt = InsertBB->getFirstInsertionPt();
+ return nullptr;
} else {
assert(!isTerminator() && "Only invoke/callbr terminators return value");
InsertBB = getParent();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D140166.483324.patch
Type: text/x-patch
Size: 2905 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221215/9db14e41/attachment.bin>
More information about the llvm-commits
mailing list