diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 252de5ee51c..9ed7de49809 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -873,6 +873,7 @@ SDOperand PPCDAGToDAGISel::Select(SDOperand Op) { switch (N->getOpcode()) { default: break; + case ISD::BasicBlock: return CodeGenMap[Op] = Op; case ISD::DYNAMIC_STACKALLOC: return SelectDYNAMIC_STACKALLOC(Op); case ISD::ADD_PARTS: return SelectADD_PARTS(Op); case ISD::SUB_PARTS: return SelectSUB_PARTS(Op); @@ -1219,9 +1220,6 @@ SDOperand PPCDAGToDAGISel::Select(SDOperand Op) { // Finally, select this to a blr (return) instruction. return CurDAG->SelectNodeTo(N, PPC::BLR, MVT::Other, Chain); } - case ISD::BR: - return CurDAG->SelectNodeTo(N, PPC::B, MVT::Other, N->getOperand(1), - Select(N->getOperand(0))); case ISD::BR_CC: case ISD::BRTWOWAY_CC: { SDOperand Chain = Select(N->getOperand(0)); diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index 48ac98176b4..ad8f91e06ba 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.td +++ b/lib/Target/PowerPC/PPCInstrInfo.td @@ -190,7 +190,7 @@ let isTerminator = 1 in { let Defs = [LR] in def MovePCtoLR : Pseudo<(ops piclabel:$label), "bl $label", []>; -let isBranch = 1, isTerminator = 1 in { +let isBranch = 1, isTerminator = 1, hasCtrlDep = 1 in { def COND_BRANCH : Pseudo<(ops CRRC:$crS, u16imm:$opc, target:$true, target:$false), "; COND_BRANCH", []>;