@@ -5972,8 +5972,7 @@ GenTree* Compiler::gtNewOperNode(genTreeOps oper, var_types type, GenTree* op1,
59725972
59735973GenTreeQmark* Compiler::gtNewQmarkNode(var_types type, GenTree* cond, GenTreeColon* colon)
59745974{
5975- compQmarkUsed = true;
5976- cond->gtFlags |= GTF_RELOP_QMARK;
5975+ compQmarkUsed = true;
59775976 GenTreeQmark* result = new (this, GT_QMARK) GenTreeQmark(type, cond, colon);
59785977#ifdef DEBUG
59795978 if (compQmarkRationalized)
@@ -8150,18 +8149,6 @@ GenTree* Compiler::gtCloneExpr(
81508149 /* GTF_NODE_MASK should not be propagated from 'tree' to 'copy' */
81518150 addFlags &= ~GTF_NODE_MASK;
81528151#endif
8153- // Some other flags depend on the context of the expression, and should not be preserved.
8154- // For example, GTF_RELOP_QMARK:
8155- if (copy->OperKind() & GTK_RELOP)
8156- {
8157- addFlags &= ~GTF_RELOP_QMARK;
8158- }
8159- // On the other hand, if we're creating such a context, restore this flag.
8160- if (copy->OperGet() == GT_QMARK)
8161- {
8162- copy->AsOp()->gtOp1->gtFlags |= GTF_RELOP_QMARK;
8163- }
8164-
81658152 copy->gtFlags |= addFlags;
81668153
81678154 // Update side effect flags since they may be different from the source side effect flags.
@@ -8236,11 +8223,6 @@ GenTreeCall* Compiler::gtCloneExprCallHelper(GenTreeCall* tree,
82368223 argsTail = &((*argsTail)->NextRef());
82378224 }
82388225
8239- #if !FEATURE_FIXED_OUT_ARGS
8240- copy->regArgList = tree->regArgList;
8241- copy->regArgListCount = tree->regArgListCount;
8242- #endif
8243-
82448226 // The call sig comes from the EE and doesn't change throughout the compilation process, meaning
82458227 // we only really need one physical copy of it. Therefore a shallow pointer copy will suffice.
82468228 // (Note that this still holds even if the tree we are cloning was created by an inlinee compiler,
@@ -8651,83 +8633,6 @@ Compiler::fgWalkResult Compiler::fgUpdateSideEffectsPost(GenTree** pTree, fgWalk
86518633 return WALK_CONTINUE;
86528634}
86538635
8654- /*****************************************************************************
8655- *
8656- * Compares two trees and returns true when both trees are the same.
8657- * Instead of fully comparing the two trees this method can just return false.
8658- * Thus callers should not assume that the trees are different when false is returned.
8659- * Only when true is returned can the caller perform code optimizations.
8660- * The current implementation only compares a limited set of LEAF/CONST node
8661- * and returns false for all othere trees.
8662- */
8663- bool Compiler::gtCompareTree(GenTree* op1, GenTree* op2)
8664- {
8665- /* Make sure that both trees are of the same GT node kind */
8666- if (op1->OperGet() != op2->OperGet())
8667- {
8668- return false;
8669- }
8670-
8671- /* Make sure that both trees are returning the same type */
8672- if (op1->gtType != op2->gtType)
8673- {
8674- return false;
8675- }
8676-
8677- /* Figure out what kind of a node we have */
8678-
8679- genTreeOps oper = op1->OperGet();
8680- unsigned kind = op1->OperKind();
8681-
8682- /* Is this a constant or leaf node? */
8683-
8684- if (kind & (GTK_CONST | GTK_LEAF))
8685- {
8686- switch (oper)
8687- {
8688- case GT_CNS_INT:
8689- if ((op1->AsIntCon()->gtIconVal == op2->AsIntCon()->gtIconVal) && GenTree::SameIconHandleFlag(op1, op2))
8690- {
8691- return true;
8692- }
8693- break;
8694-
8695- case GT_CNS_LNG:
8696- if (op1->AsLngCon()->gtLconVal == op2->AsLngCon()->gtLconVal)
8697- {
8698- return true;
8699- }
8700- break;
8701-
8702- case GT_CNS_STR:
8703- if (op1->AsStrCon()->gtSconCPX == op2->AsStrCon()->gtSconCPX)
8704- {
8705- return true;
8706- }
8707- break;
8708-
8709- case GT_LCL_VAR:
8710- if (op1->AsLclVarCommon()->GetLclNum() == op2->AsLclVarCommon()->GetLclNum())
8711- {
8712- return true;
8713- }
8714- break;
8715-
8716- case GT_CLS_VAR:
8717- if (op1->AsClsVar()->gtClsVarHnd == op2->AsClsVar()->gtClsVarHnd)
8718- {
8719- return true;
8720- }
8721- break;
8722-
8723- default:
8724- // we return false for these unhandled 'oper' kinds
8725- break;
8726- }
8727- }
8728- return false;
8729- }
8730-
87318636//------------------------------------------------------------------------
87328637// gtGetThisArg: Return this pointer node for the call.
87338638//
@@ -8759,28 +8664,6 @@ GenTree* Compiler::gtGetThisArg(GenTreeCall* call)
87598664 // Assert if we used DEBUG_DESTROY_NODE.
87608665 assert(result->gtOper != GT_COUNT);
87618666
8762- #if !FEATURE_FIXED_OUT_ARGS && defined(DEBUG)
8763- // Check that call->fgArgInfo used in gtArgEntryByArgNum was not
8764- // left outdated by assertion propogation updates.
8765- // There is no information about registers of late args for platforms
8766- // with FEATURE_FIXED_OUT_ARGS that is why this debug check is under
8767- // !FEATURE_FIXED_OUT_ARGS.
8768- regNumber thisReg = REG_ARG_0;
8769- regList list = call->regArgList;
8770- int index = 0;
8771- for (GenTreeCall::Use& use : call->LateArgs())
8772- {
8773- assert(index < call->regArgListCount);
8774- regNumber curArgReg = list[index];
8775- if (curArgReg == thisReg)
8776- {
8777- assert(result == use.GetNode());
8778- }
8779-
8780- index++;
8781- }
8782- #endif // !FEATURE_FIXED_OUT_ARGS && defined(DEBUG)
8783-
87848667 return result;
87858668}
87868669
@@ -10478,12 +10361,6 @@ void Compiler::gtDispNode(GenTree* tree, IndentStack* indentStack, __in __in_z _
1047810361 --msgLength;
1047910362 break;
1048010363 }
10481- if (tree->gtFlags & GTF_RELOP_QMARK)
10482- {
10483- printf("Q");
10484- --msgLength;
10485- break;
10486- }
1048710364 goto DASH;
1048810365
1048910366 case GT_JCMP:
@@ -10866,12 +10743,6 @@ void Compiler::gtGetLclVarNameInfo(unsigned lclNum, const char** ilKindOut, cons
1086610743 ilName = "OutArgs";
1086710744 }
1086810745#endif // FEATURE_FIXED_OUT_ARGS
10869- #ifdef TARGET_ARM
10870- else if (lclNum == lvaPromotedStructAssemblyScratchVar)
10871- {
10872- ilName = "PromotedStructScratch";
10873- }
10874- #endif // TARGET_ARM
1087510746#if !defined(FEATURE_EH_FUNCLETS)
1087610747 else if (lclNum == lvaShadowSPslotsVar)
1087710748 {
@@ -12045,9 +11916,6 @@ void Compiler::gtDispTree(GenTree* tree,
1204511916 (call->gtControlExpr == lastChild) ? IIArcBottom : IIArc, "control expr", topOnly);
1204611917 }
1204711918
12048- #if !FEATURE_FIXED_OUT_ARGS
12049- regList list = call->regArgList;
12050- #endif
1205111919 int lateArgIndex = 0;
1205211920 for (GenTreeCall::Use& use : call->LateArgs())
1205311921 {
@@ -12226,10 +12094,7 @@ void Compiler::gtGetLateArgMsg(GenTreeCall* call, GenTree* argx, int lateArgInde
1222612094 assert(curArgTabEntry);
1222712095 regNumber argReg = curArgTabEntry->GetRegNum();
1222812096
12229- #if !FEATURE_FIXED_OUT_ARGS
12230- assert(lateArgIndex < call->regArgListCount);
12231- assert(argReg == call->regArgList[lateArgIndex]);
12232- #else
12097+ #if FEATURE_FIXED_OUT_ARGS
1223312098 if (argReg == REG_STK)
1223412099 {
1223512100 sprintf_s(bufp, bufLength, "arg%d in out+%02x%c", curArgTabEntry->argNum, curArgTabEntry->GetByteOffset(), 0);
@@ -12994,7 +12859,7 @@ GenTree* Compiler::gtFoldTypeCompare(GenTree* tree)
1299412859 GenTree* compare = gtCreateHandleCompare(oper, op1ClassFromHandle, op2ClassFromHandle, inliningKind);
1299512860
1299612861 // Drop any now-irrelvant flags
12997- compare->gtFlags |= tree->gtFlags & (GTF_RELOP_JMP_USED | GTF_RELOP_QMARK | GTF_DONT_CSE);
12862+ compare->gtFlags |= tree->gtFlags & (GTF_RELOP_JMP_USED | GTF_DONT_CSE);
1299812863
1299912864 return compare;
1300012865 }
@@ -13034,7 +12899,7 @@ GenTree* Compiler::gtFoldTypeCompare(GenTree* tree)
1303412899 GenTree* compare = gtCreateHandleCompare(oper, arg1, arg2, inliningKind);
1303512900
1303612901 // Drop any now-irrelvant flags
13037- compare->gtFlags |= tree->gtFlags & (GTF_RELOP_JMP_USED | GTF_RELOP_QMARK | GTF_DONT_CSE);
12902+ compare->gtFlags |= tree->gtFlags & (GTF_RELOP_JMP_USED | GTF_DONT_CSE);
1303812903
1303912904 return compare;
1304012905 }
@@ -13132,7 +12997,7 @@ GenTree* Compiler::gtFoldTypeCompare(GenTree* tree)
1313212997 GenTree* const compare = gtCreateHandleCompare(oper, objMT, knownMT, typeCheckInliningResult);
1313312998
1313412999 // Drop any now irrelevant flags
13135- compare->gtFlags |= tree->gtFlags & (GTF_RELOP_JMP_USED | GTF_RELOP_QMARK | GTF_DONT_CSE);
13000+ compare->gtFlags |= tree->gtFlags & (GTF_RELOP_JMP_USED | GTF_DONT_CSE);
1313613001
1313713002 // And we're done
1313813003 return compare;
@@ -15928,7 +15793,6 @@ void Compiler::gtExtractSideEffList(GenTree* expr,
1592815793 */
1592915794
1593015795#ifdef DEBUG
15931-
1593215796void dispNodeList(GenTree* list, bool verbose)
1593315797{
1593415798 GenTree* last = nullptr;
@@ -15962,21 +15826,7 @@ void dispNodeList(GenTree* list, bool verbose)
1596215826 }
1596315827 printf(""); // null string means flush
1596415828}
15965-
15966- /*****************************************************************************
15967- * Callback to assert that the nodes of a qmark-colon subtree are marked
15968- */
15969-
15970- /* static */
15971- Compiler::fgWalkResult Compiler::gtAssertColonCond(GenTree** pTree, fgWalkData* data)
15972- {
15973- assert(data->pCallbackData == nullptr);
15974-
15975- assert((*pTree)->gtFlags & GTF_COLON_COND);
15976-
15977- return WALK_CONTINUE;
15978- }
15979- #endif // DEBUG
15829+ #endif
1598015830
1598115831/*****************************************************************************
1598215832 * Callback to mark the nodes of a qmark-colon subtree that are conditionally
0 commit comments