mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
a2ec1d8ec2
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 |
||
---|---|---|
.. | ||
AbstractCallSite.h | ||
Argument.h | ||
AssemblyAnnotationWriter.h | ||
Assumptions.h | ||
Attributes.h | ||
Attributes.td | ||
AutoUpgrade.h | ||
BasicBlock.h | ||
CallingConv.h | ||
CFG.h | ||
CMakeLists.txt | ||
Comdat.h | ||
Constant.h | ||
ConstantFolder.h | ||
ConstantRange.h | ||
Constants.h | ||
ConstrainedOps.def | ||
DataLayout.h | ||
DebugInfo.h | ||
DebugInfoFlags.def | ||
DebugInfoMetadata.h | ||
DebugLoc.h | ||
DerivedTypes.h | ||
DerivedUser.h | ||
DiagnosticHandler.h | ||
DiagnosticInfo.h | ||
DiagnosticPrinter.h | ||
DIBuilder.h | ||
Dominators.h | ||
FixedMetadataKinds.def | ||
FixedPointBuilder.h | ||
FPEnv.h | ||
Function.h | ||
GetElementPtrTypeIterator.h | ||
GlobalAlias.h | ||
GlobalIFunc.h | ||
GlobalIndirectSymbol.h | ||
GlobalObject.h | ||
GlobalValue.h | ||
GlobalVariable.h | ||
GVMaterializer.h | ||
InlineAsm.h | ||
InstIterator.h | ||
InstrTypes.h | ||
Instruction.def | ||
Instruction.h | ||
Instructions.h | ||
InstVisitor.h | ||
IntrinsicInst.h | ||
Intrinsics.h | ||
Intrinsics.td | ||
IntrinsicsAArch64.td | ||
IntrinsicsAMDGPU.td | ||
IntrinsicsARM.td | ||
IntrinsicsBPF.td | ||
IntrinsicsHexagon.td | ||
IntrinsicsHexagonDep.td | ||
IntrinsicsMips.td | ||
IntrinsicsNVVM.td | ||
IntrinsicsPowerPC.td | ||
IntrinsicsRISCV.td | ||
IntrinsicsSystemZ.td | ||
IntrinsicsVE.td | ||
IntrinsicsVEVL.gen.td | ||
IntrinsicsWebAssembly.td | ||
IntrinsicsX86.td | ||
IntrinsicsXCore.td | ||
IRBuilder.h | ||
IRBuilderFolder.h | ||
IRPrintingPasses.h | ||
LegacyPassManager.h | ||
LegacyPassManagers.h | ||
LegacyPassNameParser.h | ||
LLVMContext.h | ||
LLVMRemarkStreamer.h | ||
Mangler.h | ||
MatrixBuilder.h | ||
MDBuilder.h | ||
Metadata.def | ||
Metadata.h | ||
Module.h | ||
ModuleSlotTracker.h | ||
ModuleSummaryIndex.h | ||
ModuleSummaryIndexYAML.h | ||
NoFolder.h | ||
OperandTraits.h | ||
Operator.h | ||
OptBisect.h | ||
PassInstrumentation.h | ||
PassManager.h | ||
PassManagerImpl.h | ||
PassManagerInternal.h | ||
PassTimingInfo.h | ||
PatternMatch.h | ||
PredIteratorCache.h | ||
PrintPasses.h | ||
ProfileSummary.h | ||
PseudoProbe.h | ||
RuntimeLibcalls.def | ||
SafepointIRVerifier.h | ||
Statepoint.h | ||
StructuralHash.h | ||
SymbolTableListTraits.h | ||
TrackingMDRef.h | ||
Type.h | ||
TypeFinder.h | ||
Use.h | ||
UseListOrder.h | ||
User.h | ||
Value.def | ||
Value.h | ||
ValueHandle.h | ||
ValueMap.h | ||
ValueSymbolTable.h | ||
Verifier.h | ||
VPIntrinsics.def |