@@ -4729,24 +4729,27 @@ class SILFunctionType final
47294729 using Representation = SILExtInfoBuilder::Representation;
47304730
47314731private:
4732- unsigned NumParameters;
4732+ unsigned NumParameters = 0 ;
47334733
4734- // These are *normal* results if this is not a coroutine and *yield* results
4735- // otherwise.
4736- unsigned NumAnyResults; // Not including the ErrorResult.
4737- unsigned NumAnyIndirectFormalResults; // Subset of NumAnyResults.
4738- unsigned NumPackResults; // Subset of NumAnyIndirectFormalResults.
4734+ // These are *normal* results
4735+ unsigned NumAnyResults = 0 ; // Not including the ErrorResult.
4736+ unsigned NumAnyIndirectFormalResults = 0 ; // Subset of NumAnyResults.
4737+ unsigned NumPackResults = 0 ; // Subset of NumAnyIndirectFormalResults.
4738+ // These are *yield* results
4739+ unsigned NumAnyYieldResults = 0 ; // Not including the ErrorResult.
4740+ unsigned NumAnyIndirectFormalYieldResults = 0 ; // Subset of NumAnyYieldResults.
4741+ unsigned NumPackYieldResults = 0 ; // Subset of NumAnyIndirectFormalYieldResults.
47394742
47404743 // [NOTE: SILFunctionType-layout]
47414744 // The layout of a SILFunctionType in memory is:
47424745 // SILFunctionType
47434746 // SILParameterInfo[NumParameters]
4744- // SILResultInfo[isCoroutine() ? 0 : NumAnyResults]
4747+ // SILResultInfo[NumAnyResults]
47454748 // SILResultInfo? // if hasErrorResult()
4746- // SILYieldInfo[isCoroutine() ? NumAnyResults : 0 ]
4749+ // SILYieldInfo[NumAnyYieldResults ]
47474750 // SubstitutionMap[HasPatternSubs + HasInvocationSubs]
4748- // CanType? // if !isCoro && NumAnyResults > 1, formal result cache
4749- // CanType? // if !isCoro && NumAnyResults > 1, all result cache
4751+ // CanType? // if NumAnyResults > 1, formal result cache
4752+ // CanType? // if NumAnyResults > 1, all result cache
47504753
47514754 CanGenericSignature InvocationGenericSig;
47524755 ProtocolConformanceRef WitnessMethodConformance;
@@ -4785,7 +4788,7 @@ class SILFunctionType final
47854788
47864789 // / Do we have slots for caches of the normal-result tuple type?
47874790 bool hasResultCache () const {
4788- return NumAnyResults > 1 && ! isCoroutine () ;
4791+ return NumAnyResults > 1 ;
47894792 }
47904793
47914794 CanType &getMutableFormalResultsCache () const {
@@ -4873,14 +4876,14 @@ class SILFunctionType final
48734876 ArrayRef<SILYieldInfo> getYields () const {
48744877 return const_cast <SILFunctionType *>(this )->getMutableYields ();
48754878 }
4876- unsigned getNumYields () const { return isCoroutine () ? NumAnyResults : 0 ; }
4879+ unsigned getNumYields () const { return NumAnyYieldResults ; }
48774880
48784881 // / Return the array of all result information. This may contain inter-mingled
48794882 // / direct and indirect results.
48804883 ArrayRef<SILResultInfo> getResults () const {
48814884 return const_cast <SILFunctionType *>(this )->getMutableResults ();
48824885 }
4883- unsigned getNumResults () const { return isCoroutine () ? 0 : NumAnyResults; }
4886+ unsigned getNumResults () const { return NumAnyResults; }
48844887
48854888 ArrayRef<SILResultInfo> getResultsWithError () const {
48864889 return const_cast <SILFunctionType *>(this )->getMutableResultsWithError ();
@@ -4917,17 +4920,17 @@ class SILFunctionType final
49174920 // indirect property, not the SIL indirect property, should be consulted to
49184921 // determine whether function reabstraction is necessary.
49194922 unsigned getNumIndirectFormalResults () const {
4920- return isCoroutine () ? 0 : NumAnyIndirectFormalResults;
4923+ return NumAnyIndirectFormalResults;
49214924 }
49224925 // / Does this function have any formally indirect results?
49234926 bool hasIndirectFormalResults () const {
49244927 return getNumIndirectFormalResults () != 0 ;
49254928 }
49264929 unsigned getNumDirectFormalResults () const {
4927- return isCoroutine () ? 0 : NumAnyResults - NumAnyIndirectFormalResults;
4930+ return NumAnyResults - NumAnyIndirectFormalResults;
49284931 }
49294932 unsigned getNumPackResults () const {
4930- return isCoroutine () ? 0 : NumPackResults;
4933+ return NumPackResults;
49314934 }
49324935 bool hasIndirectErrorResult () const {
49334936 return hasErrorResult () && getErrorResult ().isFormalIndirect ();
@@ -4985,17 +4988,17 @@ class SILFunctionType final
49854988 TypeExpansionContext expansion);
49864989
49874990 unsigned getNumIndirectFormalYields () const {
4988- return isCoroutine () ? NumAnyIndirectFormalResults : 0 ;
4991+ return NumAnyIndirectFormalYieldResults ;
49894992 }
49904993 // / Does this function have any formally indirect yields?
49914994 bool hasIndirectFormalYields () const {
49924995 return getNumIndirectFormalYields () != 0 ;
49934996 }
49944997 unsigned getNumDirectFormalYields () const {
4995- return isCoroutine () ? NumAnyResults - NumAnyIndirectFormalResults : 0 ;
4998+ return NumAnyYieldResults - NumAnyIndirectFormalYieldResults ;
49964999 }
49975000 unsigned getNumPackYields () const {
4998- return isCoroutine () ? NumPackResults : 0 ;
5001+ return NumPackYieldResults ;
49995002 }
50005003
50015004 struct IndirectFormalYieldFilter {
0 commit comments