Skip to content

Implementation of "Restrict cross-module struct initializers to be delegating" (#2) #12834

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

Conversation

jrose-apple
Copy link
Contributor

@jrose-apple jrose-apple commented Nov 9, 2017

Implementation of SE-0189. See the first commit for how this affects the Apple SDK overlays.

rdar://problem/34777878

if (TheMemory.isStructInitSelf() &&
!Module.getASTContext().isSwiftVersionAtLeast(5)) {
SILLocation fnLoc = TheMemory.getFunction().getLocation();
if (auto *ctor = fnLoc.getAsASTNode<ConstructorDecl>()) {
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd rather we encode this in the MarkUninitializedInst than add more places in DI where we reach into the AST.

ty = assign->getSrc()->getType();
else if (auto *copyAddr = dyn_cast<CopyAddrInst>(inst))
ty = copyAddr->getSrc()->getType().getObjectType();
return ty && ty == TheMemory.MemorySILType;
Copy link
Contributor

Choose a reason for hiding this comment

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

You should check if the value being assigned to is TheMemory.MemoryInst, instead of just comparing types

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh, of course. I didn't know how to do this and my brain came up with this silly approximation.

Type selfTy;
SILLocation fnLoc = TheMemory.getFunction().getLocation();
if (auto *ctor = fnLoc.getAsASTNode<ConstructorDecl>())
selfTy = ctor->getImplicitSelfDecl()->getType()->getInOutObjectType();
Copy link
Contributor

Choose a reason for hiding this comment

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

Why isn't this always just TheMemory.getType()?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This way preserves (some) sugar, which is nice.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

If there's a better way to get at the decl or sugared type I'd be glad to get rid of the ugly reaching up into the function.

Copy link
Contributor

Choose a reason for hiding this comment

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

How about selfTy.getAsNominalOrBoundGenericNominal()->getDeclaredInterfaceType()?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That doesn't handle constrained extensions (see test case).

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think that matters, instead you can use getDeclaredType() to print the type without any generic arguments at all

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Well, I wanted the generic arguments, but if you think it's better without them then that would make things simpler.

@@ -0,0 +1,174 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module -emit-module-path=%t/OtherModule.swiftmodule %S/Inputs/OtherModule.swift
// RUN: %target-swift-frontend -emit-sil -verify -I %t -swift-version 4 %s > /dev/null
Copy link
Contributor

Choose a reason for hiding this comment

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

Since this is a SIL test, it should go into test/SILOptimizer/

@jrose-apple
Copy link
Contributor Author

@slavapestov, @gottesmm, this is my first attempt at putting the pre-Swift-5 check in DI. What would you like me to change here? [Slava beat me to it as I was making this comment.]

To do:

  • Check this correctly for inlinable constructors in the same module as well (what TypeChecker::diagnoseResilientConstructor is doing but less precisely).
  • Treat all cross-module initializers as delegating in Swift 5 mode and when the other module was built with resilience, and then check that those diagnostics are good.

...as detected by initializing an individual field without having
initialized the whole object (via `self = value`).

This only applies in pre-Swift-5 mode because the next commit will
treat all cross-module struct initializers as delegating in Swift 5.
...unless the struct contains a field that cannot be zero-initialized,
such as a non-nullable pointer.

This suggestion is only made for C structs because 'init()' may not be
the right choice for other structs.
@jrose-apple jrose-apple force-pushed the restrict-cross-module-struct-initializers-2 branch from 14878d3 to 1f12e72 Compare November 9, 2017 22:31
(and when the struct in question is non-fixed-layout, which was
already implemented)

This ensures that these initializers are never fieldwise in Swift 5
mode, which makes it safe for library authors to add new fields.
...being careful to only do it once per initializer. Additionally,
/don't/ offer the suggestion if there was already a conditional
assignment to 'self', because that would wipe it out and the user
should think harder.
These also have to delegate to another initializer even though there
are no stored properties to initialize.
@jrose-apple
Copy link
Contributor Author

Done! Definitely needs review, though.

@swift-ci Please test compiler performance

@jrose-apple
Copy link
Contributor Author

@swift-ci Please test source compatibility

@jrose-apple jrose-apple changed the title [WIP] Implementation of "Restrict cross-module struct initializers to be delegating" (#2) Implementation of "Restrict cross-module struct initializers to be delegating" (#2) Nov 10, 2017
@jrose-apple
Copy link
Contributor Author

@swift-ci Please test compiler performance

@swift-ci
Copy link
Contributor

Build comment file:

Compilation-performance test failed

@jrose-apple jrose-apple force-pushed the restrict-cross-module-struct-initializers-2 branch from 81b0b01 to 93e6123 Compare November 10, 2017 23:29
@jrose-apple
Copy link
Contributor Author

@swift-ci Please test compiler performance

@jrose-apple
Copy link
Contributor Author

@swift-ci Please test source compatibility

1 similar comment
@shahmishal
Copy link
Member

@swift-ci Please test source compatibility

@shahmishal
Copy link
Member

@swift-ci Please test compiler performance

@swift-ci
Copy link
Contributor

Build comment file:

Compilation-performance test failed

Now that struct initializers "just" fall into the delegating case when
they're made inlinable, the only interesting case is class
initializers, which can be checked in a more direct way than what we
were doing before.
@jrose-apple jrose-apple force-pushed the restrict-cross-module-struct-initializers-2 branch from 93e6123 to ec5ba41 Compare November 11, 2017 00:09
@jrose-apple
Copy link
Contributor Author

Aargh. That's what I get for trying to edit files while reinstalling Xcode.

@jrose-apple
Copy link
Contributor Author

@swift-ci Please test compiler performance

@jrose-apple
Copy link
Contributor Author

@swift-ci Please test source compatibility

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 93e6123bc9030fb0a0a6f970b42f98fb0117bda7

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 93e6123bc9030fb0a0a6f970b42f98fb0117bda7

@jrose-apple
Copy link
Contributor Author

I think these are unrelated failures. The perf tests actually did seem to finish, too; the results just didn't get posted because some of the projects had trouble. It looks like the full compiler perf tests produce a massive amount of information too, but in most cases there is no change at all from this except in debug builds, where LLVM IR size went up by at most 0.1% and sometimes even went down.

@swift-ci Please test

@jrose-apple
Copy link
Contributor Author

@swift-ci Please smoke test compiler performance

@swift-ci
Copy link
Contributor

Build comment file:

Summary for master smoketest

Regressions found (see below)

Debug

PR vs. head (debug)

PR vs. head, changed counters (debug)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 100000usec) (115)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 5727 5727 0 0.0%
AST.NumLoadedModules 522 522 0 0.0%
AST.NumTotalClangImportedEntities 18092 18092 0 0.0%
AST.NumUsedConformances 427 427 0 0.0%
IRModule.NumIRBasicBlocks 14774 14774 0 0.0%
IRModule.NumIRFunctions 5342 5342 0 0.0%
IRModule.NumIRGlobals 4662 4662 0 0.0%
IRModule.NumIRInsts 130317 130317 0 0.0%
IRModule.NumIRValueSymbols 8623 8623 0 0.0%
LLVM.NumLLVMBytesOutput 3082372 3082372 0 0.0%
SILModule.NumSILGenFunctions 2458 2458 0 0.0%
SILModule.NumSILOptFunctions 4750 4750 0 0.0%
Sema.NumConformancesDeserialized 34854 34854 0 0.0%
Sema.NumConstraintScopes 39318 39318 0 0.0%
Sema.NumDeclsDeserialized 186159 186159 0 0.0%
Sema.NumDeclsValidated 7137 7137 0 0.0%
Sema.NumFunctionsTypechecked 4043 4043 0 0.0%
Sema.NumGenericSignatureBuilders 3324 3324 0 0.0%
Sema.NumLazyGenericEnvironments 27340 27340 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 2497 2497 0 0.0%
Sema.NumLazyIterableDeclContexts 18998 18998 0 0.0%
Sema.NumTypesDeserialized 151693 151693 0 0.0%
Sema.NumTypesValidated 6298 6298 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 20024 20024 0 0.0%
AST.NumLoadedModules 1323 1323 0 0.0%
AST.NumTotalClangImportedEntities 56416 56416 0 0.0%
AST.NumUsedConformances 842 842 0 0.0%
IRModule.NumIRBasicBlocks 20389 20389 0 0.0%
IRModule.NumIRFunctions 8127 8127 0 0.0%
IRModule.NumIRGlobals 9033 9033 0 0.0%
IRModule.NumIRInsts 183336 183336 0 0.0%
IRModule.NumIRValueSymbols 14797 14797 0 0.0%
LLVM.NumLLVMBytesOutput 5068900 5068888 -12 -0.0%
SILModule.NumSILGenFunctions 4178 4178 0 0.0%
SILModule.NumSILOptFunctions 8603 8603 0 0.0%
Sema.NumConformancesDeserialized 66931 66931 0 0.0%
Sema.NumConstraintScopes 334228 334228 0 0.0%
Sema.NumDeclsDeserialized 343268 343268 0 0.0%
Sema.NumDeclsValidated 9306 9306 0 0.0%
Sema.NumFunctionsTypechecked 12594 12594 0 0.0%
Sema.NumGenericSignatureBuilders 9684 9684 0 0.0%
Sema.NumLazyGenericEnvironments 50914 50914 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 5280 5280 0 0.0%
Sema.NumLazyIterableDeclContexts 48591 48591 0 0.0%
Sema.NumTypesDeserialized 283008 283008 0 0.0%
Sema.NumTypesValidated 14214 14214 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 32490 32490 0 0.0%
AST.NumLoadedModules 3536 3536 0 0.0%
AST.NumTotalClangImportedEntities 97352 97352 0 0.0%
AST.NumUsedConformances 672 672 0 0.0%
IRModule.NumIRBasicBlocks 12060 12060 0 0.0%
IRModule.NumIRFunctions 7117 7117 0 0.0%
IRModule.NumIRGlobals 9660 9660 0 0.0%
IRModule.NumIRInsts 101408 101408 0 0.0%
IRModule.NumIRValueSymbols 14775 14775 0 0.0%
LLVM.NumLLVMBytesOutput 6579528 6579528 0 0.0%
SILModule.NumSILGenFunctions 2892 2892 0 0.0%
SILModule.NumSILOptFunctions 4363 4363 0 0.0%
Sema.NumConformancesDeserialized 47508 47508 0 0.0%
Sema.NumConstraintScopes 54820 54820 0 0.0%
Sema.NumDeclsDeserialized 398813 398813 0 0.0%
Sema.NumDeclsValidated 4704 4704 0 0.0%
Sema.NumFunctionsTypechecked 17692 17692 0 0.0%
Sema.NumGenericSignatureBuilders 21764 21764 0 0.0%
Sema.NumLazyGenericEnvironments 67026 67026 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 9152 9152 0 0.0%
Sema.NumLazyIterableDeclContexts 94390 94390 0 0.0%
Sema.NumTypesDeserialized 365702 365702 0 0.0%
Sema.NumTypesValidated 34130 34130 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 3394 3394 0 0.0%
AST.NumLoadedModules 880 880 0 0.0%
AST.NumTotalClangImportedEntities 8586 8586 0 0.0%
AST.NumUsedConformances 714 714 0 0.0%
IRModule.NumIRBasicBlocks 21202 21202 0 0.0%
IRModule.NumIRFunctions 10789 10789 0 0.0%
IRModule.NumIRGlobals 12416 12416 0 0.0%
IRModule.NumIRInsts 322079 322079 0 0.0%
IRModule.NumIRValueSymbols 19517 19517 0 0.0%
LLVM.NumLLVMBytesOutput 8419592 8419592 0 0.0%
SILModule.NumSILGenFunctions 4813 4813 0 0.0%
SILModule.NumSILOptFunctions 7721 7721 0 0.0%
Sema.NumConformancesDeserialized 48170 48170 0 0.0%
Sema.NumConstraintScopes 36534 36534 0 0.0%
Sema.NumDeclsDeserialized 244864 244864 0 0.0%
Sema.NumDeclsValidated 20546 20546 0 0.0%
Sema.NumFunctionsTypechecked 3532 3532 0 0.0%
Sema.NumGenericSignatureBuilders 8854 8854 0 0.0%
Sema.NumLazyGenericEnvironments 40444 40444 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 5886 5886 0 0.0%
Sema.NumLazyIterableDeclContexts 27672 27672 0 0.0%
Sema.NumTypesDeserialized 209431 209431 0 0.0%
Sema.NumTypesValidated 70786 70786 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Result (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 334 334 0 0.0%
AST.NumLoadedModules 108 108 0 0.0%
AST.NumTotalClangImportedEntities 1064 1064 0 0.0%
AST.NumUsedConformances 62 62 0 0.0%
IRModule.NumIRBasicBlocks 1404 1404 0 0.0%
IRModule.NumIRFunctions 650 650 0 0.0%
IRModule.NumIRGlobals 754 754 0 0.0%
IRModule.NumIRInsts 17029 17029 0 0.0%
IRModule.NumIRValueSymbols 1186 1186 0 0.0%
LLVM.NumLLVMBytesOutput 405812 405812 0 0.0%
SILModule.NumSILGenFunctions 314 314 0 0.0%
SILModule.NumSILOptFunctions 642 642 0 0.0%
Sema.NumConformancesDeserialized 2062 2062 0 0.0%
Sema.NumConstraintScopes 3738 3738 0 0.0%
Sema.NumDeclsDeserialized 22863 22863 0 0.0%
Sema.NumDeclsValidated 516 516 0 0.0%
Sema.NumFunctionsTypechecked 298 298 0 0.0%
Sema.NumGenericSignatureBuilders 472 472 0 0.0%
Sema.NumLazyGenericEnvironments 3824 3824 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 486 486 0 0.0%
Sema.NumLazyIterableDeclContexts 2844 2844 0 0.0%
Sema.NumTypesDeserialized 19878 19878 0 0.0%
Sema.NumTypesValidated 1184 1184 0 0.0%

PR vs. head, changed timers (debug)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (9)
Unchanged (abs(delta) < 0.01% or 1000000usec) in Alamofire (1)
name old new delta delta_pct
time.swift-driver.Alamofire-all-x86_64_apple_macosx10.10-o-Onone.wall 5707526 5583908 -123618 -2.17%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Kingfisher (2)
name old new delta delta_pct
time.swift-driver.Kingfisher-all-armv7_apple_ios8.0-o-Onone.wall 5051137 5091357 40220 0.8%
time.swift-driver.Kingfisher-all-arm64_apple_ios8.0-o-Onone.wall 4828266 4823772 -4494 -0.09%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveCocoa (2)
name old new delta delta_pct
time.swift-driver.ReactiveCocoa-all-armv7_apple_ios8.0-o-Onone.wall 3427373 3475381 48008 1.4%
time.swift-driver.ReactiveCocoa-all-arm64_apple_ios8.0-o-Onone.wall 3472412 3389624 -82788 -2.38%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveSwift (2)
name old new delta delta_pct
time.swift-driver.ReactiveSwift-all-arm64_apple_ios8.0-o-Onone.wall 3238831 3292633 53802 1.66%
time.swift-driver.ReactiveSwift-all-armv7_apple_ios8.0-o-Onone.wall 3345850 3349841 3991 0.12%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Result (2)
name old new delta delta_pct
time.swift-driver.Result-all-arm64_apple_ios8.0-o-Onone.wall 1558164 1583719 25555 1.64%
time.swift-driver.Result-all-armv7_apple_ios8.0-o-Onone.wall 1545163 1558148 12985 0.84%

PR vs. baseline (debug)

PR vs. baseline, changed counters (debug)

Regressed (16)
Regressed in Alamofire (3)
name old new delta delta_pct
SILModule.NumSILOptFunctions 3908 4750 842 21.55% ⛔
Sema.NumConformancesDeserialized 31066 34854 3788 12.19% ⛔
LLVM.NumLLVMBytesOutput 2995540 3082372 86832 2.9% ⛔
Regressed in Kingfisher (3)
name old new delta delta_pct
SILModule.NumSILOptFunctions 7512 8603 1091 14.52% ⛔
LLVM.NumLLVMBytesOutput 4701704 5068888 367184 7.81% ⛔
IRModule.NumIRBasicBlocks 18956 20389 1433 7.56% ⛔
Regressed in ReactiveCocoa (7)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 4775608 6579528 1803920 37.77% ⛔
Sema.NumConstraintScopes 42990 54820 11830 27.52% ⛔
SILModule.NumSILOptFunctions 4068 4363 295 7.25% ⛔
IRModule.NumIRBasicBlocks 11870 12060 190 1.6% ⛔
IRModule.NumIRGlobals 9536 9660 124 1.3% ⛔
IRModule.NumIRValueSymbols 14686 14775 89 0.61% ⛔
IRModule.NumIRFunctions 7080 7117 37 0.52% ⛔
Regressed in ReactiveSwift (3)
name old new delta delta_pct
SILModule.NumSILOptFunctions 6970 7721 751 10.77% ⛔
LLVM.NumLLVMBytesOutput 8049848 8419592 369744 4.59% ⛔
IRModule.NumIRGlobals 12388 12416 28 0.23% ⛔
Improved (72)
Improved in Alamofire (19)
name old new delta delta_pct
SILModule.NumSILGenFunctions 2463 2458 -5 -0.2% ✅
IRModule.NumIRFunctions 5357 5342 -15 -0.28% ✅
IRModule.NumIRValueSymbols 8767 8623 -144 -1.64% ✅
AST.NumUsedConformances 435 427 -8 -1.84% ✅
IRModule.NumIRGlobals 4765 4662 -103 -2.16% ✅
IRModule.NumIRBasicBlocks 15117 14774 -343 -2.27% ✅
Sema.NumDeclsDeserialized 193026 186159 -6867 -3.56% ✅
Sema.NumTypesDeserialized 158862 151693 -7169 -4.51% ✅
Sema.NumLazyGenericEnvironmentsLoaded 2641 2497 -144 -5.45% ✅
Sema.NumLazyGenericEnvironments 29740 27340 -2400 -8.07% ✅
Sema.NumConstraintScopes 43672 39318 -4354 -9.97% ✅
IRModule.NumIRInsts 145724 130317 -15407 -10.57% ✅
Sema.NumLazyIterableDeclContexts 21455 18998 -2457 -11.45% ✅
Sema.NumFunctionsTypechecked 5545 4043 -1502 -27.09% ✅
AST.NumImportedExternalDefinitions 8501 5727 -2774 -32.63% ✅
AST.NumTotalClangImportedEntities 27881 18092 -9789 -35.11% ✅
Sema.NumTypesValidated 18298 6298 -12000 -65.58% ✅
Sema.NumGenericSignatureBuilders 13996 3324 -10672 -76.25% ✅
Sema.NumDeclsValidated 61341 7137 -54204 -88.37% ✅
Improved in Kingfisher (19)
name old new delta delta_pct
SILModule.NumSILGenFunctions 4186 4178 -8 -0.19% ✅
IRModule.NumIRGlobals 9117 9033 -84 -0.92% ✅
IRModule.NumIRFunctions 8204 8127 -77 -0.94% ✅
IRModule.NumIRValueSymbols 14986 14797 -189 -1.26% ✅
AST.NumUsedConformances 858 842 -16 -1.86% ✅
Sema.NumLazyGenericEnvironmentsLoaded 5480 5280 -200 -3.65% ✅
Sema.NumConformancesDeserialized 70852 66931 -3921 -5.53% ✅
IRModule.NumIRInsts 194978 183336 -11642 -5.97% ✅
Sema.NumLazyIterableDeclContexts 54859 48591 -6268 -11.43% ✅
Sema.NumDeclsDeserialized 406573 343268 -63305 -15.57% ✅
Sema.NumTypesDeserialized 344515 283008 -61507 -17.85% ✅
Sema.NumLazyGenericEnvironments 65900 50914 -14986 -22.74% ✅
AST.NumTotalClangImportedEntities 75188 56416 -18772 -24.97% ✅
Sema.NumFunctionsTypechecked 17534 12594 -4940 -28.17% ✅
AST.NumImportedExternalDefinitions 28988 20024 -8964 -30.92% ✅
Sema.NumConstraintScopes 581970 334228 -247742 -42.57% ✅
Sema.NumTypesValidated 27944 14214 -13730 -49.13% ✅
Sema.NumGenericSignatureBuilders 33750 9684 -24066 -71.31% ✅
Sema.NumDeclsValidated 125016 9306 -115710 -92.56% ✅
Improved in ReactiveCocoa (15)
name old new delta delta_pct
SILModule.NumSILGenFunctions 2904 2892 -12 -0.41% ✅
IRModule.NumIRInsts 102753 101408 -1345 -1.31% ✅
AST.NumTotalClangImportedEntities 101754 97352 -4402 -4.33% ✅
Sema.NumFunctionsTypechecked 18516 17692 -824 -4.45% ✅
AST.NumUsedConformances 704 672 -32 -4.55% ✅
AST.NumImportedExternalDefinitions 34112 32490 -1622 -4.75% ✅
Sema.NumLazyGenericEnvironmentsLoaded 10174 9152 -1022 -10.05% ✅
Sema.NumLazyIterableDeclContexts 105954 94390 -11564 -10.91% ✅
Sema.NumConformancesDeserialized 57916 47508 -10408 -17.97% ✅
Sema.NumTypesDeserialized 447750 365702 -82048 -18.32% ✅
Sema.NumDeclsDeserialized 494670 398813 -95857 -19.38% ✅
Sema.NumLazyGenericEnvironments 90692 67026 -23666 -26.09% ✅
Sema.NumTypesValidated 49050 34130 -14920 -30.42% ✅
Sema.NumGenericSignatureBuilders 49468 21764 -27704 -56.0% ✅
Sema.NumDeclsValidated 106644 4704 -101940 -95.59% ✅
Improved in ReactiveSwift (19)
name old new delta delta_pct
SILModule.NumSILGenFunctions 4833 4813 -20 -0.41% ✅
IRModule.NumIRValueSymbols 19619 19517 -102 -0.52% ✅
IRModule.NumIRFunctions 10863 10789 -74 -0.68% ✅
AST.NumUsedConformances 730 714 -16 -2.19% ✅
IRModule.NumIRBasicBlocks 21814 21202 -612 -2.81% ✅
IRModule.NumIRInsts 332161 322079 -10082 -3.04% ✅
Sema.NumConformancesDeserialized 49822 48170 -1652 -3.32% ✅
Sema.NumConstraintScopes 41650 36534 -5116 -12.28% ✅
Sema.NumDeclsDeserialized 291790 244864 -46926 -16.08% ✅
Sema.NumTypesDeserialized 253286 209431 -43855 -17.31% ✅
Sema.NumLazyGenericEnvironments 50740 40444 -10296 -20.29% ✅
Sema.NumFunctionsTypechecked 4538 3532 -1006 -22.17% ✅
Sema.NumLazyGenericEnvironmentsLoaded 7646 5886 -1760 -23.02% ✅
Sema.NumLazyIterableDeclContexts 37546 27672 -9874 -26.3% ✅
Sema.NumTypesValidated 100770 70786 -29984 -29.75% ✅
AST.NumImportedExternalDefinitions 6434 3394 -3040 -47.25% ✅
AST.NumTotalClangImportedEntities 24796 8586 -16210 -65.37% ✅
Sema.NumGenericSignatureBuilders 31134 8854 -22280 -71.56% ✅
Sema.NumDeclsValidated 75348 20546 -54802 -72.73% ✅
Unchanged (abs(delta) < 0.01% or 100000usec) (4)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (1)
name old new delta delta_pct
AST.NumLoadedModules 522 522 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (1)
name old new delta delta_pct
AST.NumLoadedModules 1323 1323 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (1)
name old new delta delta_pct
AST.NumLoadedModules 3536 3536 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (1)
name old new delta delta_pct
AST.NumLoadedModules 880 880 0 0.0%

PR vs. baseline, changed timers (debug)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (0)

Release

PR vs. head (release)

PR vs. head, changed counters (release)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 100000usec) (115)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 881 881 0 0.0%
AST.NumLoadedModules 28 28 0 0.0%
AST.NumTotalClangImportedEntities 3234 3234 0 0.0%
AST.NumUsedConformances 427 427 0 0.0%
IRModule.NumIRBasicBlocks 15645 15645 0 0.0%
IRModule.NumIRFunctions 3764 3764 0 0.0%
IRModule.NumIRGlobals 4440 4440 0 0.0%
IRModule.NumIRInsts 108482 108482 0 0.0%
IRModule.NumIRValueSymbols 7075 7075 0 0.0%
LLVM.NumLLVMBytesOutput 3404500 3404500 0 0.0%
SILModule.NumSILGenFunctions 1860 1860 0 0.0%
SILModule.NumSILOptFunctions 3066 3066 0 0.0%
Sema.NumConformancesDeserialized 15717 15717 0 0.0%
Sema.NumConstraintScopes 36195 36195 0 0.0%
Sema.NumDeclsDeserialized 23522 23522 0 0.0%
Sema.NumDeclsValidated 3268 3268 0 0.0%
Sema.NumFunctionsTypechecked 1104 1104 0 0.0%
Sema.NumGenericSignatureBuilders 417 417 0 0.0%
Sema.NumLazyGenericEnvironments 2668 2668 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 361 361 0 0.0%
Sema.NumLazyIterableDeclContexts 1655 1655 0 0.0%
Sema.NumTypesDeserialized 22976 22976 0 0.0%
Sema.NumTypesValidated 1592 1592 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 3368 3368 0 0.0%
AST.NumLoadedModules 61 61 0 0.0%
AST.NumTotalClangImportedEntities 9816 9816 0 0.0%
AST.NumUsedConformances 842 842 0 0.0%
IRModule.NumIRBasicBlocks 23364 23364 0 0.0%
IRModule.NumIRFunctions 6116 6116 0 0.0%
IRModule.NumIRGlobals 8552 8552 0 0.0%
IRModule.NumIRInsts 157277 157277 0 0.0%
IRModule.NumIRValueSymbols 13066 13066 0 0.0%
LLVM.NumLLVMBytesOutput 5992300 5992292 -8 -0.0%
SILModule.NumSILGenFunctions 3056 3056 0 0.0%
SILModule.NumSILOptFunctions 5832 5832 0 0.0%
Sema.NumConformancesDeserialized 31636 31636 0 0.0%
Sema.NumConstraintScopes 323218 323218 0 0.0%
Sema.NumDeclsDeserialized 46814 46814 0 0.0%
Sema.NumDeclsValidated 4144 4144 0 0.0%
Sema.NumFunctionsTypechecked 2848 2848 0 0.0%
Sema.NumGenericSignatureBuilders 1087 1087 0 0.0%
Sema.NumLazyGenericEnvironments 4902 4902 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 822 822 0 0.0%
Sema.NumLazyIterableDeclContexts 3525 3525 0 0.0%
Sema.NumTypesDeserialized 45174 45174 0 0.0%
Sema.NumTypesValidated 2740 2740 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 3132 3132 0 0.0%
AST.NumLoadedModules 66 66 0 0.0%
AST.NumTotalClangImportedEntities 7434 7434 0 0.0%
AST.NumUsedConformances 672 672 0 0.0%
IRModule.NumIRBasicBlocks 8987 8987 0 0.0%
IRModule.NumIRFunctions 5007 5007 0 0.0%
IRModule.NumIRGlobals 8487 8487 0 0.0%
IRModule.NumIRInsts 65364 65364 0 0.0%
IRModule.NumIRValueSymbols 12228 12228 0 0.0%
LLVM.NumLLVMBytesOutput 8823276 8823276 0 0.0%
SILModule.NumSILGenFunctions 1913 1913 0 0.0%
SILModule.NumSILOptFunctions 3145 3145 0 0.0%
Sema.NumConformancesDeserialized 20644 20644 0 0.0%
Sema.NumConstraintScopes 37364 37364 0 0.0%
Sema.NumDeclsDeserialized 41724 41724 0 0.0%
Sema.NumDeclsValidated 2384 2384 0 0.0%
Sema.NumFunctionsTypechecked 2482 2482 0 0.0%
Sema.NumGenericSignatureBuilders 1284 1284 0 0.0%
Sema.NumLazyGenericEnvironments 5952 5952 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 692 692 0 0.0%
Sema.NumLazyIterableDeclContexts 3778 3778 0 0.0%
Sema.NumTypesDeserialized 38755 38755 0 0.0%
Sema.NumTypesValidated 2372 2372 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 512 512 0 0.0%
AST.NumLoadedModules 38 38 0 0.0%
AST.NumTotalClangImportedEntities 2102 2102 0 0.0%
AST.NumUsedConformances 720 720 0 0.0%
IRModule.NumIRBasicBlocks 22383 22383 0 0.0%
IRModule.NumIRFunctions 10311 10311 0 0.0%
IRModule.NumIRGlobals 11636 11636 0 0.0%
IRModule.NumIRInsts 261775 261775 0 0.0%
IRModule.NumIRValueSymbols 19645 19645 0 0.0%
LLVM.NumLLVMBytesOutput 10157732 10157732 0 0.0%
SILModule.NumSILGenFunctions 3735 3735 0 0.0%
SILModule.NumSILOptFunctions 6934 6934 0 0.0%
Sema.NumConformancesDeserialized 26987 26987 0 0.0%
Sema.NumConstraintScopes 34928 34928 0 0.0%
Sema.NumDeclsDeserialized 42515 42515 0 0.0%
Sema.NumDeclsValidated 7570 7570 0 0.0%
Sema.NumFunctionsTypechecked 1976 1976 0 0.0%
Sema.NumGenericSignatureBuilders 1517 1517 0 0.0%
Sema.NumLazyGenericEnvironments 4936 4936 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 810 810 0 0.0%
Sema.NumLazyIterableDeclContexts 2869 2869 0 0.0%
Sema.NumTypesDeserialized 39464 39464 0 0.0%
Sema.NumTypesValidated 23594 23594 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Result (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 316 316 0 0.0%
AST.NumLoadedModules 34 34 0 0.0%
AST.NumTotalClangImportedEntities 1300 1300 0 0.0%
AST.NumUsedConformances 62 62 0 0.0%
IRModule.NumIRBasicBlocks 2118 2118 0 0.0%
IRModule.NumIRFunctions 644 644 0 0.0%
IRModule.NumIRGlobals 683 683 0 0.0%
IRModule.NumIRInsts 19449 19449 0 0.0%
IRModule.NumIRValueSymbols 1211 1211 0 0.0%
LLVM.NumLLVMBytesOutput 490532 490532 0 0.0%
SILModule.NumSILGenFunctions 292 292 0 0.0%
SILModule.NumSILOptFunctions 807 807 0 0.0%
Sema.NumConformancesDeserialized 4246 4246 0 0.0%
Sema.NumConstraintScopes 3736 3736 0 0.0%
Sema.NumDeclsDeserialized 22894 22894 0 0.0%
Sema.NumDeclsValidated 470 470 0 0.0%
Sema.NumFunctionsTypechecked 296 296 0 0.0%
Sema.NumGenericSignatureBuilders 370 370 0 0.0%
Sema.NumLazyGenericEnvironments 3798 3798 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 338 338 0 0.0%
Sema.NumLazyIterableDeclContexts 1962 1962 0 0.0%
Sema.NumTypesDeserialized 19978 19978 0 0.0%
Sema.NumTypesValidated 990 990 0 0.0%

PR vs. head, changed timers (release)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (9)
Unchanged (abs(delta) < 0.01% or 1000000usec) in Alamofire (1)
name old new delta delta_pct
time.swift-driver.Alamofire-all-x86_64_apple_macosx10.10-o-O.wall 10598700 10615450 16750 0.16%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Kingfisher (2)
name old new delta delta_pct
time.swift-driver.Kingfisher-all-armv7_apple_ios8.0-o-O.wall 11201480 11218470 16990 0.15%
time.swift-driver.Kingfisher-all-arm64_apple_ios8.0-o-O.wall 11004110 10933350 -70760 -0.64%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveCocoa (2)
name old new delta delta_pct
time.swift-driver.ReactiveCocoa-all-arm64_apple_ios8.0-o-O.wall 5002851 4976725 -26126 -0.52%
time.swift-driver.ReactiveCocoa-all-armv7_apple_ios8.0-o-O.wall 4962872 4936033 -26839 -0.54%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveSwift (2)
name old new delta delta_pct
time.swift-driver.ReactiveSwift-all-armv7_apple_ios8.0-o-O.wall 10731950 10771000 39050 0.36%
time.swift-driver.ReactiveSwift-all-arm64_apple_ios8.0-o-O.wall 10494860 10461460 -33400 -0.32%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Result (2)
name old new delta delta_pct
time.swift-driver.Result-all-arm64_apple_ios8.0-o-O.wall 2725454 2724734 -720 -0.03%
time.swift-driver.Result-all-armv7_apple_ios8.0-o-O.wall 2773542 2765964 -7578 -0.27%

PR vs. baseline (release)

PR vs. baseline, changed counters (release)

Regressed (15)
Regressed in Alamofire (3)
name old new delta delta_pct
AST.NumTotalClangImportedEntities 2920 3234 314 10.75% ⛔
LLVM.NumLLVMBytesOutput 3172156 3404500 232344 7.32% ⛔
SILModule.NumSILOptFunctions 2991 3066 75 2.51% ⛔
Regressed in Kingfisher (4)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 5462712 5992292 529580 9.69% ⛔
AST.NumTotalClangImportedEntities 9086 9816 730 8.03% ⛔
Sema.NumConformancesDeserialized 30795 31636 841 2.73% ⛔
SILModule.NumSILOptFunctions 5723 5832 109 1.9% ⛔
Regressed in ReactiveCocoa (4)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 5480320 8823276 3342956 61.0% ⛔
Sema.NumConstraintScopes 23810 37364 13554 56.93% ⛔
SILModule.NumSILOptFunctions 2915 3145 230 7.89% ⛔
AST.NumTotalClangImportedEntities 7270 7434 164 2.26% ⛔
Regressed in ReactiveSwift (4)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 9452416 10157732 705316 7.46% ⛔
SILModule.NumSILOptFunctions 6852 6934 82 1.2% ⛔
Sema.NumConformancesDeserialized 26845 26987 142 0.53% ⛔
IRModule.NumIRGlobals 11628 11636 8 0.07% ⛔
Improved (67)
Improved in Alamofire (17)
name old new delta delta_pct
SILModule.NumSILGenFunctions 1861 1860 -1 -0.05% ✅
IRModule.NumIRFunctions 3819 3764 -55 -1.44% ✅
IRModule.NumIRGlobals 4521 4440 -81 -1.79% ✅
AST.NumUsedConformances 435 427 -8 -1.84% ✅
IRModule.NumIRValueSymbols 7218 7075 -143 -1.98% ✅
Sema.NumLazyIterableDeclContexts 1716 1655 -61 -3.55% ✅
Sema.NumTypesDeserialized 23832 22976 -856 -3.59% ✅
Sema.NumConformancesDeserialized 16433 15717 -716 -4.36% ✅
Sema.NumLazyGenericEnvironments 2814 2668 -146 -5.19% ✅
Sema.NumDeclsDeserialized 24875 23522 -1353 -5.44% ✅
Sema.NumLazyGenericEnvironmentsLoaded 383 361 -22 -5.74% ✅
Sema.NumConstraintScopes 38683 36195 -2488 -6.43% ✅
IRModule.NumIRBasicBlocks 16869 15645 -1224 -7.26% ✅
IRModule.NumIRInsts 123248 108482 -14766 -11.98% ✅
Sema.NumTypesValidated 1977 1592 -385 -19.47% ✅
Sema.NumGenericSignatureBuilders 1595 417 -1178 -73.86% ✅
Sema.NumDeclsValidated 17283 3268 -14015 -81.09% ✅
Improved in Kingfisher (15)
name old new delta delta_pct
IRModule.NumIRGlobals 8627 8552 -75 -0.87% ✅
IRModule.NumIRValueSymbols 13308 13066 -242 -1.82% ✅
AST.NumUsedConformances 858 842 -16 -1.86% ✅
Sema.NumTypesDeserialized 46208 45174 -1034 -2.24% ✅
IRModule.NumIRFunctions 6265 6116 -149 -2.38% ✅
Sema.NumLazyIterableDeclContexts 3642 3525 -117 -3.21% ✅
Sema.NumDeclsDeserialized 48980 46814 -2166 -4.42% ✅
Sema.NumLazyGenericEnvironments 5174 4902 -272 -5.26% ✅
Sema.NumLazyGenericEnvironmentsLoaded 876 822 -54 -6.16% ✅
IRModule.NumIRBasicBlocks 25356 23364 -1992 -7.86% ✅
IRModule.NumIRInsts 189828 157277 -32551 -17.15% ✅
Sema.NumTypesValidated 3794 2740 -1054 -27.78% ✅
Sema.NumConstraintScopes 564928 323218 -241710 -42.79% ✅
Sema.NumGenericSignatureBuilders 3925 1087 -2838 -72.31% ✅
Sema.NumDeclsValidated 35702 4144 -31558 -88.39% ✅
Improved in ReactiveCocoa (17)
name old new delta delta_pct
Sema.NumFunctionsTypechecked 2484 2482 -2 -0.08% ✅
AST.NumImportedExternalDefinitions 3138 3132 -6 -0.19% ✅
SILModule.NumSILGenFunctions 1917 1913 -4 -0.21% ✅
IRModule.NumIRValueSymbols 12322 12228 -94 -0.76% ✅
Sema.NumConformancesDeserialized 20926 20644 -282 -1.35% ✅
IRModule.NumIRFunctions 5090 5007 -83 -1.63% ✅
Sema.NumDeclsDeserialized 42739 41724 -1015 -2.37% ✅
Sema.NumTypesDeserialized 39750 38755 -995 -2.5% ✅
Sema.NumLazyIterableDeclContexts 3880 3778 -102 -2.63% ✅
Sema.NumLazyGenericEnvironments 6210 5952 -258 -4.15% ✅
AST.NumUsedConformances 704 672 -32 -4.55% ✅
IRModule.NumIRBasicBlocks 9437 8987 -450 -4.77% ✅
Sema.NumLazyGenericEnvironmentsLoaded 728 692 -36 -4.95% ✅
IRModule.NumIRInsts 69895 65364 -4531 -6.48% ✅
Sema.NumTypesValidated 4072 2372 -1700 -41.75% ✅
Sema.NumGenericSignatureBuilders 3612 1284 -2328 -64.45% ✅
Sema.NumDeclsValidated 20206 2384 -17822 -88.2% ✅
Improved in ReactiveSwift (18)
name old new delta delta_pct
SILModule.NumSILGenFunctions 3755 3735 -20 -0.53% ✅
Sema.NumFunctionsTypechecked 1990 1976 -14 -0.7% ✅
AST.NumUsedConformances 732 720 -12 -1.64% ✅
IRModule.NumIRValueSymbols 19993 19645 -348 -1.74% ✅
IRModule.NumIRFunctions 10605 10311 -294 -2.77% ✅
IRModule.NumIRInsts 271570 261775 -9795 -3.61% ✅
Sema.NumTypesDeserialized 40957 39464 -1493 -3.65% ✅
Sema.NumLazyIterableDeclContexts 2982 2869 -113 -3.79% ✅
Sema.NumLazyGenericEnvironments 5196 4936 -260 -5.0% ✅
Sema.NumDeclsDeserialized 44930 42515 -2415 -5.38% ✅
IRModule.NumIRBasicBlocks 23918 22383 -1535 -6.42% ✅
Sema.NumLazyGenericEnvironmentsLoaded 890 810 -80 -8.99% ✅
Sema.NumConstraintScopes 38598 34928 -3670 -9.51% ✅
Sema.NumTypesValidated 26352 23594 -2758 -10.47% ✅
AST.NumImportedExternalDefinitions 592 512 -80 -13.51% ✅
AST.NumTotalClangImportedEntities 2670 2102 -568 -21.27% ✅
Sema.NumGenericSignatureBuilders 4390 1517 -2873 -65.44% ✅
Sema.NumDeclsValidated 28656 7570 -21086 -73.58% ✅
Unchanged (abs(delta) < 0.01% or 100000usec) (10)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (3)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 881 881 0 0.0%
AST.NumLoadedModules 28 28 0 0.0%
Sema.NumFunctionsTypechecked 1104 1104 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (4)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 3368 3368 0 0.0%
AST.NumLoadedModules 61 61 0 0.0%
SILModule.NumSILGenFunctions 3056 3056 0 0.0%
Sema.NumFunctionsTypechecked 2848 2848 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (2)
name old new delta delta_pct
IRModule.NumIRGlobals 8486 8487 1 0.01%
AST.NumLoadedModules 66 66 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (1)
name old new delta delta_pct
AST.NumLoadedModules 38 38 0 0.0%

PR vs. baseline, changed timers (release)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (0)
Last baseline commit on smoketest-master-debug.csv
commit 051207462e73c88493bbf2e49795efb88cb6c1ec
Author: Graydon Hoare 
Date:   Tue Oct 10 12:33:02 2017 -0700

    Update smoketest baselines for Swift version 4.0.1-dev (LLVM 2dedb62a0b, Clang ab7472e733, Swift 866e511daa)

Last baseline commit on smoketest-master-release.csv

commit 051207462e73c88493bbf2e49795efb88cb6c1ec
Author: Graydon Hoare 
Date:   Tue Oct 10 12:33:02 2017 -0700

    Update smoketest baselines for Swift version 4.0.1-dev (LLVM 2dedb62a0b, Clang ab7472e733, Swift 866e511daa)


@shahmishal
Copy link
Member

@swift-ci build toolchain

@shahmishal
Copy link
Member

Unable to build the toolchain due to

/Users/buildnode/jenkins/workspace/swift-PR-toolchain-osx/branch-master/lldb/source/Plugins/ExpressionParser/Swift/SwiftASTManipulator.cpp:1377:21: error: no member named 'mapTypeOutOfContext' in 'swift::TypeBase'
          var_type->mapTypeOutOfContext());
          ~~~~~~~~  ^
1 error generated.

@xedin
Copy link
Contributor

xedin commented Nov 16, 2017

/cc @slavapestov, @shahmishal you’d want a clean build i think

@tkremenek
Copy link
Member

@swift-ci clean test

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - ec5ba41

@jrose-apple
Copy link
Contributor Author

@swift-ci Please clean test Linux

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - ec5ba41

@jrose-apple
Copy link
Contributor Author

@swift-ci Please clean test Linux

@jrose-apple
Copy link
Contributor Author

@swift-ci Please test

@tkremenek
Copy link
Member

@swift-ci clean test

@tkremenek
Copy link
Member

@shahmishal are the tests even running on this one?

@shahmishal
Copy link
Member

@shahmishal
Copy link
Member

Linux passed - https://ci.swift.org/job/swift-PR-Linux/1645/

@shahmishal
Copy link
Member

@swift-ci build toolchain

@swift-ci
Copy link
Contributor

Linux Toolchain (Ubuntu 16.04)
Download Toolchain
Git Sha - ec5ba41

Install command
tar zxf swift-PR-12834-2-ubuntu16.04.tar.gz
More info

@swift-ci
Copy link
Contributor

macOS Toolchain
Download Toolchain
Git Sha - ec5ba41

Install command
tar -zxf swift-PR-12834-7-osx.tar.gz --directory ~/

@jrose-apple
Copy link
Contributor Author

And the compiler perf test success/failure isn't significant—what's important is that the numbers didn't go up for this PR, which they didn't. Merging!

@jrose-apple jrose-apple added swift evolution approved Flag → feature: A feature that was approved through the Swift evolution process and removed swift evolution pending discussion Flag → feature: A feature that has a Swift evolution proposal currently in review labels Nov 30, 2017
@jrose-apple jrose-apple merged commit 8f8f000 into swiftlang:master Nov 30, 2017
@jrose-apple jrose-apple deleted the restrict-cross-module-struct-initializers-2 branch November 30, 2017 21:32
@@ -327,7 +328,6 @@ extension Decimal {

var i = UInt32(0)
// this is a bit ugly but it is the closest approximation of the C initializer that can be expressed here.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this comment can be removed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

*shrug* I thought the loop still counted as ugly, but maybe the comment was just referring to the tuple of zeros. @phausler?

@AnthonyLatsis AnthonyLatsis added swift evolution implemented Flag → feature: A feature that was approved through the Swift evolution process and implemented and removed swift evolution approved Flag → feature: A feature that was approved through the Swift evolution process labels Apr 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
swift evolution implemented Flag → feature: A feature that was approved through the Swift evolution process and implemented
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants