aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
diff options
context:
space:
mode:
authorWhitney Tsang <whitneyt@ca.ibm.com>2020-12-18 17:35:46 +0000
committerWhitney Tsang <whitneyt@ca.ibm.com>2020-12-18 17:37:17 +0000
commit2a814cd9e1e8493c6606712d55f9ffdb58396481 (patch)
tree2b34e1179470bffbda8be255d091b7e5e9bd27a8 /llvm/lib/Bitcode/Reader/MetadataLoader.cpp
parentce94e7d867abf5c08f5b0008f2d31b3f169b815d (diff)
downloadllvm-2a814cd9e1e8493c6606712d55f9ffdb58396481.zip
llvm-2a814cd9e1e8493c6606712d55f9ffdb58396481.tar.gz
llvm-2a814cd9e1e8493c6606712d55f9ffdb58396481.tar.bz2
Ensure SplitEdge to return the new block between the two given blocks
This PR implements the function splitBasicBlockBefore to address an issue that occurred during SplitEdge(BB, Succ, ...), inside splitBlockBefore. The issue occurs in SplitEdge when the Succ has a single predecessor and the edge between the BB and Succ is not critical. This produces the result ‘BB->Succ->New’. The new function splitBasicBlockBefore was added to splitBlockBefore to handle the issue and now produces the correct result ‘BB->New->Succ’. Below is an example of splitting the block bb1 at its first instruction. /// Original IR bb0: br bb1 bb1: %0 = mul i32 1, 2 br bb2 bb2: /// IR after splitEdge(bb0, bb1) using splitBasicBlock bb0: br bb1 bb1: br bb1.split bb1.split: %0 = mul i32 1, 2 br bb2 bb2: /// IR after splitEdge(bb0, bb1) using splitBasicBlockBefore bb0: br bb1.split bb1.split br bb1 bb1: %0 = mul i32 1, 2 br bb2 bb2: Differential Revision: https://reviews.llvm.org/D92200
Diffstat (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp')
0 files changed, 0 insertions, 0 deletions