@@ -2785,19 +2785,17 @@ SDValue SelectionDAGLegalize::ExpandLegalINT_TO_FP(SDNode *Node,
2785
2785
// In strict mode, we must avoid spurious exceptions, and therefore
2786
2786
// must make sure to only emit a single STRICT_SINT_TO_FP.
2787
2787
SDValue InCvt = DAG.getSelect (dl, SrcVT, SignBitTest, Or, Op0);
2788
- Fast = DAG.getNode (ISD::STRICT_SINT_TO_FP, dl, { DestVT, MVT::Other },
2789
- { Node->getOperand (0 ), InCvt });
2790
- Slow = DAG.getNode (ISD::STRICT_FADD, dl, { DestVT, MVT::Other },
2791
- { Fast.getValue (1 ), Fast, Fast });
2792
- Chain = Slow.getValue (1 );
2793
2788
// The STRICT_SINT_TO_FP inherits the exception mode from the
2794
2789
// incoming STRICT_UINT_TO_FP node; the STRICT_FADD node can
2795
2790
// never raise any exception.
2796
2791
SDNodeFlags Flags;
2797
2792
Flags.setNoFPExcept (Node->getFlags ().hasNoFPExcept ());
2798
- Fast->setFlags (Flags);
2793
+ Fast = DAG.getNode (ISD::STRICT_SINT_TO_FP, dl, {DestVT, MVT::Other},
2794
+ {Node->getOperand (0 ), InCvt}, Flags);
2799
2795
Flags.setNoFPExcept (true );
2800
- Slow->setFlags (Flags);
2796
+ Slow = DAG.getNode (ISD::STRICT_FADD, dl, {DestVT, MVT::Other},
2797
+ {Fast.getValue (1 ), Fast, Fast}, Flags);
2798
+ Chain = Slow.getValue (1 );
2801
2799
} else {
2802
2800
SDValue SignCvt = DAG.getNode (ISD::SINT_TO_FP, dl, DestVT, Or);
2803
2801
Slow = DAG.getNode (ISD::FADD, dl, DestVT, SignCvt, SignCvt);
@@ -3407,14 +3405,12 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
3407
3405
EVT VT = Operand.getValueType ();
3408
3406
SDValue One = DAG.getConstantFP (1.0 , dl, VT);
3409
3407
SDValue Chain = DAG.getEntryNode ();
3410
- SDValue Mul = DAG.getNode (ISD::STRICT_FMUL, dl, {VT, MVT::Other},
3411
- {Chain, Operand, One});
3412
-
3413
3408
// Propagate existing flags on canonicalize, and additionally set
3414
3409
// NoFPExcept.
3415
3410
SDNodeFlags CanonicalizeFlags = Node->getFlags ();
3416
3411
CanonicalizeFlags.setNoFPExcept (true );
3417
- Mul->setFlags (CanonicalizeFlags);
3412
+ SDValue Mul = DAG.getNode (ISD::STRICT_FMUL, dl, {VT, MVT::Other},
3413
+ {Chain, Operand, One}, CanonicalizeFlags);
3418
3414
3419
3415
Results.push_back (Mul);
3420
3416
break ;
@@ -4150,15 +4146,14 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
4150
4146
Tmp2 = Node->getOperand (1 );
4151
4147
Tmp3 = Node->getOperand (2 );
4152
4148
if (Tmp1.getOpcode () == ISD::SETCC) {
4153
- Tmp1 = DAG.getSelectCC (dl, Tmp1. getOperand ( 0 ), Tmp1. getOperand ( 1 ),
4154
- Tmp2, Tmp3,
4155
- cast<CondCodeSDNode>(Tmp1.getOperand (2 ))->get ());
4149
+ Tmp1 = DAG.getSelectCC (
4150
+ dl, Tmp1. getOperand ( 0 ), Tmp1. getOperand ( 1 ), Tmp2, Tmp3,
4151
+ cast<CondCodeSDNode>(Tmp1.getOperand (2 ))->get (), Node-> getFlags ());
4156
4152
} else {
4157
- Tmp1 = DAG. getSelectCC (dl, Tmp1,
4158
- DAG.getConstant (0 , dl, Tmp1.getValueType ()),
4159
- Tmp2, Tmp3, ISD::SETNE);
4153
+ Tmp1 =
4154
+ DAG. getSelectCC (dl, Tmp1, DAG.getConstant (0 , dl, Tmp1.getValueType ()),
4155
+ Tmp2, Tmp3, ISD::SETNE, Node-> getFlags () );
4160
4156
}
4161
- Tmp1->setFlags (Node->getFlags ());
4162
4157
Results.push_back (Tmp1);
4163
4158
break ;
4164
4159
case ISD::BR_JT: {
@@ -4296,8 +4291,8 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
4296
4291
EVT Tmp1VT = Tmp1.getValueType ();
4297
4292
Tmp1 = DAG.getNode (ISD::SELECT_CC, dl, VT, Tmp1, Tmp2,
4298
4293
DAG.getBoolConstant (true , dl, VT, Tmp1VT),
4299
- DAG.getBoolConstant (false , dl, VT, Tmp1VT), Tmp3);
4300
- Tmp1-> setFlags ( Node->getFlags ());
4294
+ DAG.getBoolConstant (false , dl, VT, Tmp1VT), Tmp3,
4295
+ Node->getFlags ());
4301
4296
Results.push_back (Tmp1);
4302
4297
break ;
4303
4298
}
@@ -4335,8 +4330,8 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
4335
4330
if (TLI.isCondCodeLegalOrCustom (InvCC, Tmp1.getSimpleValueType ())) {
4336
4331
// Use the new condition code and swap true and false
4337
4332
Legalized = true ;
4338
- Tmp1 = DAG. getSelectCC (dl, Tmp1, Tmp2, Tmp4, Tmp3, InvCC);
4339
- Tmp1-> setFlags ( Node->getFlags ());
4333
+ Tmp1 =
4334
+ DAG. getSelectCC (dl, Tmp1, Tmp2, Tmp4, Tmp3, InvCC, Node->getFlags ());
4340
4335
} else {
4341
4336
// If The inverse is not legal, then try to swap the arguments using
4342
4337
// the inverse condition code.
@@ -4345,8 +4340,8 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
4345
4340
// The swapped inverse condition is legal, so swap true and false,
4346
4341
// lhs and rhs.
4347
4342
Legalized = true ;
4348
- Tmp1 = DAG.getSelectCC (dl, Tmp2, Tmp1, Tmp4, Tmp3, SwapInvCC);
4349
- Tmp1-> setFlags ( Node->getFlags ());
4343
+ Tmp1 = DAG.getSelectCC (dl, Tmp2, Tmp1, Tmp4, Tmp3, SwapInvCC,
4344
+ Node->getFlags ());
4350
4345
}
4351
4346
}
4352
4347
@@ -4365,15 +4360,14 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
4365
4360
// If we expanded the SETCC by swapping LHS and RHS, or by inverting the
4366
4361
// condition code, create a new SELECT_CC node.
4367
4362
if (CC.getNode ()) {
4368
- Tmp1 = DAG.getNode (ISD::SELECT_CC, dl, Node->getValueType (0 ),
4369
- Tmp1, Tmp2, Tmp3, Tmp4, CC);
4363
+ Tmp1 = DAG.getNode (ISD::SELECT_CC, dl, Node->getValueType (0 ), Tmp1,
4364
+ Tmp2, Tmp3, Tmp4, CC, Node-> getFlags () );
4370
4365
} else {
4371
4366
Tmp2 = DAG.getConstant (0 , dl, Tmp1.getValueType ());
4372
4367
CC = DAG.getCondCode (ISD::SETNE);
4373
4368
Tmp1 = DAG.getNode (ISD::SELECT_CC, dl, Node->getValueType (0 ), Tmp1,
4374
- Tmp2, Tmp3, Tmp4, CC);
4369
+ Tmp2, Tmp3, Tmp4, CC, Node-> getFlags () );
4375
4370
}
4376
- Tmp1->setFlags (Node->getFlags ());
4377
4371
}
4378
4372
Results.push_back (Tmp1);
4379
4373
break ;
0 commit comments