Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Function builders] Use one-way constraints for closure parameters. #32305

Merged

Conversation

DougGregor
Copy link
Member

Introduce one-way constraints for the parameters of closures to which a
function builder is being applied. This was an intended part of the
model when one-way constraints were introduced, but somehow got
missed. This should further break up large constraints systems for
faster solving, and most likely won't break much source code in
practice.

Fixes rdar://problem/64231116.

Introduce one-way constraints for the parameters of closures to which a
function builder is being applied. This was an intended part of the
model when one-way constraints were introduced, but somehow got
missed. This should further break up large constraints systems for
faster solving, and *most likely* won't break much source code in
practice.

Fixes rdar://problem/64231116.
@DougGregor
Copy link
Member Author

@swift-ci please smoke test

@DougGregor
Copy link
Member Author

@swift-ci please test source compatibility

@DougGregor
Copy link
Member Author

@swift-ci please test compiler performance

Copy link
Contributor

@xedin xedin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@swift-ci
Copy link
Contributor

Summary for master full

Unexpected test results, excluded stats for RxCocoa, SwifterSwift, Backend

Regressions found (see below)

Debug-batch

debug-batch brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (3)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 63,674,762,007,824 63,679,923,801,046 5,161,793,222 0.01%
LLVM.NumLLVMBytesOutput 1,876,849,156 1,876,842,576 -6,580 -0.0%
time.swift-driver.wall 4166.5s 4186.2s 19.7s 0.47%

debug-batch detailed

Regressed (3)
name old new delta delta_pct
Driver.NumDriverPipePolls 101,453 102,801 1,348 1.33% ⛔
Driver.NumDriverPipeReads 92,085 93,409 1,324 1.44% ⛔
Sema.NumCyclicOneWayComponentsCollapsed 269 310 41 15.24% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (240)
name old new delta delta_pct
AST.ImportSetCacheHit 1,915,013 1,915,382 369 0.02%
AST.ImportSetCacheMiss 392,405 392,452 47 0.01%
AST.ImportSetFoldHit 124,360 124,370 10 0.01%
AST.ImportSetFoldMiss 268,044 268,082 38 0.01%
AST.ModuleShadowCacheHit 3,741 3,741 0 0.0%
AST.ModuleShadowCacheMiss 1,890 1,890 0 0.0%
AST.ModuleVisibilityCacheHit 36,939 36,939 0 0.0%
AST.ModuleVisibilityCacheMiss 8,425 8,425 0 0.0%
AST.NumASTBytesAllocated 54,484,254,880 54,322,760,256 -161,494,624 -0.3%
AST.NumASTScopeLookups 3,655,291 3,655,374 83 0.0%
AST.NumBraceStmtASTScopeExpansions 643,090 643,090 0 0.0%
AST.NumBraceStmtASTScopes 643,090 643,090 0 0.0%
AST.NumDecls 146,185 146,185 0 0.0%
AST.NumDependencies 305,857 305,855 -2 -0.0%
AST.NumIterableTypeBodyASTScopeExpansions 242,229 242,229 0 0.0%
AST.NumIterableTypeBodyASTScopes 290,934 290,959 25 0.01%
AST.NumLinkLibraries 0 0 0 0.0%
AST.NumLoadedModules 246,800 246,800 0 0.0%
AST.NumLocalTypeDecls 255 255 0 0.0%
AST.NumModuleLookupClassMember 6,993 6,993 0 0.0%
AST.NumModuleLookupValue 48,964,019 48,975,043 11,024 0.02%
AST.NumObjCMethods 25,386 25,386 0 0.0%
AST.NumOperators 589 589 0 0.0%
AST.NumPrecedenceGroups 93 93 0 0.0%
AST.NumReferencedDynamicNames 191 191 0 0.0%
AST.NumReferencedMemberNames 8,727,695 8,727,693 -2 -0.0%
AST.NumReferencedTopLevelNames 945,713 945,713 0 0.0%
AST.NumSourceBuffers 326,223 326,223 0 0.0%
AST.NumSourceLines 4,863,774 4,863,774 0 0.0%
AST.NumSourceLinesPerSecond 2,857,813 2,865,080 7,267 0.25%
AST.NumTotalClangImportedEntities 1,882,313 1,883,270 957 0.05%
Driver.ChildrenMaxRSS 276,040,185,856 275,609,352,192 -430,833,664 -0.16%
Driver.DriverDepCascadingDynamic 0 0 0 0.0%
Driver.DriverDepCascadingExternal 0 0 0 0.0%
Driver.DriverDepCascadingMember 0 0 0 0.0%
Driver.DriverDepCascadingNominal 0 0 0 0.0%
Driver.DriverDepCascadingTopLevel 0 0 0 0.0%
Driver.DriverDepDynamic 0 0 0 0.0%
Driver.DriverDepExternal 0 0 0 0.0%
Driver.DriverDepMember 0 0 0 0.0%
Driver.DriverDepNominal 0 0 0 0.0%
Driver.DriverDepTopLevel 0 0 0 0.0%
Driver.NumDriverJobsRun 29,031 29,031 0 0.0%
Driver.NumDriverJobsSkipped 0 0 0 0.0%
Driver.NumProcessFailures 0 0 0 0.0%
Frontend.MaxMallocUsage 1,347,519,051,416 1,347,238,854,000 -280,197,416 -0.02%
Frontend.NumInstructionsExecuted 63,674,762,007,824 63,679,923,801,046 5,161,793,222 0.01%
Frontend.NumProcessFailures 0 0 0 0.0%
IRGen.IRGenSourceFileRequest 27,715 27,715 0 0.0%
IRGen.IRGenWholeModuleRequest 20 20 0 0.0%
IRModule.NumGOTEntries 249,717 249,717 0 0.0%
IRModule.NumIRAliases 203,886 203,886 0 0.0%
IRModule.NumIRBasicBlocks 7,051,980 7,051,980 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRFunctions 3,570,928 3,570,928 0 0.0%
IRModule.NumIRGlobals 3,852,802 3,852,802 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
IRModule.NumIRInsts 90,995,245 90,995,245 0 0.0%
IRModule.NumIRNamedMetaData 140,175 140,175 0 0.0%
IRModule.NumIRValueSymbols 6,744,881 6,744,881 0 0.0%
LLVM.NumLLVMBytesOutput 1,876,849,156 1,876,842,576 -6,580 -0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
Parse.NumFunctionsParsed 280,109 280,109 0 0.0%
Parse.NumIterableDeclContextParsed 624,391 624,392 1 0.0%
Parse.ParseAbstractFunctionBodyRequest 257,638 257,638 0 0.0%
Parse.ParseMembersRequest 491,460 491,461 1 0.0%
Parse.ParseSourceFileRequest 317,071 317,071 0 0.0%
SILGen.ASTLoweringRequest 29,019 29,019 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILGenFunctions 1,784,548 1,784,548 0 0.0%
SILModule.NumSILGenGlobalVariables 55,428 55,428 0 0.0%
SILModule.NumSILGenVtables 19,149 19,149 0 0.0%
SILModule.NumSILGenWitnessTables 76,026 76,026 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptFunctions 2,633,085 2,633,085 0 0.0%
SILModule.NumSILOptGlobalVariables 56,647 56,647 0 0.0%
SILModule.NumSILOptVtables 32,453 32,453 0 0.0%
SILModule.NumSILOptWitnessTables 175,962 175,962 0 0.0%
SILOptimizer.ExecuteSILPipelineRequest 112,224 112,224 0 0.0%
Sema.AbstractGenericSignatureRequest 35,172 35,172 0 0.0%
Sema.AccessLevelRequest 12,982,072 12,927,729 -54,343 -0.42%
Sema.AnyObjectLookupRequest 283 283 0 0.0%
Sema.AreAllStoredPropertiesDefaultInitableRequest 22,119 22,119 0 0.0%
Sema.AttachedFunctionBuilderRequest 349,725 349,725 0 0.0%
Sema.AttachedPropertyWrapperTypeRequest 585,034 585,034 0 0.0%
Sema.AttachedPropertyWrappersRequest 2,603,121 2,603,122 1 0.0%
Sema.CallerSideDefaultArgExprRequest 79,548 79,548 0 0.0%
Sema.CheckInconsistentImplementationOnlyImportsRequest 8,746 8,746 0 0.0%
Sema.CheckRedeclarationRequest 1,015,623 1,015,623 0 0.0%
Sema.ClassAncestryFlagsRequest 102,420 102,420 0 0.0%
Sema.ClosureHasExplicitResultRequest 93,560 93,560 0 0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.CollectOverriddenDeclsRequest 8,073,115 8,049,390 -23,725 -0.29%
Sema.CompareDeclSpecializationRequest 489,523 489,754 231 0.05%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.CustomAttrNominalRequest 511 511 0 0.0%
Sema.DefaultAndMaxAccessLevelRequest 55,681 55,682 1 0.0%
Sema.DefaultArgumentExprRequest 39,958 39,958 0 0.0%
Sema.DefaultArgumentInitContextRequest 261 261 0 0.0%
Sema.DefaultDefinitionTypeRequest 8,200 8,200 0 0.0%
Sema.DefaultTypeRequest 499,172 499,172 0 0.0%
Sema.DerivativeAttrOriginalDeclRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.DirectLookupRequest 34,730,423 34,719,480 -10,943 -0.03%
Sema.DirectOperatorLookupRequest 1,782,039 1,782,264 225 0.01%
Sema.DirectPrecedenceGroupLookupRequest 615,603 615,603 0 0.0%
Sema.DynamicallyReplacedDeclRequest 1,086,742 1,086,742 0 0.0%
Sema.EmittedMembersRequest 26,735 26,735 0 0.0%
Sema.EnumRawTypeRequest 23,009 23,009 0 0.0%
Sema.EnumRawValuesRequest 10,904 10,904 0 0.0%
Sema.ExistentialConformsToSelfRequest 13,539 13,538 -1 -0.01%
Sema.ExistentialTypeSupportedRequest 16,404 16,404 0 0.0%
Sema.ExpandASTScopeRequest 6,742,550 6,742,576 26 0.0%
Sema.ExtendedNominalRequest 500,139 500,139 0 0.0%
Sema.ExtendedTypeRequest 78,585 78,584 -1 -0.0%
Sema.FragileFunctionKindRequest 1,790,384 1,790,383 -1 -0.0%
Sema.FunctionBuilderTypeRequest 349,385 349,385 0 0.0%
Sema.FunctionOperatorRequest 51,393 51,393 0 0.0%
Sema.GenericParamListRequest 9,485,474 9,460,808 -24,666 -0.26%
Sema.GenericSignatureRequest 2,353,514 2,354,566 1,052 0.04%
Sema.GetDestructorRequest 27,392 27,392 0 0.0%
Sema.HasCircularInheritanceRequest 23,106 23,106 0 0.0%
Sema.HasCircularInheritedProtocolsRequest 10,425 10,425 0 0.0%
Sema.HasCircularRawValueRequest 9,297 9,297 0 0.0%
Sema.HasDefaultInitRequest 53,822 53,822 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.HasDynamicMemberLookupAttributeRequest 585,666 585,558 -108 -0.02%
Sema.HasImplementationOnlyImportsRequest 317,071 317,071 0 0.0%
Sema.HasMemberwiseInitRequest 20,458 20,458 0 0.0%
Sema.HasMissingDesignatedInitializersRequest 25,443 25,443 0 0.0%
Sema.HasUserDefinedDesignatedInitRequest 53,832 53,832 0 0.0%
Sema.InferredGenericSignatureRequest 165,090 165,089 -1 -0.0%
Sema.InheritedDeclsReferencedRequest 5,367,171 5,369,617 2,446 0.05%
Sema.InheritedProtocolsRequest 526,169 526,093 -76 -0.01%
Sema.InheritedTypeRequest 287,023 287,121 98 0.03%
Sema.InheritsSuperclassInitializersRequest 26,463 26,463 0 0.0%
Sema.InitKindRequest 94,872 94,872 0 0.0%
Sema.InterfaceTypeRequest 14,016,616 13,995,804 -20,812 -0.15%
Sema.IsABICompatibleOverrideRequest 140,341 140,341 0 0.0%
Sema.IsAccessorTransparentRequest 319,255 319,255 0 0.0%
Sema.IsCallableNominalTypeRequest 2,177 2,177 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.IsDynamicRequest 1,750,705 1,750,705 0 0.0%
Sema.IsFinalRequest 2,712,747 2,710,173 -2,574 -0.09%
Sema.IsGetterMutatingRequest 432,843 432,843 0 0.0%
Sema.IsImplicitlyUnwrappedOptionalRequest 2,407,810 2,407,925 115 0.0%
Sema.IsObjCRequest 1,562,806 1,562,152 -654 -0.04%
Sema.IsSetterMutatingRequest 375,483 375,483 0 0.0%
Sema.IsStaticRequest 896,557 896,880 323 0.04%
Sema.LazyStoragePropertyRequest 2,499 2,499 0 0.0%
Sema.LookupAllConformancesInContextRequest 85,206 85,206 0 0.0%
Sema.LookupConformanceInModuleRequest 36,697,580 36,678,610 -18,970 -0.05%
Sema.LookupInModuleRequest 6,358,570 6,368,260 9,690 0.15%
Sema.LookupInfixOperatorRequest 79,824 79,824 0 0.0%
Sema.LookupPostfixOperatorRequest 184 184 0 0.0%
Sema.LookupPrecedenceGroupRequest 27,755 27,755 0 0.0%
Sema.LookupPrefixOperatorRequest 563 563 0 0.0%
Sema.MangleLocalTypeDeclRequest 510 510 0 0.0%
Sema.ModuleImplicitImportsRequest 10,030 10,030 0 0.0%
Sema.ModuleQualifiedLookupRequest 2,960,401 2,970,007 9,606 0.32%
Sema.NamedLazyMemberLoadSuccessCount 20,441,923 20,451,697 9,774 0.05%
Sema.NamingPatternRequest 216,486 216,487 1 0.0%
Sema.NeedsNewVTableEntryRequest 686,136 686,136 0 0.0%
Sema.NumAccessorBodiesSynthesized 196,261 196,261 0 0.0%
Sema.NumAccessorsSynthesized 289,314 289,314 0 0.0%
Sema.NumConformancesDeserialized 9,217,624 9,199,912 -17,712 -0.19%
Sema.NumConstraintScopes 31,324,983 31,323,515 -1,468 -0.0%
Sema.NumConstraintsConsideredForEdgeContraction 103,411,642 103,410,690 -952 -0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.NumDeclsDeserialized 71,935,982 71,849,693 -86,289 -0.12%
Sema.NumDeclsTypechecked 1,464,651 1,464,651 0 0.0%
Sema.NumGenericSignatureBuilders 1,131,850 1,129,877 -1,973 -0.17%
Sema.NumLazyIterableDeclContexts 8,193,077 8,191,395 -1,682 -0.02%
Sema.NumLazyRequirementSignatures 782,047 781,757 -290 -0.04%
Sema.NumLazyRequirementSignaturesLoaded 540,312 540,153 -159 -0.03%
Sema.NumLeafScopes 19,982,433 19,981,007 -1,426 -0.01%
Sema.NumTypesDeserialized 22,327,362 22,307,982 -19,380 -0.09%
Sema.NumTypesValidated 654,520 654,521 1 0.0%
Sema.NumUnloadedLazyIterableDeclContexts 5,009,495 5,015,993 6,498 0.13%
Sema.OpaqueReadOwnershipRequest 273,434 273,434 0 0.0%
Sema.OpaqueResultTypeRequest 203 203 0 0.0%
Sema.OperatorPrecedenceGroupRequest 749 749 0 0.0%
Sema.OverriddenDeclsRequest 2,548,642 2,543,187 -5,455 -0.21%
Sema.ParamSpecifierRequest 1,225,221 1,225,221 0 0.0%
Sema.PatternBindingEntryRequest 474,862 474,863 1 0.0%
Sema.PatternTypeRequest 550,632 550,633 1 0.0%
Sema.PreCheckFunctionBuilderRequest 317 317 0 0.0%
Sema.PrimarySourceFilesRequest 10,030 10,030 0 0.0%
Sema.PropertyWrapperBackingPropertyInfoRequest 579,068 579,068 0 0.0%
Sema.PropertyWrapperBackingPropertyTypeRequest 585,034 585,034 0 0.0%
Sema.PropertyWrapperLValuenessRequest 264 264 0 0.0%
Sema.PropertyWrapperMutabilityRequest 617,952 617,952 0 0.0%
Sema.PropertyWrapperTypeInfoRequest 92 92 0 0.0%
Sema.ProtocolRequiresClassRequest 36,621 36,669 48 0.13%
Sema.ProvideDefaultImplForRequest 8,073,115 8,049,390 -23,725 -0.29%
Sema.QualifiedLookupRequest 5,595,718 5,591,552 -4,166 -0.07%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.RequirementRequest 113,413 113,413 0 0.0%
Sema.RequirementSignatureRequest 593,189 593,150 -39 -0.01%
Sema.RequiresOpaqueAccessorsRequest 1,341,622 1,341,622 0 0.0%
Sema.RequiresOpaqueModifyCoroutineRequest 262,673 262,673 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveImplicitMemberRequest 389,105 388,553 -552 -0.14%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.ResolveTypeRequest 3,386,233 3,386,226 -7 -0.0%
Sema.ResultTypeRequest 652,146 652,146 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.SPIGroupsRequest 15,049,159 15,024,358 -24,801 -0.16%
Sema.ScopedImportLookupRequest 1,076 1,076 0 0.0%
Sema.SelfAccessKindRequest 614,541 614,814 273 0.04%
Sema.SelfBoundsFromWhereClauseRequest 1,616,629 1,619,811 3,182 0.2%
Sema.SetterAccessLevelRequest 148,584 148,584 0 0.0%
Sema.SimpleDidSetRequest 2,605,689 2,604,703 -986 -0.04%
Sema.StorageImplInfoRequest 1,480,601 1,480,601 0 0.0%
Sema.StoredPropertiesAndMissingMembersRequest 31,312 31,312 0 0.0%
Sema.StoredPropertiesRequest 323,658 323,658 0 0.0%
Sema.StructuralTypeRequest 2,040 2,040 0 0.0%
Sema.SuperclassDeclRequest 414,621 414,479 -142 -0.03%
Sema.SuperclassTypeRequest 54,504 54,504 0 0.0%
Sema.SynthesizeAccessorRequest 289,314 289,314 0 0.0%
Sema.SynthesizeDefaultInitRequest 5,051 5,051 0 0.0%
Sema.SynthesizeMemberwiseInitRequest 3,580 3,580 0 0.0%
Sema.TypeCheckFunctionBodyAtLocRequest 0 0 0 0.0%
Sema.TypeCheckFunctionBodyRequest 548,967 548,967 0 0.0%
Sema.TypeCheckSourceFileRequest 28,035 28,035 0 0.0%
Sema.TypeDeclsFromWhereClauseRequest 29,796 29,797 1 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
Sema.TypeWitnessRequest 9,157 9,157 0 0.0%
Sema.USRGenerationRequest 9,479,965 9,458,746 -21,219 -0.22%
Sema.UnderlyingTypeDeclsReferencedRequest 267,190 267,167 -23 -0.01%
Sema.UnderlyingTypeRequest 35,047 35,047 0 0.0%
Sema.UnqualifiedLookupRequest 3,805,463 3,805,546 83 0.0%
Sema.ValidatePrecedenceGroupRequest 183,999 183,999 0 0.0%
Sema.ValueWitnessRequest 66,083 66,083 0 0.0%
TBDGen.GenerateTBDRequest 27,735 27,735 0 0.0%

Release

release brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (3)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 56,521,010,174,241 56,497,557,761,830 -23,452,412,411 -0.04%
LLVM.NumLLVMBytesOutput 1,886,559,080 1,886,563,040 3,960 0.0%
time.swift-driver.wall 6555.2s 6531.7s -23.5s -0.36%

release detailed

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (17)
name old new delta delta_pct
AST.NumLoadedModules 27,768 27,768 0 0.0%
AST.NumTotalClangImportedEntities 479,024 479,024 0 0.0%
IRModule.NumIRBasicBlocks 4,976,479 4,976,479 0 0.0%
IRModule.NumIRFunctions 2,904,107 2,904,107 0 0.0%
IRModule.NumIRGlobals 3,404,535 3,404,535 0 0.0%
IRModule.NumIRInsts 50,207,466 50,207,466 0 0.0%
IRModule.NumIRValueSymbols 5,940,440 5,940,440 0 0.0%
LLVM.NumLLVMBytesOutput 1,886,559,080 1,886,563,040 3,960 0.0%
SILModule.NumSILGenFunctions 1,245,342 1,245,342 0 0.0%
SILModule.NumSILOptFunctions 1,052,499 1,052,499 0 0.0%
Sema.NumConformancesDeserialized 3,602,835 3,602,835 0 0.0%
Sema.NumConstraintScopes 31,699,784 31,699,104 -680 -0.0%
Sema.NumDeclsDeserialized 11,303,977 11,303,977 0 0.0%
Sema.NumGenericSignatureBuilders 237,430 237,430 0 0.0%
Sema.NumLazyIterableDeclContexts 1,404,461 1,404,461 0 0.0%
Sema.NumTypesDeserialized 5,481,452 5,481,452 0 0.0%
Sema.NumTypesValidated 500,067 500,071 4 0.0%

@DougGregor
Copy link
Member Author

Sema.NumCyclicOneWayComponentsCollapsed isn't a surprise, because we're building more one-way components with this change.

@DougGregor DougGregor merged commit 409603c into swiftlang:master Jun 11, 2020
@DougGregor DougGregor deleted the function-builder-one-way-params branch June 11, 2020 20:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants