diff options
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 748ad3f2879..c8369aa1c61 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -305,6 +305,16 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {      }      break; +  case ISD::BRCOND: +    Tmp1 = LegalizeOp(Node->getOperand(0));  // Legalize the chain. +    // FIXME: booleans might not be legal! +    Tmp2 = LegalizeOp(Node->getOperand(1));  // Legalize the condition. +    // Basic block destination (Op#2) is always legal. +    if (Tmp1 != Node->getOperand(0) || Tmp2 != Node->getOperand(1)) +      Result = DAG.getNode(ISD::BRCOND, MVT::Other, Tmp1, Tmp2, +                           Node->getOperand(2)); +    break; +    case ISD::LOAD:      Tmp1 = LegalizeOp(Node->getOperand(0));  // Legalize the chain.      Tmp2 = LegalizeOp(Node->getOperand(1));  // Legalize the pointer. | 

