diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp index c991bae93ba..73b75797d6b 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp @@ -5137,10 +5137,8 @@ void SelectionDAGLowering::visitInlineAsm(CallSite CS) { // BasicBlocks are labels, currently appearing only in asm's. if (OpInfo.CallOperandVal) { // Strip bitcasts, if any. This mostly comes up for functions. - ConstantExpr* CE = NULL; - while ((CE = dyn_cast(OpInfo.CallOperandVal)) && - CE->getOpcode()==Instruction::BitCast) - OpInfo.CallOperandVal = CE->getOperand(0); + OpInfo.CallOperandVal = OpInfo.CallOperandVal->stripPointerCasts(); + if (BasicBlock *BB = dyn_cast(OpInfo.CallOperandVal)) { OpInfo.CallOperand = DAG.getBasicBlock(FuncInfo.MBBMap[BB]); } else {