Revert "Codegen: Don't tail-duplicate blocks with un-analyzable fallthrough."

This reverts commit r278288.

r278287 broke the clang-cmake-thumbv7-a15-full-sh bot.
Revert this so we can get to r278287.

llvm-svn: 278620
This commit is contained in:
Diana Picus 2016-08-14 02:10:12 +00:00
parent f2e0ffd223
commit 2f3bd961bd
2 changed files with 0 additions and 44 deletions

View File

@ -525,16 +525,6 @@ bool TailDuplicator::shouldTailDuplicate(const MachineFunction &MF,
else
MaxDuplicateCount = TailDuplicateSize;
// If the block to be duplicated ends in an unanalyzable fallthrough, don't
// duplicate it.
// A similar check is necessary in MachineBlockPlacement to make sure pairs of
// blocks with unanalyzable fallthrough get layed out contiguously.
MachineBasicBlock *PredTBB = nullptr, *PredFBB = nullptr;
SmallVector<MachineOperand, 4> PredCond;
if (TII->analyzeBranch(TailBB, PredTBB, PredFBB, PredCond, true)
&& TailBB.canFallThrough())
return false;
// If the target has hardware branch prediction that can handle indirect
// branches, duplicating them can often make them predictable when there
// are common paths through the code. The limit needs to be high enough

View File

@ -1,34 +0,0 @@
; RUN: llc -O2 < %s | FileCheck %s
target datalayout = "e-m:e-i64:64-n32:64"
target triple = "powerpc64le-unknown-linux-gnu"
; Check that the conditional return block of fmax_double3.exit was not
; duplicated into the if.then.i block
; CHECK: # %if.then.i
; CHECK: lxvd2x
; CHECK: stxvd2x
; CHECK-NOT: bclr
; CHECK: {{^}}.LBB{{[0-9_]+}}:
; CHECK-SAME: # %fmax_double3.exit
; CHECK: bclr
; CHECK: # %if.then
; Function Attrs: nounwind
define void @__fmax_double3_3D_exec(<2 x double>* %input6, i1 %bool1, i1 %bool2) #0 {
entry:
br i1 %bool1, label %if.then.i, label %fmax_double3.exit
if.then.i: ; preds = %entry
store <2 x double> zeroinitializer, <2 x double>* %input6, align 32
br label %fmax_double3.exit
fmax_double3.exit: ; preds = %if.then.i, %entry
br i1 %bool2, label %if.then, label %do.end
if.then: ; preds = %fmax_double3.exit
unreachable
do.end: ; preds = %fmax_double3.exit
ret void
}
attributes #0 = { nounwind }