Skip to content

Commit b06150f

Browse files
committed
Fix AssertNoFPClass assert
1 parent 5d3aaac commit b06150f

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7417,10 +7417,17 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT,
74177417
N2.getOpcode() == ISD::TargetConstant && "Invalid FP_ROUND!");
74187418
if (N1.getValueType() == VT) return N1; // noop conversion.
74197419
break;
7420-
case ISD::AssertNoFPClass:
7420+
case ISD::AssertNoFPClass: {
74217421
assert(N1.getValueType().isFloatingPoint() &&
74227422
"AssertNoFPClass is used for a non-floating type");
7423+
assert(isa<ConstantSDNode>(N2) && "NoFPClass is not Constant");
7424+
FPClassTest NoFPClass =
7425+
static_cast<FPClassTest>(dyn_cast<ConstantSDNode>(N2)->getZExtValue());
7426+
assert(llvm::to_underlying(NoFPClass) <=
7427+
BitmaskEnumDetail::Mask<FPClassTest>() &&
7428+
"FPClassTest value too large");
74237429
break;
7430+
}
74247431
case ISD::AssertSext:
74257432
case ISD::AssertZext: {
74267433
EVT EVT = cast<VTSDNode>(N2)->getVT();

0 commit comments

Comments
 (0)