Index: CodeGen/MachineBlockPlacement.cpp =================================================================== --- CodeGen/MachineBlockPlacement.cpp +++ CodeGen/MachineBlockPlacement.cpp @@ -41,6 +41,7 @@ #include "llvm/CodeGen/MachineLoopInfo.h" #include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/MachinePostDominators.h" +#include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/TailDuplicator.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/CommandLine.h" @@ -2651,8 +2652,9 @@ bool EnableTailMerge = !MF.getTarget().requiresStructuredCFG() && PassConfig->getEnableTailMerge() && BranchFoldPlacement; + bool isPreRegAlloc = MF.getRegInfo().isSSA(); // No tail merging opportunities if the block number is less than four. - if (MF.size() > 3 && EnableTailMerge) { + if (MF.size() > 3 && EnableTailMerge && !isPreRegAlloc) { unsigned TailMergeSize = TailDupPlacementThreshold + 1; BranchFolder BF(/*EnableTailMerge=*/true, /*CommonHoist=*/false, *MBFI, *MBPI, TailMergeSize);