[PATCH] D131863: [CodeGen] Fix restore blocks' BasicBlock information in branch relaxation
Piggy via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 22 20:55:22 PST 2022
piggynl updated this revision to Diff 477377.
piggynl added a comment.
Removes unnecessary `#include`.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131863/new/
https://reviews.llvm.org/D131863
Files:
llvm/lib/CodeGen/BranchRelaxation.cpp
llvm/test/CodeGen/RISCV/branch-relaxation.ll
Index: llvm/test/CodeGen/RISCV/branch-relaxation.ll
===================================================================
--- llvm/test/CodeGen/RISCV/branch-relaxation.ll
+++ llvm/test/CodeGen/RISCV/branch-relaxation.ll
@@ -2892,14 +2892,14 @@
; CHECK-RV32-NEXT: .zero 1048576
; CHECK-RV32-NEXT: #NO_APP
; CHECK-RV32-NEXT: j .LBB6_4
-; CHECK-RV32-NEXT: .LBB6_8: # %dest_3
+; CHECK-RV32-NEXT: .LBB6_8: # %dest_1
; CHECK-RV32-NEXT: lw s11, 0(sp)
; CHECK-RV32-NEXT: .LBB6_4: # %dest_1
; CHECK-RV32-NEXT: #APP
; CHECK-RV32-NEXT: # dest 1
; CHECK-RV32-NEXT: #NO_APP
; CHECK-RV32-NEXT: j .LBB6_5
-; CHECK-RV32-NEXT: .LBB6_10: # %dest_3
+; CHECK-RV32-NEXT: .LBB6_10: # %dest_2
; CHECK-RV32-NEXT: lw s11, 0(sp)
; CHECK-RV32-NEXT: .LBB6_5: # %dest_2
; CHECK-RV32-NEXT: #APP
Index: llvm/lib/CodeGen/BranchRelaxation.cpp
===================================================================
--- llvm/lib/CodeGen/BranchRelaxation.cpp
+++ llvm/lib/CodeGen/BranchRelaxation.cpp
@@ -88,7 +88,9 @@
bool relaxBranchInstructions();
void scanFunction();
- MachineBasicBlock *createNewBlockAfter(MachineBasicBlock &BB);
+ MachineBasicBlock *createNewBlockAfter(MachineBasicBlock &OrigMBB);
+ MachineBasicBlock *createNewBlockAfter(MachineBasicBlock &OrigMBB,
+ const BasicBlock *BB);
MachineBasicBlock *splitBlockBeforeInstr(MachineInstr &MI,
MachineBasicBlock *DestBB);
@@ -202,12 +204,20 @@
}
}
-/// Insert a new empty basic block and insert it after \BB
-MachineBasicBlock *BranchRelaxation::createNewBlockAfter(MachineBasicBlock &BB) {
+/// Insert a new empty MachineBasicBlock and insert it after \p OrigMBB
+MachineBasicBlock *
+BranchRelaxation::createNewBlockAfter(MachineBasicBlock &OrigBB) {
+ return createNewBlockAfter(OrigBB, OrigBB.getBasicBlock());
+}
+
+/// Insert a new empty MachineBasicBlock with \p BB as its BasicBlock
+/// and insert it after \p OrigMBB
+MachineBasicBlock *
+BranchRelaxation::createNewBlockAfter(MachineBasicBlock &OrigMBB,
+ const BasicBlock *BB) {
// Create a new MBB for the code after the OrigBB.
- MachineBasicBlock *NewBB =
- MF->CreateMachineBasicBlock(BB.getBasicBlock());
- MF->insert(++BB.getIterator(), NewBB);
+ MachineBasicBlock *NewBB = MF->CreateMachineBasicBlock(BB);
+ MF->insert(++OrigMBB.getIterator(), NewBB);
// Insert an entry into BlockInfo to align it properly with the block numbers.
BlockInfo.insert(BlockInfo.begin() + NewBB->getNumber(), BasicBlockInfo());
@@ -482,7 +492,8 @@
// Create the optional restore block and, initially, place it at the end of
// function. That block will be placed later if it's used; otherwise, it will
// be erased.
- MachineBasicBlock *RestoreBB = createNewBlockAfter(MF->back());
+ MachineBasicBlock *RestoreBB = createNewBlockAfter(MF->back(),
+ DestBB->getBasicBlock());
TII->insertIndirectBranch(*BranchBB, *DestBB, *RestoreBB, DL,
DestOffset - SrcOffset, RS.get());
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131863.477377.patch
Type: text/x-patch
Size: 3154 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221123/d1d1815a/attachment.bin>
More information about the llvm-commits
mailing list