Skip to content

IRGen for conditional conformances #12531

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

Merged
merged 13 commits into from
Nov 10, 2017

Conversation

huonw
Copy link
Contributor

@huonw huonw commented Oct 20, 2017

The last commit is me kinda sorta maybe guessing at what substitutions/ProtocolConformances need to be glued together, in a way that works in some cases... but doesn't even compile the standard library (which has no conditional conformances atm).

@moiseev
Copy link
Contributor

moiseev commented Oct 20, 2017

wip__irgen_for_conditional_conformances_by_huonw pull_request__12531 _apple_swift
That's a lot of changed files...

@slavapestov
Copy link
Contributor

@huonw I think it would be easier if you land the first few changes in a separate PR

@huonw
Copy link
Contributor Author

huonw commented Oct 20, 2017

That's a lot of changed files...

Fortunately most of those are just updating tests for a SIL printing/parsing change.


@huonw I think it would be easier if you land the first few changes in a separate PR

Yes, that's #12430. Even with that one currently lumped in, I think you'll be able to give meaningful input on specifically the last commit, which is the one I know is wrong: 99f1c89

auto type = req.getFirstType()->getCanonicalType();
auto proto = req.getSecondType()->castTo<ProtocolType>()->getDecl();

auto reqConformance = subMap.lookupConformance(type, proto);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

type here could be concrete, which is why I've hacked SubstitutionMap/GenericSignature to support pulling those conformances from the SubstitutionList into the generic signature too.

One alternative I just thought of is to walk through the conditional requirements on the normal conformance, so that the requirements themselves phrased in terms of generic parameters, and then use the substitution map to convert these into concrete types and also this call will work fine without needing hacks elsewhere.

auto specialized = conformance;
if (!conformance.isConcrete() ||
conformance.getConcrete()->getKind() == ProtocolConformanceKind::Normal)
specialized = conformance.subst(argType, QuerySubstitutionMap{subs},
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm just making this up/guessing, in an attempt to get a specialized conformance.

@slavapestov
Copy link
Contributor

We figured out the solution offline. Turns out there's a utility method in the devirtualizer that does exactly what we need here.

@huonw huonw force-pushed the conditional-conformance-irgen branch from 99f1c89 to dc28682 Compare October 26, 2017 21:54
@huonw huonw changed the title [WIP] IRGen for conditional conformances IRGen for conditional conformances Oct 26, 2017
@huonw huonw force-pushed the conditional-conformance-irgen branch 4 times, most recently from d8b9760 to 701abfd Compare November 1, 2017 21:15
@huonw
Copy link
Contributor Author

huonw commented Nov 1, 2017

Rebased; it's now a more reasonable 37 files changed.

@huonw huonw force-pushed the conditional-conformance-irgen branch from 701abfd to f43c607 Compare November 7, 2017 03:40
@huonw
Copy link
Contributor Author

huonw commented Nov 7, 2017

@swift-ci please smoke test.

Copy link
Member

@DougGregor DougGregor left a comment

Choose a reason for hiding this comment

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

I don't feel competent to review all of the IRGen changes, but the rest looks quite good (only a few comments);

struct ConditionalConformance {
CanType Requirement;
ProtocolDecl *Protocol;
ProtocolConformanceRef Conformance;
Copy link
Member

Choose a reason for hiding this comment

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

Isn't Protocol the same as Conformance.getRequirement()?

auto canReplacement = replacement->getCanonicalType();
if (!canReplacement->isTypeParameter() &&
!canReplacement->is<ArchetypeType>()) {
result.addConformance(canReplacement, conformances[i]);
Copy link
Member

Choose a reason for hiding this comment

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

It surprises me that we need this.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We don't. Vestigates of a hack that I seemingly didn't fully remove.

@@ -288,6 +286,45 @@ GenericSignature *ProtocolConformance::getGenericSignature() const {
llvm_unreachable("Unhandled ProtocolConformanceKind in switch.");
}

SubstitutionMap ProtocolConformance::getSubstitutions(ModuleDecl *M) const {
Copy link
Member

Choose a reason for hiding this comment

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

There's an existing SpecializedProtocolConformance::getSubstitutionMap(). Should that be generalized to cover this case as well, i.e., by pushing it up to ProtocolConformance::getSubstitutionMap()?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

SpecializedProtocolConformance::getSubstitutionMap doesn't need the ModuleDecl, so I think it makes sense to retain it at least as an implementation detail of this and for internal use in SpecializedProtocolConformance.

@@ -712,48 +712,6 @@ DevirtualizationResult swift::tryDevirtualizeClassMethod(FullApplySite AI,
// Witness Method Optimization
//===----------------------------------------------------------------------===//

static SubstitutionMap
getSubstitutionsForProtocolConformance(ModuleDecl *M,
Copy link
Member

Choose a reason for hiding this comment

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

Yay, elimination of a duplicate utility method!

@@ -0,0 +1,153 @@
func takes_p1<T: P1>(_: T.Type) {}
Copy link
Member

Choose a reason for hiding this comment

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

Missing RUN line

Copy link
Contributor

Choose a reason for hiding this comment

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

Nah... It's only necessary if you want to run the test.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, it's easier to get all tests passing this way. (Thanks.)

@huonw huonw force-pushed the conditional-conformance-irgen branch from f43c607 to ad525fc Compare November 8, 2017 00:48
@huonw
Copy link
Contributor Author

huonw commented Nov 8, 2017

Updated with @DougGregor's review. Still need to rebase.

Copy link
Contributor

@slavapestov slavapestov left a comment

Choose a reason for hiding this comment

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

Looking good! Needs some more tests:

  • SIL parser test for the new witness table syntax
  • Executable test building multiple modules to test serialization/deserialization
  • Optimizer test for devirtualizing conditional conformance calls, make sure substitution works as expected


// Assert that the number of witness tables passed in is the number required
// for the conditional conformances of this witness table.
auto failBB = IGF.createBasicBlock("bad_witness_table_count");
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 we actually want to check this at runtime, although it might be useful for debugging for now

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, I think it's good for debugging, especially while we bring up the dynamic casting.


ConformanceInfo *info;
// Drill down to the root normal
Copy link
Contributor

Choose a reason for hiding this comment

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

... conformance?

@@ -0,0 +1,84 @@
// RUN: %target-run-simple-swift | %FileCheck %s
Copy link
Contributor

Choose a reason for hiding this comment

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

Execution tests should go into test/Interpreter/

@@ -0,0 +1,84 @@
// RUN: %target-run-simple-swift | %FileCheck %s

Copy link
Contributor

Choose a reason for hiding this comment

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

Please add '// REQUIRES: executable_test'

@@ -0,0 +1,33 @@
// RUN: %empty-directory(%t)
// The file that's `main` needs to be called that.
// RUN: cp %s %t/main.swift
Copy link
Contributor

Choose a reason for hiding this comment

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

REQUIRES: executable_test, should go into test/Interpreter/.

You can put common files for conditional conformance tests in test/Inputs/

@@ -94,7 +94,7 @@ sil hidden_external @takingEmptyAndQ : $@convention(thin) <τ_0_0 where τ_0_0
// CHECK: [[GENPARAMSADDR:%.*]] = bitcast %swift.type* [[TY]] to %swift.type**
// CHECK: [[PARAMTYADDR:%.*]] = getelementptr inbounds %swift.type*, %swift.type** [[GENPARAMSADDR]], {{(i64 10|i32 13)}}
// CHECK: %"BaseProducer<\CF\84_0_1>" = load %swift.type*, %swift.type** [[PARAMTYADDR]]
// CHECK: [[WITNESS:%.*]] = call i8** @_T023partial_apply_forwarder12BaseProducerVyxGAA1QAAWa(%swift.type* %"BaseProducer<\CF\84_0_1>")
// CHECK: [[WITNESS:%.*]] = call i8** @_T023partial_apply_forwarder12BaseProducerVyxGAA1QAAWa(%swift.type* %"BaseProducer<\CF\84_0_1>", i8*** null, {{i32|i64}} 0)
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe witness table instantiation for non-conditional conformances should pass undef for the last two arguments -- and the witness table accessor should not read them in the non-conditional case

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think it would be good to at least retain the 0, so that we can retain the dynamic assertion for now. I will leave fixmes and file a radar about removing/optimizing when we're confident.

@@ -296,7 +296,13 @@ bb0(%0 : $*ResilientConformingType):

// CHECK-LABEL: define{{( protected)?}} i8** @_T019protocol_resilience23ResilientConformingTypeV010resilient_A005OtherC8ProtocolAAWa()
// CHECK-NEXT: entry:
// CHECK-NEXT: [[WTABLE:%.*]] = call i8** @swift_rt_swift_getGenericWitnessTable(%swift.generic_witness_table_cache* @_T019protocol_resilience23ResilientConformingTypeV010resilient_A005OtherC8ProtocolAAWG, %swift.type* null, i8** null)
// CHECK-NEXT: %conditional.tables = alloca %swift.witness_table_slice, align 8
Copy link
Contributor

Choose a reason for hiding this comment

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

See above, this is unnecessary code size bloat in the unconditional conformance case

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I guess we can skip storing the i8*** but the 0 is important, I think, as above.

huonw added 9 commits November 8, 2017 17:02
…ormance tables.

Pointers to the witness tables of any conditional conformances are placed into
private data, closest to the base pointer, i.e. wtable_ptr[-1] will be the
first (if any) conditional conformance witness table. These always need to be
provided by the context, and copied in when the witness table is instantiated,
making reserving space easy: increment the size of the private data section.
A concrete conformance may involve conditional conformances, which are witness
tables that we can access from the original conformance's one. We need to track
metadata and be able to follow it in a metadata path.
This requires the witness table accessor function to gain two new parameters: a
pointer to an array of witness tables and their count. These are then passed down
to the instantiation function which reads them out of the array and writes them
into the newly-allocated witness table.

We use the count to assert that the number of conditional witness tables passed
in is what the protocol conformance expects, which is especially useful while
the feature is still experimental: it is a compiler/runtime bug if an incorrect
number is passed.
…ents from the self witness table.

Conditional requirements shouldn't appear in witness_method's (IR) signature,
since they differ from conformance to conformance. PolymorphicConvention just
needs to consider these fulfilled by the self witness table, since they
can/should be pulled out of there.
…od thunks.

These are passed down to the "true" function, and so need to be made available.
…able accessor.

When calling an accessor, one has to pull the witness tables for each
conditional conformance requirement into a(n appropriately ordered) buffer that
is passed to the accessor. This is simple enough, if the appropriate
specialization of the relevant conformances are known, which the compiler didn't
track deep enough until now.
@huonw huonw force-pushed the conditional-conformance-irgen branch from ad525fc to 920cd72 Compare November 9, 2017 01:03
@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw huonw force-pushed the conditional-conformance-irgen branch from d250ca4 to 67c9fa3 Compare November 10, 2017 02:06
@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

4 similar comments
@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

2 similar comments
@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test.

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test compiler performance

@ematejska
Copy link
Contributor

@swift-ci please smoke test

@ematejska
Copy link
Contributor

@swift-ci please smoke test compiler performance

@huonw
Copy link
Contributor Author

huonw commented Nov 10, 2017

@swift-ci please smoke test Linux platform

@ematejska
Copy link
Contributor

@swift-ci Please test source compatibility

@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 (10)
Regressed in Alamofire (1)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 3078356 3079156 800 0.03% ⛔
Regressed in ReactiveCocoa (3)
name old new delta delta_pct
IRModule.NumIRInsts 101240 101354 114 0.11% ⛔
IRModule.NumIRBasicBlocks 12060 12072 12 0.1% ⛔
IRModule.NumIRFunctions 7121 7123 2 0.03% ⛔
Regressed in ReactiveSwift (5)
name old new delta delta_pct
IRModule.NumIRBasicBlocks 21146 21190 44 0.21% ⛔
IRModule.NumIRInsts 321507 321849 342 0.11% ⛔
LLVM.NumLLVMBytesOutput 8413880 8421000 7120 0.08% ⛔
IRModule.NumIRFunctions 10785 10793 8 0.07% ⛔
IRModule.NumIRValueSymbols 19513 19521 8 0.04% ⛔
Regressed in Result (1)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 405216 405312 96 0.02% ⛔
Improved (0)
Unchanged (abs(delta) < 0.01% or 100000usec) (105)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (22)
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 14688 14688 0 0.0%
IRModule.NumIRFunctions 5322 5322 0 0.0%
IRModule.NumIRGlobals 4660 4660 0 0.0%
IRModule.NumIRInsts 129896 129896 0 0.0%
IRModule.NumIRValueSymbols 8601 8601 0 0.0%
SILModule.NumSILGenFunctions 2458 2458 0 0.0%
SILModule.NumSILOptFunctions 4747 4747 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 7138 7138 0 0.0%
Sema.NumFunctionsTypechecked 4043 4043 0 0.0%
Sema.NumGenericSignatureBuilders 3306 3306 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
LLVM.NumLLVMBytesOutput 5068060 5068572 512 0.01%
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 20321 20321 0 0.0%
IRModule.NumIRFunctions 8123 8123 0 0.0%
IRModule.NumIRGlobals 9033 9033 0 0.0%
IRModule.NumIRInsts 182798 182798 0 0.0%
IRModule.NumIRValueSymbols 14793 14793 0 0.0%
SILModule.NumSILGenFunctions 4178 4178 0 0.0%
SILModule.NumSILOptFunctions 8603 8603 0 0.0%
Sema.NumConformancesDeserialized 66935 66935 0 0.0%
Sema.NumConstraintScopes 334228 334228 0 0.0%
Sema.NumDeclsDeserialized 343260 343260 0 0.0%
Sema.NumDeclsValidated 9306 9306 0 0.0%
Sema.NumFunctionsTypechecked 12594 12594 0 0.0%
Sema.NumGenericSignatureBuilders 9642 9642 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 283038 283038 0 0.0%
Sema.NumTypesValidated 14214 14214 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (20)
name old new delta delta_pct
IRModule.NumIRValueSymbols 14771 14773 2 0.01%
LLVM.NumLLVMBytesOutput 6579620 6580384 764 0.01%
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.NumIRGlobals 9652 9652 0 0.0%
SILModule.NumSILGenFunctions 2892 2892 0 0.0%
SILModule.NumSILOptFunctions 4369 4369 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 21664 21664 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 365806 365806 0 0.0%
Sema.NumTypesValidated 34130 34130 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (18)
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.NumIRGlobals 12416 12416 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 8826 8826 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 209453 209453 0 0.0%
Sema.NumTypesValidated 70786 70786 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Result (22)
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 1392 1392 0 0.0%
IRModule.NumIRFunctions 646 646 0 0.0%
IRModule.NumIRGlobals 754 754 0 0.0%
IRModule.NumIRInsts 16999 16999 0 0.0%
IRModule.NumIRValueSymbols 1182 1182 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 468 468 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 19880 19880 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 5721670 5725947 4277 0.07%
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 5058746 5056622 -2124 -0.04%
time.swift-driver.Kingfisher-all-arm64_apple_ios8.0-o-Onone.wall 4832580 4824862 -7718 -0.16%
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-Onone.wall 3383157 3388089 4932 0.15%
time.swift-driver.ReactiveCocoa-all-armv7_apple_ios8.0-o-Onone.wall 3420356 3386501 -33855 -0.99%
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 3266576 3256756 -9820 -0.3%
time.swift-driver.ReactiveSwift-all-armv7_apple_ios8.0-o-Onone.wall 3402569 3357347 -45222 -1.33%
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 1546854 1550059 3205 0.21%
time.swift-driver.Result-all-armv7_apple_ios8.0-o-Onone.wall 1550248 1543708 -6540 -0.42%

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 4747 839 21.47% ⛔
Sema.NumConformancesDeserialized 31066 34854 3788 12.19% ⛔
LLVM.NumLLVMBytesOutput 2995540 3079156 83616 2.79% ⛔
Regressed in Kingfisher (3)
name old new delta delta_pct
SILModule.NumSILOptFunctions 7512 8603 1091 14.52% ⛔
LLVM.NumLLVMBytesOutput 4701704 5068572 366868 7.8% ⛔
IRModule.NumIRBasicBlocks 18956 20321 1365 7.2% ⛔
Regressed in ReactiveCocoa (7)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 4775608 6580384 1804776 37.79% ⛔
Sema.NumConstraintScopes 42990 54820 11830 27.52% ⛔
SILModule.NumSILOptFunctions 4068 4369 301 7.4% ⛔
IRModule.NumIRBasicBlocks 11870 12072 202 1.7% ⛔
IRModule.NumIRGlobals 9536 9652 116 1.22% ⛔
IRModule.NumIRFunctions 7080 7123 43 0.61% ⛔
IRModule.NumIRValueSymbols 14686 14773 87 0.59% ⛔
Regressed in ReactiveSwift (3)
name old new delta delta_pct
SILModule.NumSILOptFunctions 6970 7721 751 10.77% ⛔
LLVM.NumLLVMBytesOutput 8049848 8421000 371152 4.61% ⛔
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 5322 -35 -0.65% ✅
AST.NumUsedConformances 435 427 -8 -1.84% ✅
IRModule.NumIRValueSymbols 8767 8601 -166 -1.89% ✅
IRModule.NumIRGlobals 4765 4660 -105 -2.2% ✅
IRModule.NumIRBasicBlocks 15117 14688 -429 -2.84% ✅
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 129896 -15828 -10.86% ✅
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 3306 -10690 -76.38% ✅
Sema.NumDeclsValidated 61341 7138 -54203 -88.36% ✅
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 8123 -81 -0.99% ✅
IRModule.NumIRValueSymbols 14986 14793 -193 -1.29% ✅
AST.NumUsedConformances 858 842 -16 -1.86% ✅
Sema.NumLazyGenericEnvironmentsLoaded 5480 5280 -200 -3.65% ✅
Sema.NumConformancesDeserialized 70852 66935 -3917 -5.53% ✅
IRModule.NumIRInsts 194978 182798 -12180 -6.25% ✅
Sema.NumLazyIterableDeclContexts 54859 48591 -6268 -11.43% ✅
Sema.NumDeclsDeserialized 406573 343260 -63313 -15.57% ✅
Sema.NumTypesDeserialized 344515 283038 -61477 -17.84% ✅
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 9642 -24108 -71.43% ✅
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 101354 -1399 -1.36% ✅
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 365806 -81944 -18.3% ✅
Sema.NumDeclsDeserialized 494670 398813 -95857 -19.38% ✅
Sema.NumLazyGenericEnvironments 90692 67026 -23666 -26.09% ✅
Sema.NumTypesValidated 49050 34130 -14920 -30.42% ✅
Sema.NumGenericSignatureBuilders 49468 21664 -27804 -56.21% ✅
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 19521 -98 -0.5% ✅
IRModule.NumIRFunctions 10863 10793 -70 -0.64% ✅
AST.NumUsedConformances 730 714 -16 -2.19% ✅
IRModule.NumIRBasicBlocks 21814 21190 -624 -2.86% ✅
IRModule.NumIRInsts 332161 321849 -10312 -3.1% ✅
Sema.NumConformancesDeserialized 49822 48170 -1652 -3.32% ✅
Sema.NumConstraintScopes 41650 36534 -5116 -12.28% ✅
Sema.NumDeclsDeserialized 291790 244864 -46926 -16.08% ✅
Sema.NumTypesDeserialized 253286 209453 -43833 -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 8826 -22308 -71.65% ✅
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 (7)
Regressed in ReactiveCocoa (2)
name old new delta delta_pct
IRModule.NumIRInsts 65202 65402 200 0.31% ⛔
IRModule.NumIRBasicBlocks 8985 8997 12 0.13% ⛔
Regressed in ReactiveSwift (5)
name old new delta delta_pct
IRModule.NumIRInsts 258865 260109 1244 0.48% ⛔
IRModule.NumIRBasicBlocks 21986 22032 46 0.21% ⛔
IRModule.NumIRFunctions 10267 10273 6 0.06% ⛔
IRModule.NumIRValueSymbols 19591 19597 6 0.03% ⛔
LLVM.NumLLVMBytesOutput 10132456 10135836 3380 0.03% ⛔
Improved (0)
Unchanged (abs(delta) < 0.01% or 100000usec) (108)
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 15397 15397 0 0.0%
IRModule.NumIRFunctions 3754 3754 0 0.0%
IRModule.NumIRGlobals 4435 4435 0 0.0%
IRModule.NumIRInsts 107288 107288 0 0.0%
IRModule.NumIRValueSymbols 7060 7060 0 0.0%
LLVM.NumLLVMBytesOutput 3391736 3391740 4 0.0%
SILModule.NumSILGenFunctions 1860 1860 0 0.0%
SILModule.NumSILOptFunctions 3071 3071 0 0.0%
Sema.NumConformancesDeserialized 15607 15607 0 0.0%
Sema.NumConstraintScopes 36195 36195 0 0.0%
Sema.NumDeclsDeserialized 24212 24212 0 0.0%
Sema.NumDeclsValidated 3283 3283 0 0.0%
Sema.NumFunctionsTypechecked 1104 1104 0 0.0%
Sema.NumGenericSignatureBuilders 416 416 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 22917 22917 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 23368 23368 0 0.0%
IRModule.NumIRFunctions 6116 6116 0 0.0%
IRModule.NumIRGlobals 8552 8552 0 0.0%
IRModule.NumIRInsts 157247 157247 0 0.0%
IRModule.NumIRValueSymbols 13066 13066 0 0.0%
LLVM.NumLLVMBytesOutput 5991536 5991536 0 0.0%
SILModule.NumSILGenFunctions 3056 3056 0 0.0%
SILModule.NumSILOptFunctions 5840 5840 0 0.0%
Sema.NumConformancesDeserialized 31642 31642 0 0.0%
Sema.NumConstraintScopes 323218 323218 0 0.0%
Sema.NumDeclsDeserialized 48404 48404 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 4904 4904 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 822 822 0 0.0%
Sema.NumLazyIterableDeclContexts 3527 3527 0 0.0%
Sema.NumTypesDeserialized 45214 45214 0 0.0%
Sema.NumTypesValidated 2740 2740 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (21)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 8822828 8823740 912 0.01%
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.NumIRFunctions 5009 5009 0 0.0%
IRModule.NumIRGlobals 8487 8487 0 0.0%
IRModule.NumIRValueSymbols 12230 12230 0 0.0%
SILModule.NumSILGenFunctions 1913 1913 0 0.0%
SILModule.NumSILOptFunctions 3147 3147 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 2398 2398 0 0.0%
Sema.NumFunctionsTypechecked 2482 2482 0 0.0%
Sema.NumGenericSignatureBuilders 1282 1282 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 38761 38761 0 0.0%
Sema.NumTypesValidated 2372 2372 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (18)
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.NumIRGlobals 11626 11626 0 0.0%
SILModule.NumSILGenFunctions 3735 3735 0 0.0%
SILModule.NumSILOptFunctions 6928 6928 0 0.0%
Sema.NumConformancesDeserialized 26629 26629 0 0.0%
Sema.NumConstraintScopes 34928 34928 0 0.0%
Sema.NumDeclsDeserialized 43989 43989 0 0.0%
Sema.NumDeclsValidated 7570 7570 0 0.0%
Sema.NumFunctionsTypechecked 1976 1976 0 0.0%
Sema.NumGenericSignatureBuilders 1515 1515 0 0.0%
Sema.NumLazyGenericEnvironments 4936 4936 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 810 810 0 0.0%
Sema.NumLazyIterableDeclContexts 2871 2871 0 0.0%
Sema.NumTypesDeserialized 39471 39471 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 490108 490124 16 0.0%
SILModule.NumSILGenFunctions 292 292 0 0.0%
SILModule.NumSILOptFunctions 813 813 0 0.0%
Sema.NumConformancesDeserialized 4240 4240 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 368 368 0 0.0%
Sema.NumLazyGenericEnvironments 3842 3842 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 338 338 0 0.0%
Sema.NumLazyIterableDeclContexts 1962 1962 0 0.0%
Sema.NumTypesDeserialized 19968 19968 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 10570630 10421710 -148920 -1.41%
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 11183320 11200810 17490 0.16%
time.swift-driver.Kingfisher-all-arm64_apple_ios8.0-o-O.wall 10965300 10938250 -27050 -0.25%
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-O.wall 4949887 4960020 10133 0.2%
time.swift-driver.ReactiveCocoa-all-arm64_apple_ios8.0-o-O.wall 5001055 4989400 -11655 -0.23%
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 10668940 10746470 77530 0.73%
time.swift-driver.ReactiveSwift-all-arm64_apple_ios8.0-o-O.wall 10457160 10505050 47890 0.46%
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 2731391 2737437 6046 0.22%
time.swift-driver.Result-all-armv7_apple_ios8.0-o-O.wall 2774026 2765803 -8223 -0.3%

PR vs. baseline (release)

PR vs. baseline, changed counters (release)

Regressed (13)
Regressed in Alamofire (3)
name old new delta delta_pct
AST.NumTotalClangImportedEntities 2920 3234 314 10.75% ⛔
LLVM.NumLLVMBytesOutput 3172156 3391740 219584 6.92% ⛔
SILModule.NumSILOptFunctions 2991 3071 80 2.67% ⛔
Regressed in Kingfisher (4)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 5462712 5991536 528824 9.68% ⛔
AST.NumTotalClangImportedEntities 9086 9816 730 8.03% ⛔
Sema.NumConformancesDeserialized 30795 31642 847 2.75% ⛔
SILModule.NumSILOptFunctions 5723 5840 117 2.04% ⛔
Regressed in ReactiveCocoa (4)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 5480320 8823740 3343420 61.01% ⛔
Sema.NumConstraintScopes 23810 37364 13554 56.93% ⛔
SILModule.NumSILOptFunctions 2915 3147 232 7.96% ⛔
AST.NumTotalClangImportedEntities 7270 7434 164 2.26% ⛔
Regressed in ReactiveSwift (2)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 9452416 10135836 683420 7.23% ⛔
SILModule.NumSILOptFunctions 6852 6928 76 1.11% ⛔
Improved (69)
Improved in Alamofire (17)
name old new delta delta_pct
SILModule.NumSILGenFunctions 1861 1860 -1 -0.05% ✅
IRModule.NumIRFunctions 3819 3754 -65 -1.7% ✅
AST.NumUsedConformances 435 427 -8 -1.84% ✅
IRModule.NumIRGlobals 4521 4435 -86 -1.9% ✅
IRModule.NumIRValueSymbols 7218 7060 -158 -2.19% ✅
Sema.NumDeclsDeserialized 24875 24212 -663 -2.67% ✅
Sema.NumLazyIterableDeclContexts 1716 1655 -61 -3.55% ✅
Sema.NumTypesDeserialized 23832 22917 -915 -3.84% ✅
Sema.NumConformancesDeserialized 16433 15607 -826 -5.03% ✅
Sema.NumLazyGenericEnvironments 2814 2668 -146 -5.19% ✅
Sema.NumLazyGenericEnvironmentsLoaded 383 361 -22 -5.74% ✅
Sema.NumConstraintScopes 38683 36195 -2488 -6.43% ✅
IRModule.NumIRBasicBlocks 16869 15397 -1472 -8.73% ✅
IRModule.NumIRInsts 123248 107288 -15960 -12.95% ✅
Sema.NumTypesValidated 1977 1592 -385 -19.47% ✅
Sema.NumGenericSignatureBuilders 1595 416 -1179 -73.92% ✅
Sema.NumDeclsValidated 17283 3283 -14000 -81.0% ✅
Improved in Kingfisher (15)
name old new delta delta_pct
IRModule.NumIRGlobals 8627 8552 -75 -0.87% ✅
Sema.NumDeclsDeserialized 48980 48404 -576 -1.18% ✅
IRModule.NumIRValueSymbols 13308 13066 -242 -1.82% ✅
AST.NumUsedConformances 858 842 -16 -1.86% ✅
Sema.NumTypesDeserialized 46208 45214 -994 -2.15% ✅
IRModule.NumIRFunctions 6265 6116 -149 -2.38% ✅
Sema.NumLazyIterableDeclContexts 3642 3527 -115 -3.16% ✅
Sema.NumLazyGenericEnvironments 5174 4904 -270 -5.22% ✅
Sema.NumLazyGenericEnvironmentsLoaded 876 822 -54 -6.16% ✅
IRModule.NumIRBasicBlocks 25356 23368 -1988 -7.84% ✅
IRModule.NumIRInsts 189828 157247 -32581 -17.16% ✅
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 12230 -92 -0.75% ✅
Sema.NumConformancesDeserialized 20926 20644 -282 -1.35% ✅
IRModule.NumIRFunctions 5090 5009 -81 -1.59% ✅
Sema.NumDeclsDeserialized 42739 41724 -1015 -2.37% ✅
Sema.NumTypesDeserialized 39750 38761 -989 -2.49% ✅
Sema.NumLazyIterableDeclContexts 3880 3778 -102 -2.63% ✅
Sema.NumLazyGenericEnvironments 6210 5952 -258 -4.15% ✅
AST.NumUsedConformances 704 672 -32 -4.55% ✅
IRModule.NumIRBasicBlocks 9437 8997 -440 -4.66% ✅
Sema.NumLazyGenericEnvironmentsLoaded 728 692 -36 -4.95% ✅
IRModule.NumIRInsts 69895 65402 -4493 -6.43% ✅
Sema.NumTypesValidated 4072 2372 -1700 -41.75% ✅
Sema.NumGenericSignatureBuilders 3612 1282 -2330 -64.51% ✅
Sema.NumDeclsValidated 20206 2398 -17808 -88.13% ✅
Improved in ReactiveSwift (20)
name old new delta delta_pct
IRModule.NumIRGlobals 11628 11626 -2 -0.02% ✅
SILModule.NumSILGenFunctions 3755 3735 -20 -0.53% ✅
Sema.NumFunctionsTypechecked 1990 1976 -14 -0.7% ✅
Sema.NumConformancesDeserialized 26845 26629 -216 -0.8% ✅
AST.NumUsedConformances 732 720 -12 -1.64% ✅
IRModule.NumIRValueSymbols 19993 19597 -396 -1.98% ✅
Sema.NumDeclsDeserialized 44930 43989 -941 -2.09% ✅
IRModule.NumIRFunctions 10605 10273 -332 -3.13% ✅
Sema.NumTypesDeserialized 40957 39471 -1486 -3.63% ✅
Sema.NumLazyIterableDeclContexts 2982 2871 -111 -3.72% ✅
IRModule.NumIRInsts 271570 260109 -11461 -4.22% ✅
Sema.NumLazyGenericEnvironments 5196 4936 -260 -5.0% ✅
IRModule.NumIRBasicBlocks 23918 22032 -1886 -7.89% ✅
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 1515 -2875 -65.49% ✅
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)


@huonw huonw merged commit 4a2d422 into swiftlang:master Nov 10, 2017
@huonw huonw deleted the conditional-conformance-irgen branch November 10, 2017 22:01
@moiseev
Copy link
Contributor

moiseev commented Nov 10, 2017

But seriously, 🎆 🎉

@aschwaighofer
Copy link
Contributor

@huonw nw This commit breaks the PR bots. Looks like the added IRGen tests are not 32bit save.

https://ci.swift.org/job/swift-PR-osx/1283/

/Users/buildnode/jenkins/workspace/swift-PR-osx/branch-master/swift/test/IRGen/protocol_resilience.sil:299:16: error: expected string not found in input
// CHECK-NEXT: %conditional.tables = alloca %swift.witness_table_slice, align 8
               ^
<stdin>:298:2: note: scanning from here
 %conditional.tables = alloca %swift.witness_table_slice, align 4

@xedin
Copy link
Contributor

xedin commented Nov 11, 2017

Oh no, pointer alignment :( @huonw if you are not around I might try and take care of this.

@gparker42
Copy link
Contributor

Please revert this now and fix it later. PR tests have been broken repeatedly for two days.

@xedin
Copy link
Contributor

xedin commented Nov 11, 2017

@gparker42 I don't think it's sensible to revert them just because of this problem, especially because @huonw put in "PTRSIZE=64" in the test hoping that it's going to work, I'd rather fix it right now.

@huonw
Copy link
Contributor Author

huonw commented Nov 11, 2017

#12869 , sorry.

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.

9 participants