@@ -1530,8 +1530,9 @@ enum class PhaseChecks : unsigned int
15301530 CHECK_FG = 1 << 2 , // flow graph integrity
15311531 CHECK_EH = 1 << 3 , // eh table integrity
15321532 CHECK_LOOPS = 1 << 4 , // loop integrity/canonicalization
1533- CHECK_PROFILE = 1 << 5 , // profile data integrity
1534- CHECK_LINKED_LOCALS = 1 << 6 , // check linked list of locals
1533+ CHECK_LIKELIHOODS = 1 << 5 , // profile data likelihood integrity
1534+ CHECK_PROFILE = 1 << 6 , // profile data full integrity
1535+ CHECK_LINKED_LOCALS = 1 << 7 , // check linked list of locals
15351536};
15361537
15371538inline constexpr PhaseChecks operator ~(PhaseChecks a)
@@ -1563,6 +1564,12 @@ inline PhaseChecks& operator ^=(PhaseChecks& a, PhaseChecks b)
15631564{
15641565 return a = (PhaseChecks)((unsigned int )a ^ (unsigned int )b);
15651566}
1567+
1568+ inline bool hasFlag (const PhaseChecks& flagSet, const PhaseChecks& flag)
1569+ {
1570+ return ((flagSet & flag) == flag);
1571+ }
1572+
15661573// clang-format on
15671574
15681575// Specify which dumps should be run after each phase
@@ -4023,6 +4030,12 @@ class Compiler
40234030 return lvaGetDesc (lclVar->GetLclNum ());
40244031 }
40254032
4033+ const ABIPassingInformation& lvaGetParameterABIInfo (unsigned lclNum)
4034+ {
4035+ assert (lclNum < info.compArgsCount );
4036+ return lvaParameterPassingInfo[lclNum];
4037+ }
4038+
40264039 unsigned lvaTrackedIndexToLclNum (unsigned trackedIndex)
40274040 {
40284041 assert (trackedIndex < lvaTrackedCount);
@@ -4091,18 +4104,7 @@ class Compiler
40914104 bool lvaIsOriginalThisReadOnly (); // return true if there is no place in the code
40924105 // that writes to arg0
40934106
4094- #ifdef TARGET_X86
4095- bool lvaIsArgAccessedViaVarArgsCookie (unsigned lclNum)
4096- {
4097- if (!info.compIsVarArgs )
4098- {
4099- return false ;
4100- }
4101-
4102- LclVarDsc* varDsc = lvaGetDesc (lclNum);
4103- return varDsc->lvIsParam && !varDsc->lvIsRegArg && (lclNum != lvaVarargsHandleArg);
4104- }
4105- #endif // TARGET_X86
4107+ bool lvaIsArgAccessedViaVarArgsCookie (unsigned lclNum);
41064108
41074109 bool lvaIsImplicitByRefLocal (unsigned lclNum) const ;
41084110 bool lvaIsLocalImplicitlyAccessedByRef (unsigned lclNum) const ;
@@ -6136,7 +6138,7 @@ class Compiler
61366138 void fgDebugCheckDispFlags (GenTree* tree, GenTreeFlags dispFlags, GenTreeDebugFlags debugFlags);
61376139 void fgDebugCheckFlagsHelper (GenTree* tree, GenTreeFlags actualFlags, GenTreeFlags expectedFlags);
61386140 void fgDebugCheckTryFinallyExits ();
6139- void fgDebugCheckProfileWeights ( );
6141+ void fgDebugCheckProfile (PhaseChecks checks = PhaseChecks::CHECK_NONE );
61406142 bool fgDebugCheckProfileWeights (ProfileChecks checks);
61416143 bool fgDebugCheckIncomingProfileData (BasicBlock* block, ProfileChecks checks);
61426144 bool fgDebugCheckOutgoingProfileData (BasicBlock* block, ProfileChecks checks);
@@ -6281,7 +6283,7 @@ class Compiler
62816283 bool fgPgoConsistent;
62826284
62836285#ifdef DEBUG
6284- bool fgPgoConsistentCheck ;
6286+ bool fgPgoDeferredInconsistency ;
62856287#endif
62866288
62876289
@@ -8022,32 +8024,6 @@ class Compiler
80228024 Lowering* m_pLowering; // Lowering; needed to Lower IR that's added or modified after Lowering.
80238025 LinearScanInterface* m_pLinearScan; // Linear Scan allocator
80248026
8025- /* raIsVarargsStackArg is called by raMaskStkVars and by
8026- lvaComputeRefCounts. It identifies the special case
8027- where a varargs function has a parameter passed on the
8028- stack, other than the special varargs handle. Such parameters
8029- require special treatment, because they cannot be tracked
8030- by the GC (their offsets in the stack are not known
8031- at compile time).
8032- */
8033-
8034- bool raIsVarargsStackArg (unsigned lclNum)
8035- {
8036- #ifdef TARGET_X86
8037-
8038- LclVarDsc* varDsc = lvaGetDesc (lclNum);
8039-
8040- assert (varDsc->lvIsParam );
8041-
8042- return (info.compIsVarArgs && !varDsc->lvIsRegArg && (lclNum != lvaVarargsHandleArg));
8043-
8044- #else // TARGET_X86
8045-
8046- return false ;
8047-
8048- #endif // TARGET_X86
8049- }
8050-
80518027 /*
80528028 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
80538029 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0 commit comments