diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index e3fe925b7f138..777e376d3c4ff 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -23647,19 +23647,18 @@ SDValue X86TargetLowering::LowerVAARG(SDValue Op, SelectionDAG &DAG) const { EVT ArgVT = Op.getNode()->getValueType(0); Type *ArgTy = ArgVT.getTypeForEVT(*DAG.getContext()); uint32_t ArgSize = DAG.getDataLayout().getTypeAllocSize(ArgTy); - uint8_t ArgMode = 0; + uint8_t ArgMode; // Decide which area this value should be read from. // TODO: Implement the AMD64 ABI in its entirety. This simple // selection mechanism works only for the basic types. - if (ArgVT == MVT::f80) { - llvm_unreachable("va_arg for f80 not yet implemented"); - } else if (ArgVT.isFloatingPoint() && ArgSize <= 16 /*bytes*/) { + assert(ArgVT != MVT::f80 && "va_arg for f80 not yet implemented"); + if (ArgVT.isFloatingPoint() && ArgSize <= 16 /*bytes*/) { ArgMode = 2; // Argument passed in XMM register. Use fp_offset. - } else if (ArgVT.isInteger() && ArgSize <= 32 /*bytes*/) { - ArgMode = 1; // Argument passed in GPR64 register(s). Use gp_offset. } else { - llvm_unreachable("Unhandled argument type in LowerVAARG"); + assert(ArgVT.isInteger() && ArgSize <= 32 /*bytes*/ && + "Unhandled argument type in LowerVAARG"); + ArgMode = 1; // Argument passed in GPR64 register(s). Use gp_offset. } if (ArgMode == 2) {