Skip to content

[stdlib] [WIP] Eliminate version of Array.append(contentsOf:) that takes a Collection #5521

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

Closed

Conversation

airspeedswift
Copy link
Member

@airspeedswift airspeedswift commented Oct 29, 2016

Resolves ABI FIXMEs #13, #16 and #17 and implements SE-147.

Changes Sequence._copyContents to take a UnsafeMutableBufferPointer instead of just a pointer, adds checks to ensure it doesn't initialize memory outside that buffer in the default implementation, and optionally returns an Iterator with any unwritten elements.

Currently there are two versions of Array.append(contentsOf:), one that takes a sequence and one that takes a collection. We want to collapse them into one, and then move the definition of += up into RangeReplaceableCollection (which doesn't have a version of append specialized for collections). At the same time, there is a potentially nasty bug that impacts the collection version. The solution for both problems is similar.

In theory the collection version is optimized, because we can determine in advance how many elements are in the collection being appended. The current version allocates enough memory, then calls a method on its buffer's unsafe pointer to initialize from the collection. This is bad because collections can lie about their count – for example, a reference-semantic collection like NSMutableArray might change on another thread while copying, or this code which uses external state to make a lazy collection give different results:

var i = 0
let l = repeatElement(42, count: 10_000).lazy.filter { _ in i += 1; return i > 10_000 }
var a: [Int] = []
a.append(contentsOf: l) // goes bang

If a collection underreports its count, the current code will end up scribbling over the memory past the end of the buffer.

To do this safely, what we need to do is take the count, reserve enough memory, then use an UnsafeBufferPointer to append safely not beyond the count. Then any remaining elements that weren't accounted for by the collection's count can be appended too. These remaining elements are returned as a partially consumed iterator by the append operation.

This solution will also allow us to combine with the version for Sequence, which basically needs the same thing, only with a call to underestimatedCount since this can also be an underestimate (non-zero underestimates might not be the total number of elements in the sequence).

Collections that are certain they have value semantics and never lie about their counts can choose to override the method that the unsafe pointer calls on them to write themselves into memory, to skip certain safety checks the default implementation puts in.

@airspeedswift
Copy link
Member Author

@swift-ci Please test

@airspeedswift
Copy link
Member Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - 0590709831fd6be5e1e713aadd316c2494876b8e
Test requested by - @airspeedswift

@airspeedswift
Copy link
Member Author

@swift-ci Please test OS X platform

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (8)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ByteSwap 0 1 +100000.0% 0.00x
ArrayAppendLazyMap 842 1078 +28.0% 0.78x
Calculator 31 34 +9.7% 0.91x
ObjectiveCBridgeStubNSDateRefAccess 310 339 +9.3% 0.91x
CaptureProp 4228 4564 +8.0% 0.93x
MapReduce 342 369 +7.9% 0.93x
Phonebook 7069 7564 +7.0% 0.93x
StrToInt 4905 5233 +6.7% 0.94x

Improvement (3)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendSequence 1062 920 -13.4% 1.15x
StringHasPrefix 743 639 -14.0% 1.16x
StringWithCString 198146 155335 -21.6% 1.28x(?)

No Changes (132)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
Walsh 323 309 -4.3% 1.05x
ObjectiveCBridgeStubFromNSDateRef 3738 3625 -3.0% 1.03x
ObjectiveCBridgeStubToNSDate 13795 13356 -3.2% 1.03x(?)
DictionaryBridge 3833 3773 -1.6% 1.02x(?)
PopFrontArray 1133 1115 -1.6% 1.02x(?)
AnyHashableWithAClass 63993 62982 -1.6% 1.02x(?)
TwoSum 1606 1581 -1.6% 1.02x(?)
ArrayAppendGenericStructs 1232 1223 -0.7% 1.01x(?)
StaticArray 2761 2733 -1.0% 1.01x(?)
StringHasSuffixUnicode 63833 63388 -0.7% 1.01x(?)
Dictionary2 2050 2032 -0.9% 1.01x(?)
StrComplexWalk 2901 2877 -0.8% 1.01x(?)
ObjectiveCBridgeToNSSet 15784 15566 -1.4% 1.01x(?)
PopFrontArrayGeneric 1133 1119 -1.2% 1.01x(?)
ArrayAppendOptionals 1241 1225 -1.3% 1.01x(?)
Join 466 460 -1.3% 1.01x
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 137036 135804 -0.9% 1.01x(?)
NSDictionaryCastToSwift 7010 6915 -1.4% 1.01x(?)
ArrayOfGenericRef 3631 3590 -1.1% 1.01x(?)
SetUnion_OfObjects 6599 6547 -0.8% 1.01x(?)
ObjectiveCBridgeStubNSDateMutationRef 12365 12232 -1.1% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4624 4587 -0.8% 1.01x(?)
ObjectiveCBridgeStubFromArrayOfNSString 58815 58325 -0.8% 1.01x(?)
ArraySubscript 1444 1443 -0.1% 1.00x(?)
ObjectiveCBridgeToNSString 1070 1073 +0.3% 1.00x(?)
DictionarySwapOfObjects 6739 6755 +0.2% 1.00x(?)
StackPromo 21630 21576 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 203480 203430 -0.0% 1.00x(?)
RecursiveOwnedParameter 1937 1941 +0.2% 1.00x(?)
Integrate 238 239 +0.4% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 211173 210659 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 116940 116538 -0.3% 1.00x(?)
ClassArrayGetter 12 12 +0.0% 1.00x
Array2D 2041 2037 -0.2% 1.00x(?)
Histogram 656 656 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5296 5284 -0.2% 1.00x(?)
MonteCarloPi 45135 44985 -0.3% 1.00x(?)
Prims 734 736 +0.3% 1.00x(?)
SortLettersInPlace 972 973 +0.1% 1.00x(?)
DictionarySwap 628 628 +0.0% 1.00x
ArrayOfGenericPOD 220 220 +0.0% 1.00x
RangeAssignment 287 288 +0.3% 1.00x(?)
SuperChars 210651 210978 +0.2% 1.00x(?)
XorLoop 380 380 +0.0% 1.00x
StringInterpolation 10884 10860 -0.2% 1.00x(?)
ObjectiveCBridgeStubToNSString 1276 1280 +0.3% 1.00x(?)
ArrayAppendStrings 12131 12103 -0.2% 1.00x(?)
DeadArray 185 185 +0.0% 1.00x
ProtocolDispatch 3039 3039 +0.0% 1.00x
ObjectAllocation 153 153 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObject 96202 96203 +0.0% 1.00x(?)
AngryPhonebook 2807 2814 +0.2% 1.00x(?)
Dictionary3 510 510 +0.0% 1.00x
SetIntersect_OfObjects 2290 2293 +0.1% 1.00x(?)
ErrorHandling 2938 2927 -0.4% 1.00x(?)
ArrayOfRef 3551 3536 -0.4% 1.00x(?)
ObjectiveCBridgeStubDateMutation 273 273 +0.0% 1.00x
NSError 324 324 +0.0% 1.00x
DictionaryOfObjects 2285 2286 +0.0% 1.00x(?)
ObjectiveCBridgeStubToNSDateRef 3444 3461 +0.5% 1.00x(?)
StringEqualPointerComparison 7299 7302 +0.0% 1.00x(?)
PolymorphicCalls 22 22 +0.0% 1.00x
ArrayAppendReserved 536 536 +0.0% 1.00x
ObjectiveCBridgeStubToNSStringRef 116 116 +0.0% 1.00x
DictionaryLiteral 2732 2737 +0.2% 1.00x(?)
DictionaryRemoveOfObjects 19620 19634 +0.1% 1.00x(?)
UTF8Decode 288 288 +0.0% 1.00x
SortStringsUnicode 8108 8145 +0.5% 1.00x(?)
SetIsSubsetOf 508 508 +0.0% 1.00x
Dictionary 743 744 +0.1% 1.00x(?)
NopDeinit 36647 36654 +0.0% 1.00x(?)
ObjectiveCBridgeStubToArrayOfNSString 29433 29515 +0.3% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObject 75970 75731 -0.3% 1.00x(?)
SetIntersect 1071 1073 +0.2% 1.00x(?)
StringBuilder 1319 1317 -0.1% 1.00x(?)
ArrayInClass 63 63 +0.0% 1.00x
ObjectiveCBridgeStubDateAccess 182 182 +0.0% 1.00x
Sim2DArray 277 277 +0.0% 1.00x
SetExclusiveOr_OfObjects 7852 7842 -0.1% 1.00x(?)
ArrayAppendRepeatCol 643 643 +0.0% 1.00x
ObjectiveCBridgeToNSDictionary 16006 15999 -0.0% 1.00x(?)
MonteCarloE 10574 10570 -0.0% 1.00x(?)
RC4 165 165 +0.0% 1.00x
HashTest 1742 1743 +0.1% 1.00x(?)
SetIsSubsetOf_OfObjects 522 522 +0.0% 1.00x
ArrayAppend 776 776 +0.0% 1.00x
DictionaryRemove 4602 4587 -0.3% 1.00x(?)
LinkedList 7246 7253 +0.1% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 107498 107414 -0.1% 1.00x(?)
RGBHistogramOfObjects 22022 22044 +0.1% 1.00x(?)
NSStringConversion 826 822 -0.5% 1.00x(?)
RGBHistogram 2814 2817 +0.1% 1.00x(?)
ArrayAppendArrayOfInt 599 599 +0.0% 1.00x
ArrayOfPOD 182 182 +0.0% 1.00x
SetUnion 3050 3052 +0.1% 1.00x(?)
Chars 624 623 -0.2% 1.00x(?)
ArrayValueProp2 6 6 +0.0% 1.00x
BitCount 1 1 +0.0% 1.00x
ArrayLiteral 1178 1173 -0.4% 1.00x(?)
SevenBoom 1349 1355 +0.4% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 90073 90074 +0.0% 1.00x(?)
StringWalk 5872 5883 +0.2% 1.00x(?)
ArrayValueProp 6 6 +0.0% 1.00x
GlobalClass 0 0 +0.0% 1.00x
Memset 235 236 +0.4% 1.00x(?)
Dictionary2OfObjects 3395 3392 -0.1% 1.00x(?)
ArrayValueProp4 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectForced 6086 6127 +0.7% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 2677 2697 +0.8% 0.99x(?)
Dictionary3OfObjects 857 862 +0.6% 0.99x(?)
ObjectiveCBridgeStubFromNSStringRef 128 129 +0.8% 0.99x(?)
ObjectiveCBridgeStubFromNSString 768 772 +0.5% 0.99x(?)
ProtocolDispatch2 158 160 +1.3% 0.99x
ObjectiveCBridgeToNSArray 30135 30372 +0.8% 0.99x(?)
ObjectiveCBridgeStubURLAppendPath 229414 232161 +1.2% 0.99x(?)
SetExclusiveOr 2621 2657 +1.4% 0.99x(?)
StringHasSuffix 800 806 +0.8% 0.99x
142 3004696 3039209 +1.1% 0.99x
ObjectiveCBridgeFromNSString 1816 1836 +1.1% 0.99x(?)
ObjectiveCBridgeStubURLAppendPathRef 229598 234159 +2.0% 0.98x(?)
IterateData 2539 2597 +2.3% 0.98x
ObjectiveCBridgeStubDataAppend 2962 3012 +1.7% 0.98x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 142393 145247 +2.0% 0.98x(?)
ObjectiveCBridgeStubNSDataAppend 2386 2440 +2.3% 0.98x(?)
SortStrings 1721 1773 +3.0% 0.97x
PopFrontUnsafePointer 9172 9455 +3.1% 0.97x(?)
ObjectiveCBridgeStubFromNSDate 3455 3564 +3.1% 0.97x
Hanoi 3199 3334 +4.2% 0.96x
StringHasPrefixUnicode 13443 14045 +4.5% 0.96x
OpenClose 54 57 +5.6% 0.95x
**Unoptimized (Onone)**

Regression (5)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendRepeatCol 215540 505378 +134.5% 0.43x
ArrayAppendLazyMap 244615 531105 +117.1% 0.46x
TypeFlood 174 190 +9.2% 0.92x(?)
142 6017247 6537813 +8.7% 0.92x
ArrayAppendArrayOfInt 642 680 +5.9% 0.94x

Improvement (1)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
StrComplexWalk 7878 7400 -6.1% 1.06x

No Changes (137)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeStubFromNSStringRef 163 158 -3.1% 1.03x
NSError 685 667 -2.6% 1.03x(?)
StringEqualPointerComparison 9886 9644 -2.5% 1.03x
SortStrings 2770 2715 -2.0% 1.02x
Dictionary2 4427 4356 -1.6% 1.02x(?)
ObjectiveCBridgeStubNSDateRefAccess 1257 1228 -2.3% 1.02x
ObjectiveCBridgeStubDateMutation 434 426 -1.8% 1.02x
NSStringConversion 3016 2966 -1.7% 1.02x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 121036 120154 -0.7% 1.01x(?)
ErrorHandling 3828 3790 -1.0% 1.01x(?)
ObjectAllocation 561 556 -0.9% 1.01x(?)
ObjectiveCBridgeToNSSet 15873 15656 -1.4% 1.01x(?)
ObjectiveCBridgeToNSArray 30481 30183 -1.0% 1.01x(?)
PopFrontArrayGeneric 9712 9641 -0.7% 1.01x(?)
PolymorphicCalls 1143 1127 -1.4% 1.01x
Calculator 968 958 -1.0% 1.01x
SetExclusiveOr 30710 30549 -0.5% 1.01x
NSDictionaryCastToSwift 8330 8228 -1.2% 1.01x(?)
ArrayOfGenericRef 10077 10021 -0.6% 1.01x(?)
Phonebook 63460 62750 -1.1% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7477 7406 -0.9% 1.01x(?)
ObjectiveCBridgeStubNSDataAppend 2787 2769 -0.7% 1.01x(?)
ArraySubscript 5637 5640 +0.1% 1.00x(?)
ObjectiveCBridgeToNSString 1101 1100 -0.1% 1.00x(?)
DictionarySwapOfObjects 21165 21123 -0.2% 1.00x(?)
StackPromo 127607 128053 +0.3% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 209814 210100 +0.1% 1.00x(?)
RecursiveOwnedParameter 10815 10806 -0.1% 1.00x(?)
Integrate 368 368 +0.0% 1.00x
ClassArrayGetter 1267 1265 -0.2% 1.00x(?)
Array2D 813677 812122 -0.2% 1.00x(?)
Histogram 11749 11788 +0.3% 1.00x(?)
DictionaryBridge 3876 3891 +0.4% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7724 7703 -0.3% 1.00x(?)
StringWithCString 155067 154785 -0.2% 1.00x
Prims 13565 13604 +0.3% 1.00x(?)
ObjectiveCBridgeFromNSString 5144 5127 -0.3% 1.00x(?)
PopFrontArray 24622 24706 +0.3% 1.00x(?)
Dictionary3OfObjects 2268 2266 -0.1% 1.00x(?)
RangeAssignment 13271 13284 +0.1% 1.00x(?)
ByteSwap 9 9 +0.0% 1.00x
ObjectiveCBridgeStubToNSDate 14348 14313 -0.2% 1.00x(?)
XorLoop 19993 20002 +0.1% 1.00x(?)
StringInterpolation 15743 15796 +0.3% 1.00x(?)
ObjectiveCBridgeStubToNSString 1339 1338 -0.1% 1.00x(?)
ArrayAppendStrings 11803 11831 +0.2% 1.00x(?)
StaticArray 34896 34924 +0.1% 1.00x(?)
ProtocolDispatch 5472 5474 +0.0% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObject 101556 101703 +0.1% 1.00x(?)
ArrayLiteral 1242 1243 +0.1% 1.00x(?)
ProtocolDispatch2 444 444 +0.0% 1.00x
Walsh 13158 13209 +0.4% 1.00x(?)
Dictionary3 1607 1606 -0.1% 1.00x(?)
SetIntersect_OfObjects 13916 13879 -0.3% 1.00x(?)
ArrayOfRef 9408 9362 -0.5% 1.00x
DictionaryOfObjects 4882 4884 +0.0% 1.00x(?)
PopFrontUnsafePointer 242903 242606 -0.1% 1.00x(?)
RC4 9361 9361 +0.0% 1.00x
ObjectiveCBridgeStubToNSStringRef 156 156 +0.0% 1.00x
MapReduce 45267 45392 +0.3% 1.00x(?)
AngryPhonebook 2985 2977 -0.3% 1.00x(?)
IterateData 10574 10542 -0.3% 1.00x(?)
DictionaryLiteral 16774 16692 -0.5% 1.00x(?)
Hanoi 20389 20433 +0.2% 1.00x
DictionaryRemoveOfObjects 46896 47026 +0.3% 1.00x(?)
UTF8Decode 43489 43570 +0.2% 1.00x(?)
SortStringsUnicode 9268 9253 -0.2% 1.00x(?)
SetIsSubsetOf 2437 2445 +0.3% 1.00x(?)
Dictionary 2144 2145 +0.1% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObject 78855 78556 -0.4% 1.00x(?)
SetIntersect 15152 15152 +0.0% 1.00x
StrToInt 5742 5768 +0.5% 1.00x
ArrayInClass 3957 3959 +0.1% 1.00x(?)
Sim2DArray 14576 14578 +0.0% 1.00x(?)
SetExclusiveOr_OfObjects 46853 46757 -0.2% 1.00x(?)
MonteCarloPi 53721 53705 -0.0% 1.00x(?)
MonteCarloE 108857 109018 +0.1% 1.00x(?)
SetUnion_OfObjects 34397 34359 -0.1% 1.00x(?)
StringHasSuffixUnicode 65401 65500 +0.1% 1.00x(?)
HashTest 5397 5383 -0.3% 1.00x(?)
SetIsSubsetOf_OfObjects 2213 2211 -0.1% 1.00x(?)
ArrayAppend 3443 3440 -0.1% 1.00x(?)
DictionaryRemove 17481 17432 -0.3% 1.00x(?)
LinkedList 27937 27875 -0.2% 1.00x(?)
RGBHistogramOfObjects 93195 93652 +0.5% 1.00x(?)
RGBHistogram 44237 44064 -0.4% 1.00x(?)
ArrayValueProp4 3001 2996 -0.2% 1.00x(?)
SetUnion 18438 18415 -0.1% 1.00x(?)
Chars 5011 5020 +0.2% 1.00x(?)
DeadArray 120862 120867 +0.0% 1.00x(?)
BitCount 96 96 +0.0% 1.00x
SevenBoom 1506 1502 -0.3% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 91637 91939 +0.3% 1.00x(?)
ArrayValueProp 2623 2615 -0.3% 1.00x(?)
ObjectiveCBridgeStubFromArrayOfNSString 58981 58952 -0.1% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 20652 20646 -0.0% 1.00x(?)
Dictionary2OfObjects 6239 6236 -0.1% 1.00x(?)
TwoSum 6553 6546 -0.1% 1.00x(?)
ArrayValueProp2 3142 3146 +0.1% 1.00x(?)
ArrayValueProp3 3061 3062 +0.0% 1.00x(?)
ObjectiveCBridgeStubFromNSDate 3808 3813 +0.1% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 218931 220232 +0.6% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 10239 10298 +0.6% 0.99x(?)
SortLettersInPlace 2567 2580 +0.5% 0.99x(?)
SuperChars 261728 263773 +0.8% 0.99x(?)
StringHasPrefix 1684 1705 +1.2% 0.99x
Join 1457 1469 +0.8% 0.99x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 141651 143777 +1.5% 0.99x(?)
ObjectiveCBridgeStubDataAppend 3355 3388 +1.0% 0.99x(?)
ObjectiveCBridgeToNSDictionary 16400 16585 +1.1% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 118485 119741 +1.1% 0.99x(?)
StringBuilder 2712 2732 +0.7% 0.99x(?)
AnyHashableWithAClass 78245 79308 +1.4% 0.99x
ObjectiveCBridgeStubNSDateMutationRef 14555 14762 +1.4% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 3069 3125 +1.8% 0.98x(?)
DictionarySwap 7519 7642 +1.6% 0.98x
ArrayAppendGenericStructs 1314 1342 +2.1% 0.98x
ObjectiveCBridgeStubToNSDateRef 3310 3362 +1.6% 0.98x(?)
CaptureProp 116370 118746 +2.0% 0.98x
ObjectiveCBridgeStubURLAppendPath 233589 238791 +2.2% 0.98x(?)
ObjectiveCBridgeStubToArrayOfNSString 29592 30044 +1.5% 0.98x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 157070 159650 +1.6% 0.98x(?)
StringHasSuffix 1765 1801 +2.0% 0.98x
StringHasPrefixUnicode 14943 15288 +2.3% 0.98x
ObjectiveCBridgeStubFromNSDateRef 4080 4222 +3.5% 0.97x
ArrayOfGenericPOD 3428 3517 +2.6% 0.97x
ObjectiveCBridgeStubFromNSString 815 844 +3.6% 0.97x
ArrayAppendOptionals 1292 1330 +2.9% 0.97x(?)
NopDeinit 58079 59812 +3.0% 0.97x
ObjectiveCBridgeStubDateAccess 1094 1125 +2.8% 0.97x
ArrayAppendSequence 106298 109072 +2.6% 0.97x
StringWalk 22105 22691 +2.6% 0.97x
ObjectiveCBridgeStubURLAppendPathRef 231003 239857 +3.8% 0.96x(?)
OpenClose 430 450 +4.7% 0.96x
ArrayAppendReserved 3193 3326 +4.2% 0.96x
ArrayOfPOD 2329 2451 +5.2% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i5 Processor Speed: 2.8 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 3 MB Memory: 16 GB

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - 0590709831fd6be5e1e713aadd316c2494876b8e
Test requested by - @airspeedswift

@airspeedswift
Copy link
Member Author

@swift-ci Please benchmark

1 similar comment
@airspeedswift
Copy link
Member Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (9)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendLazyMap 793 1015 +28.0% 0.78x
ClassArrayGetter 11 12 +9.1% 0.92x(?)
CaptureProp 3962 4305 +8.7% 0.92x
MapReduce 323 350 +8.4% 0.92x(?)
ObjectiveCBridgeStubNSDateRefAccess 295 322 +9.2% 0.92x
Phonebook 6667 7135 +7.0% 0.93x
Calculator 30 32 +6.7% 0.94x
OpenClose 51 54 +5.9% 0.94x
StrToInt 4636 4935 +6.5% 0.94x

Improvement (2)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendSequence 1001 868 -13.3% 1.15x
StringHasPrefix 697 603 -13.5% 1.16x

No Changes (132)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
Walsh 305 292 -4.3% 1.04x
ObjectiveCBridgeStubFromNSDateRef 3520 3419 -2.9% 1.03x
ObjectiveCBridgeStubToNSDate 12434 12040 -3.2% 1.03x(?)
AnyHashableWithAClass 60432 59414 -1.7% 1.02x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 197224 196009 -0.6% 1.01x(?)
SortLettersInPlace 919 914 -0.5% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 192443 191044 -0.7% 1.01x(?)
Join 433 430 -0.7% 1.01x(?)
StringHasSuffixUnicode 60202 59766 -0.7% 1.01x(?)
Dictionary2 1934 1918 -0.8% 1.01x(?)
ObjectiveCBridgeStubToNSDateRef 3099 3079 -0.7% 1.01x(?)
PopFrontArrayGeneric 1069 1056 -1.2% 1.01x(?)
DictionaryLiteral 2594 2579 -0.6% 1.01x(?)
ObjectiveCBridgeFromNSArrayAnyObject 71867 71141 -1.0% 1.01x(?)
NSDictionaryCastToSwift 6626 6565 -0.9% 1.01x(?)
142 2828793 2799926 -1.0% 1.01x
ArrayOfGenericRef 3419 3392 -0.8% 1.01x(?)
SetUnion_OfObjects 6220 6180 -0.6% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4370 4335 -0.8% 1.01x(?)
SetUnion 2889 2863 -0.9% 1.01x(?)
Chars 600 592 -1.3% 1.01x(?)
ArrayAppendArrayOfInt 565 562 -0.5% 1.01x(?)
Dictionary2OfObjects 3219 3202 -0.5% 1.01x(?)
TwoSum 1498 1489 -0.6% 1.01x(?)
ArraySubscript 1348 1348 +0.0% 1.00x
ObjectiveCBridgeToNSString 1011 1014 +0.3% 1.00x(?)
DictionarySwapOfObjects 6359 6364 +0.1% 1.00x(?)
StackPromo 20414 20394 -0.1% 1.00x(?)
PopFrontArray 1070 1067 -0.3% 1.00x(?)
RecursiveOwnedParameter 1828 1830 +0.1% 1.00x(?)
Integrate 228 228 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectToString 111171 110633 -0.5% 1.00x(?)
Array2D 1934 1942 +0.4% 1.00x(?)
Histogram 619 619 +0.0% 1.00x
DictionaryBridge 3580 3581 +0.0% 1.00x(?)
MonteCarloPi 42597 42467 -0.3% 1.00x
StringWithCString 146358 146149 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 5875 5891 +0.3% 1.00x(?)
Prims 695 696 +0.1% 1.00x(?)
DictionarySwap 593 593 +0.0% 1.00x
Dictionary3OfObjects 811 811 +0.0% 1.00x
RangeAssignment 271 271 +0.0% 1.00x
ByteSwap 0 0 +0.0% 1.00x
ArrayAppendGenericStructs 1142 1142 +0.0% 1.00x
SuperChars 198721 198971 +0.1% 1.00x(?)
XorLoop 358 358 +0.0% 1.00x
StringInterpolation 10216 10241 +0.2% 1.00x(?)
ObjectiveCBridgeStubToNSString 1209 1211 +0.2% 1.00x(?)
ArrayAppendStrings 11420 11386 -0.3% 1.00x(?)
ObjectiveCBridgeStubFromNSStringRef 121 121 +0.0% 1.00x
StaticArray 2602 2600 -0.1% 1.00x(?)
ProtocolDispatch 2867 2868 +0.0% 1.00x(?)
ObjectAllocation 144 144 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObject 90684 90694 +0.0% 1.00x(?)
AngryPhonebook 2651 2656 +0.2% 1.00x(?)
Dictionary3 480 481 +0.2% 1.00x(?)
StrComplexWalk 2738 2728 -0.4% 1.00x(?)
SetIntersect_OfObjects 2151 2145 -0.3% 1.00x(?)
ErrorHandling 2767 2777 +0.4% 1.00x(?)
ArrayOfRef 3342 3335 -0.2% 1.00x(?)
ArrayAppendOptionals 1141 1141 +0.0% 1.00x
ObjectiveCBridgeToNSArray 28553 28476 -0.3% 1.00x(?)
NSError 306 306 +0.0% 1.00x
DictionaryOfObjects 2155 2159 +0.2% 1.00x(?)
StringEqualPointerComparison 6883 6893 +0.1% 1.00x(?)
PolymorphicCalls 20 20 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 258 258 +0.0% 1.00x
ArrayOfGenericPOD 207 207 +0.0% 1.00x
DictionaryRemoveOfObjects 18504 18524 +0.1% 1.00x(?)
UTF8Decode 272 272 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 219035 219288 +0.1% 1.00x(?)
SortStringsUnicode 7649 7685 +0.5% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 128346 128734 +0.3% 1.00x(?)
SetIsSubsetOf 480 480 +0.0% 1.00x
Dictionary 700 700 +0.0% 1.00x
NopDeinit 34574 34571 -0.0% 1.00x(?)
ObjectiveCBridgeStubToArrayOfNSString 27857 27738 -0.4% 1.00x(?)
SetIntersect 1012 1012 +0.0% 1.00x
StringBuilder 1245 1244 -0.1% 1.00x(?)
ArrayInClass 59 59 +0.0% 1.00x
ObjectiveCBridgeStubDateAccess 172 172 +0.0% 1.00x
Sim2DArray 261 261 +0.0% 1.00x
SetExclusiveOr_OfObjects 7400 7393 -0.1% 1.00x(?)
ArrayAppendRepeatCol 606 606 +0.0% 1.00x
MonteCarloE 9962 9954 -0.1% 1.00x(?)
RC4 156 156 +0.0% 1.00x
HashTest 1643 1646 +0.2% 1.00x(?)
SetIsSubsetOf_OfObjects 494 494 +0.0% 1.00x
ArrayAppend 731 731 +0.0% 1.00x
DictionaryRemove 4348 4331 -0.4% 1.00x(?)
LinkedList 6842 6830 -0.2% 1.00x(?)
RGBHistogramOfObjects 20751 20759 +0.0% 1.00x(?)
NSStringConversion 776 777 +0.1% 1.00x(?)
RGBHistogram 2643 2655 +0.5% 1.00x(?)
ArrayAppendReserved 505 505 +0.0% 1.00x
ArrayOfPOD 171 171 +0.0% 1.00x
DeadArray 174 174 +0.0% 1.00x
ArrayValueProp2 5 5 +0.0% 1.00x
BitCount 1 1 +0.0% 1.00x
ArrayLiteral 1111 1113 +0.2% 1.00x(?)
SevenBoom 1277 1273 -0.3% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 84930 85242 +0.4% 1.00x(?)
StringWalk 5564 5550 -0.2% 1.00x(?)
ArrayValueProp 5 5 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 55058 54937 -0.2% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 222 222 +0.0% 1.00x
ArrayValueProp4 5 5 +0.0% 1.00x
ArrayValueProp3 5 5 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 4933 4979 +0.9% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 2527 2543 +0.6% 0.99x(?)
ObjectiveCBridgeStubFromNSString 725 729 +0.6% 0.99x(?)
ProtocolDispatch2 149 151 +1.3% 0.99x
ObjectiveCBridgeStubURLAppendPathRef 219138 220930 +0.8% 0.99x(?)
ObjectiveCBridgeStubToNSStringRef 109 110 +0.9% 0.99x(?)
SetExclusiveOr 2479 2503 +1.0% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 134685 135377 +0.5% 0.99x(?)
ObjectiveCBridgeFromNSString 1715 1733 +1.1% 0.99x
ObjectiveCBridgeStubNSDateMutationRef 11041 11146 +0.9% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 100597 101835 +1.2% 0.99x(?)
StringHasSuffix 755 763 +1.1% 0.99x
ObjectiveCBridgeStubNSDataAppend 2278 2296 +0.8% 0.99x(?)
ObjectiveCBridgeToNSSet 14482 14798 +2.2% 0.98x(?)
IterateData 2396 2451 +2.3% 0.98x
ObjectiveCBridgeStubDataAppend 2777 2840 +2.3% 0.98x(?)
ObjectiveCBridgeToNSDictionary 14875 15145 +1.8% 0.98x(?)
SortStrings 1624 1673 +3.0% 0.97x
PopFrontUnsafePointer 8652 8921 +3.1% 0.97x(?)
Hanoi 3014 3151 +4.5% 0.96x
ObjectiveCBridgeStubFromNSDate 3238 3362 +3.8% 0.96x
StringHasPrefixUnicode 12666 13269 +4.8% 0.95x
**Unoptimized (Onone)**

Regression (3)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendRepeatCol 203147 475722 +134.2% 0.43x
ArrayAppendLazyMap 230787 496798 +115.3% 0.46x
142 5630272 6195043 +10.0% 0.91x

Improvement (3)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
StrComplexWalk 7405 6981 -5.7% 1.06x
TypeFlood 186 176 -5.4% 1.06x(?)
StringWalk 21394 19908 -7.0% 1.07x

No Changes (137)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeFromNSArrayAnyObjectToString 118996 113858 -4.3% 1.05x(?)
StringEqualPointerComparison 9325 9097 -2.5% 1.03x
ObjectiveCBridgeFromNSSetAnyObjectForced 7201 7009 -2.7% 1.03x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 209415 206218 -1.5% 1.02x(?)
SortStrings 2615 2564 -1.9% 1.02x
DictionaryBridge 3717 3632 -2.3% 1.02x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 199147 194556 -2.3% 1.02x(?)
ObjectiveCBridgeStubNSDateRefAccess 1185 1159 -2.2% 1.02x
ObjectiveCBridgeStubDateMutation 409 402 -1.7% 1.02x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 87639 86257 -1.6% 1.02x(?)
ObjectiveCBridgeStubFromArrayOfNSString 56418 55573 -1.5% 1.02x(?)
AnyHashableWithAClass 73757 72808 -1.3% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7390 7295 -1.3% 1.01x(?)
Prims 12803 12739 -0.5% 1.01x(?)
ErrorHandling 3586 3563 -0.6% 1.01x(?)
ObjectiveCBridgeStubFromNSStringRef 152 151 -0.7% 1.01x(?)
Dictionary2 4152 4101 -1.2% 1.01x(?)
NSError 645 637 -1.2% 1.01x(?)
ObjectiveCBridgeStubToNSDateRef 3155 3138 -0.5% 1.01x(?)
PopFrontArrayGeneric 9209 9120 -1.0% 1.01x
PolymorphicCalls 1078 1063 -1.4% 1.01x
Calculator 913 904 -1.0% 1.01x
ObjectiveCBridgeFromNSArrayAnyObject 74394 73572 -1.1% 1.01x(?)
ArrayOfGenericRef 9492 9421 -0.8% 1.01x(?)
ObjectiveCBridgeStubNSDateMutationRef 13483 13397 -0.6% 1.01x(?)
RGBHistogramOfObjects 88604 88023 -0.7% 1.01x(?)
NSStringConversion 2844 2808 -1.3% 1.01x
SevenBoom 1425 1416 -0.6% 1.01x
ArraySubscript 5310 5293 -0.3% 1.00x(?)
ObjectiveCBridgeToNSString 1038 1038 +0.0% 1.00x
DictionarySwapOfObjects 20013 20036 +0.1% 1.00x(?)
StackPromo 120099 120022 -0.1% 1.00x(?)
PopFrontArray 23441 23326 -0.5% 1.00x(?)
RecursiveOwnedParameter 10276 10273 -0.0% 1.00x(?)
Integrate 347 347 +0.0% 1.00x
ClassArrayGetter 1194 1193 -0.1% 1.00x(?)
Array2D 766531 765316 -0.2% 1.00x(?)
Histogram 11035 11062 +0.2% 1.00x(?)
StringWithCString 146145 145845 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 9830 9852 +0.2% 1.00x(?)
SortLettersInPlace 2421 2426 +0.2% 1.00x(?)
Dictionary3OfObjects 2143 2138 -0.2% 1.00x(?)
RangeAssignment 12536 12506 -0.2% 1.00x(?)
ByteSwap 9 9 +0.0% 1.00x
SuperChars 220519 220591 +0.0% 1.00x(?)
XorLoop 18874 18871 -0.0% 1.00x(?)
StringInterpolation 14865 14843 -0.1% 1.00x(?)
ObjectiveCBridgeStubToNSString 1271 1269 -0.2% 1.00x(?)
ArrayAppendStrings 11123 11111 -0.1% 1.00x(?)
ProtocolDispatch 5163 5164 +0.0% 1.00x(?)
ObjectAllocation 528 526 -0.4% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObject 96793 96317 -0.5% 1.00x(?)
AngryPhonebook 2819 2808 -0.4% 1.00x
ProtocolDispatch2 419 419 +0.0% 1.00x
Walsh 12492 12488 -0.0% 1.00x(?)
Dictionary3 1521 1520 -0.1% 1.00x(?)
SetIntersect_OfObjects 13128 13095 -0.2% 1.00x(?)
Join 1383 1382 -0.1% 1.00x(?)
ArrayOfRef 8850 8818 -0.4% 1.00x
ObjectiveCBridgeToNSSet 14958 14990 +0.2% 1.00x(?)
ObjectiveCBridgeToNSArray 28713 28626 -0.3% 1.00x(?)
DictionaryOfObjects 4608 4610 +0.0% 1.00x(?)
PopFrontUnsafePointer 229270 228940 -0.1% 1.00x(?)
RC4 8845 8837 -0.1% 1.00x(?)
ObjectiveCBridgeStubToNSStringRef 147 147 +0.0% 1.00x
MapReduce 43558 43503 -0.1% 1.00x(?)
IterateData 9984 9948 -0.4% 1.00x(?)
DictionaryRemoveOfObjects 44261 44416 +0.3% 1.00x(?)
UTF8Decode 41205 41108 -0.2% 1.00x(?)
SortStringsUnicode 8743 8730 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 134440 134881 +0.3% 1.00x(?)
SetIsSubsetOf 2302 2309 +0.3% 1.00x(?)
Dictionary 2031 2030 -0.1% 1.00x(?)
SetIntersect 14319 14306 -0.1% 1.00x(?)
SetExclusiveOr 28903 28826 -0.3% 1.00x(?)
NSDictionaryCastToSwift 7819 7818 -0.0% 1.00x(?)
ArrayInClass 3735 3732 -0.1% 1.00x
Sim2DArray 13759 13753 -0.0% 1.00x(?)
SetExclusiveOr_OfObjects 44263 44177 -0.2% 1.00x(?)
MonteCarloPi 50684 50690 +0.0% 1.00x(?)
MonteCarloE 102571 102562 -0.0% 1.00x(?)
SetUnion_OfObjects 32396 32419 +0.1% 1.00x(?)
StringHasSuffixUnicode 61699 61827 +0.2% 1.00x(?)
HashTest 5087 5088 +0.0% 1.00x(?)
SetIsSubsetOf_OfObjects 2199 2204 +0.2% 1.00x(?)
ArrayAppend 3247 3244 -0.1% 1.00x
DictionaryRemove 16476 16486 +0.1% 1.00x(?)
LinkedList 26375 26392 +0.1% 1.00x(?)
Chars 4722 4735 +0.3% 1.00x
StringBuilder 2589 2578 -0.4% 1.00x(?)
ArrayValueProp2 2969 2962 -0.2% 1.00x(?)
BitCount 91 91 +0.0% 1.00x
ArrayLiteral 1171 1173 +0.2% 1.00x(?)
ArrayValueProp4 2829 2835 +0.2% 1.00x(?)
ArrayValueProp 2473 2474 +0.0% 1.00x(?)
ObjectiveCBridgeFromNSString 4854 4838 -0.3% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 19491 19503 +0.1% 1.00x(?)
Dictionary2OfObjects 5894 5879 -0.2% 1.00x(?)
TwoSum 6373 6356 -0.3% 1.00x(?)
ObjectiveCBridgeStubNSDataAppend 2629 2616 -0.5% 1.00x(?)
ArrayValueProp3 2889 2893 +0.1% 1.00x(?)
ObjectiveCBridgeStubFromNSDate 3590 3594 +0.1% 1.00x(?)
OpenClose 406 409 +0.7% 0.99x(?)
ObjectiveCBridgeStubToNSDate 13081 13212 +1.0% 0.99x(?)
StaticArray 33002 33173 +0.5% 0.99x(?)
StringHasPrefix 1584 1602 +1.1% 0.99x
ObjectiveCBridgeStubURLAppendPathRef 221970 223202 +0.6% 0.99x(?)
DictionaryLiteral 15579 15751 +1.1% 0.99x(?)
Hanoi 19214 19383 +0.9% 0.99x
ObjectiveCBridgeStubURLAppendPath 223905 226278 +1.1% 0.99x(?)
ObjectiveCBridgeStubDataAppend 3153 3174 +0.7% 0.99x(?)
StrToInt 5418 5450 +0.6% 0.99x
Phonebook 59618 60200 +1.0% 0.99x(?)
ObjectiveCBridgeToNSDictionary 15562 15699 +0.9% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 113410 114112 +0.6% 0.99x(?)
RGBHistogram 41787 42052 +0.6% 0.99x(?)
SetUnion 17444 17554 +0.6% 0.99x(?)
DeadArray 113542 114211 +0.6% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 2897 2946 +1.7% 0.98x(?)
DictionarySwap 7108 7265 +2.2% 0.98x(?)
CaptureProp 109866 112344 +2.3% 0.98x(?)
ObjectiveCBridgeStubToArrayOfNSString 27751 28247 +1.8% 0.98x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 147483 150789 +2.2% 0.98x(?)
StringHasSuffix 1659 1700 +2.5% 0.98x
StringHasPrefixUnicode 14077 14393 +2.2% 0.98x
ObjectiveCBridgeStubFromNSDateRef 3876 3979 +2.7% 0.97x
ArrayAppendGenericStructs 1187 1223 +3.0% 0.97x
ObjectiveCBridgeStubFromNSString 769 795 +3.4% 0.97x
ArrayAppendOptionals 1186 1222 +3.0% 0.97x
ArrayOfGenericPOD 3231 3320 +2.8% 0.97x
NopDeinit 54824 56470 +3.0% 0.97x
ObjectiveCBridgeStubDateAccess 1033 1061 +2.7% 0.97x
ArrayAppendSequence 100074 102975 +2.9% 0.97x
ArrayAppendReserved 3012 3136 +4.1% 0.96x
ArrayAppendArrayOfInt 605 640 +5.8% 0.95x
ArrayOfPOD 2197 2313 +5.3% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i7 Processor Speed: 3 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 4 MB Memory: 16 GB

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (6)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ByteSwap 0 1 +100000.0% 0.00x
StringWithCString 155552 198701 +27.7% 0.78x(?)
ArrayAppendLazyMap 842 1073 +27.4% 0.78x
CaptureProp 4187 4563 +9.0% 0.92x
ObjectiveCBridgeStubNSDateRefAccess 310 338 +9.0% 0.92x
MapReduce 342 369 +7.9% 0.93x

Improvement (1)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendSequence 1061 920 -13.3% 1.15x

No Changes (136)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
Walsh 323 312 -3.4% 1.04x
ObjectiveCBridgeStubToNSDate 12985 12649 -2.6% 1.03x(?)
Calculator 31 30 -3.2% 1.03x
ObjectiveCBridgeStubFromNSDateRef 3731 3654 -2.1% 1.02x
ObjectiveCBridgeStubToArrayOfNSString 29586 29062 -1.8% 1.02x(?)
ArrayInClass 63 62 -1.6% 1.02x(?)
SetIsSubsetOf_OfObjects 524 514 -1.9% 1.02x
ObjectiveCBridgeFromNSSetAnyObjectForced 4663 4552 -2.4% 1.02x(?)
Chars 637 623 -2.2% 1.02x
ObjectiveCBridgeFromNSArrayAnyObjectToString 117260 116585 -0.6% 1.01x(?)
Array2D 2046 2025 -1.0% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5298 5249 -0.9% 1.01x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6242 6205 -0.6% 1.01x(?)
ObjectiveCBridgeFromNSStringForced 2681 2656 -0.9% 1.01x
ObjectiveCBridgeFromNSString 1818 1804 -0.8% 1.01x(?)
PopFrontArray 1134 1120 -1.2% 1.01x(?)
StringHasPrefix 744 740 -0.5% 1.01x(?)
ArrayAppendGenericStructs 1238 1230 -0.7% 1.01x(?)
AnyHashableWithAClass 64061 63613 -0.7% 1.01x
ErrorHandling 2917 2888 -1.0% 1.01x(?)
ObjectiveCBridgeStubURLAppendPathRef 234042 231529 -1.1% 1.01x(?)
ObjectiveCBridgeStubToNSDateRef 3297 3252 -1.4% 1.01x(?)
ArrayAppendOptionals 1241 1234 -0.6% 1.01x(?)
DictionaryLiteral 2747 2728 -0.7% 1.01x(?)
Hanoi 3199 3180 -0.6% 1.01x
142 3082014 3049617 -1.1% 1.01x
ArrayOfGenericRef 3631 3612 -0.5% 1.01x(?)
SetExclusiveOr_OfObjects 7844 7787 -0.7% 1.01x(?)
SetUnion_OfObjects 6588 6521 -1.0% 1.01x(?)
NSStringConversion 825 814 -1.3% 1.01x(?)
SevenBoom 1354 1346 -0.6% 1.01x(?)
ObjectiveCBridgeStubNSDateMutationRef 11823 11652 -1.4% 1.01x(?)
TwoSum 1607 1586 -1.3% 1.01x(?)
ObjectiveCBridgeStubFromNSDate 3458 3411 -1.4% 1.01x
ArraySubscript 1446 1449 +0.2% 1.00x(?)
ObjectiveCBridgeToNSString 1074 1069 -0.5% 1.00x(?)
DictionarySwapOfObjects 6746 6748 +0.0% 1.00x(?)
StackPromo 21568 21549 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 203050 203958 +0.5% 1.00x(?)
RecursiveOwnedParameter 1937 1938 +0.1% 1.00x(?)
Integrate 241 241 +0.0% 1.00x
ClassArrayGetter 12 12 +0.0% 1.00x
Histogram 656 656 +0.0% 1.00x
MonteCarloPi 45139 44981 -0.3% 1.00x
Prims 736 734 -0.3% 1.00x(?)
SortLettersInPlace 973 974 +0.1% 1.00x(?)
DictionarySwap 628 628 +0.0% 1.00x
ArrayOfGenericPOD 220 220 +0.0% 1.00x
Dictionary3OfObjects 858 858 +0.0% 1.00x
RangeAssignment 287 288 +0.3% 1.00x(?)
SuperChars 210356 211116 +0.4% 1.00x(?)
XorLoop 380 380 +0.0% 1.00x
ArrayAppendReserved 536 535 -0.2% 1.00x(?)
StringInterpolation 10851 10813 -0.3% 1.00x(?)
ObjectiveCBridgeStubToNSString 1279 1283 +0.3% 1.00x(?)
ArrayAppendStrings 12156 12108 -0.4% 1.00x(?)
ObjectiveCBridgeStubFromNSStringRef 129 129 +0.0% 1.00x
StaticArray 2744 2757 +0.5% 1.00x(?)
ProtocolDispatch 3040 3040 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObject 96370 96253 -0.1% 1.00x(?)
AngryPhonebook 2809 2817 +0.3% 1.00x(?)
Dictionary3 509 509 +0.0% 1.00x
Dictionary2 2048 2042 -0.3% 1.00x(?)
StrComplexWalk 2903 2896 -0.2% 1.00x(?)
SetIntersect_OfObjects 2276 2272 -0.2% 1.00x(?)
Join 463 464 +0.2% 1.00x(?)
ArrayOfRef 3550 3537 -0.4% 1.00x(?)
ArrayAppend 775 774 -0.1% 1.00x(?)
ObjectiveCBridgeStubDateMutation 273 273 +0.0% 1.00x
ObjectiveCBridgeToNSArray 30186 30230 +0.1% 1.00x(?)
NSError 324 325 +0.3% 1.00x(?)
DictionaryOfObjects 2288 2292 +0.2% 1.00x(?)
PopFrontArrayGeneric 1133 1133 +0.0% 1.00x
StringEqualPointerComparison 7301 7296 -0.1% 1.00x(?)
PolymorphicCalls 22 22 +0.0% 1.00x
RC4 165 165 +0.0% 1.00x
IterateData 2538 2537 -0.0% 1.00x(?)
OpenClose 54 54 +0.0% 1.00x
UTF8Decode 288 288 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 232781 231792 -0.4% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 136089 135985 -0.1% 1.00x(?)
SetIsSubsetOf 508 508 +0.0% 1.00x
NopDeinit 36648 36635 -0.0% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObject 75909 75859 -0.1% 1.00x(?)
SetIntersect 1071 1072 +0.1% 1.00x(?)
RGBHistogramOfObjects 21981 21978 -0.0% 1.00x(?)
StringHasSuffix 800 800 +0.0% 1.00x
Phonebook 7076 7104 +0.4% 1.00x(?)
ObjectiveCBridgeStubDateAccess 182 182 +0.0% 1.00x
Sim2DArray 277 277 +0.0% 1.00x
ArrayAppendRepeatCol 642 641 -0.2% 1.00x(?)
MonteCarloE 10572 10576 +0.0% 1.00x(?)
StringHasSuffixUnicode 63852 63661 -0.3% 1.00x(?)
HashTest 1745 1744 -0.1% 1.00x(?)
ObjectiveCBridgeToNSSet 15745 15809 +0.4% 1.00x(?)
ArrayAppendArrayOfInt 599 598 -0.2% 1.00x(?)
ArrayOfPOD 182 182 +0.0% 1.00x
SetUnion 3025 3012 -0.4% 1.00x(?)
StringBuilder 1319 1314 -0.4% 1.00x(?)
DeadArray 185 185 +0.0% 1.00x
ArrayValueProp2 6 6 +0.0% 1.00x
BitCount 1 1 +0.0% 1.00x
ArrayLiteral 1178 1178 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 90323 90191 -0.1% 1.00x(?)
StringWalk 5863 5871 +0.1% 1.00x(?)
ArrayValueProp 6 6 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 58580 58496 -0.1% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 235 236 +0.4% 1.00x
Dictionary2OfObjects 3395 3404 +0.3% 1.00x(?)
ArrayValueProp4 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 209288 211102 +0.9% 0.99x(?)
DictionaryBridge 3842 3878 +0.9% 0.99x(?)
ObjectiveCBridgeStubFromNSString 768 775 +0.9% 0.99x
ObjectAllocation 153 154 +0.7% 0.99x(?)
ProtocolDispatch2 158 160 +1.3% 0.99x
PopFrontUnsafePointer 9080 9165 +0.9% 0.99x(?)
ObjectiveCBridgeStubToNSStringRef 117 118 +0.8% 0.99x(?)
DictionaryRemoveOfObjects 19611 19756 +0.7% 0.99x(?)
SortStringsUnicode 8105 8221 +1.4% 0.99x
Dictionary 743 747 +0.5% 0.99x(?)
SetExclusiveOr 2610 2642 +1.2% 0.99x(?)
NSDictionaryCastToSwift 6996 7048 +0.7% 0.99x(?)
DictionaryRemove 4608 4659 +1.1% 0.99x(?)
LinkedList 7209 7253 +0.6% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 105248 105828 +0.6% 0.99x(?)
RGBHistogram 2815 2836 +0.8% 0.99x(?)
ObjectiveCBridgeStubNSDataAppend 2406 2438 +1.3% 0.99x(?)
ObjectiveCBridgeStubDataAppend 2944 2994 +1.7% 0.98x(?)
ObjectiveCBridgeToNSDictionary 15697 16045 +2.2% 0.98x(?)
SortStrings 1722 1773 +3.0% 0.97x
StrToInt 4910 5056 +3.0% 0.97x
ObjectiveCBridgeFromNSSetAnyObjectToString 141438 145132 +2.6% 0.97x(?)
StringHasPrefixUnicode 13440 14214 +5.8% 0.95x
**Unoptimized (Onone)**

Regression (6)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendRepeatCol 215514 513059 +138.1% 0.42x
ArrayAppendLazyMap 244449 532995 +118.0% 0.46x
ArrayAppendGenericStructs 1298 1423 +9.6% 0.91x
142 6024071 6562428 +8.9% 0.92x
ArrayOfGenericPOD 3429 3695 +7.8% 0.93x
ObjectiveCBridgeStubNSDateMutationRef 13643 14604 +7.0% 0.93x(?)

Improvement (1)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
TypeFlood 201 187 -7.0% 1.07x(?)

No Changes (136)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
StringEqualPointerComparison 9893 9527 -3.7% 1.04x
ObjectiveCBridgeStubFromArrayOfNSString 60957 58879 -3.4% 1.04x(?)
StringWalk 22678 21961 -3.2% 1.03x
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 220445 216397 -1.8% 1.02x(?)
StringHasPrefix 1685 1650 -2.1% 1.02x
NSError 686 673 -1.9% 1.02x(?)
Calculator 967 948 -2.0% 1.02x
ObjectiveCBridgeStubNSDateRefAccess 1256 1232 -1.9% 1.02x
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 120295 118488 -1.5% 1.02x(?)
NSStringConversion 3021 2970 -1.7% 1.02x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7589 7446 -1.9% 1.02x(?)
StringHasSuffix 1755 1725 -1.7% 1.02x
ObjectiveCBridgeStubFromNSDate 3795 3720 -2.0% 1.02x
StackPromo 128395 127488 -0.7% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7773 7695 -1.0% 1.01x(?)
StringInterpolation 15836 15752 -0.5% 1.01x(?)
AnyHashableWithAClass 78173 77757 -0.5% 1.01x(?)
ObjectiveCBridgeStubToNSString 1347 1340 -0.5% 1.01x
ErrorHandling 3832 3776 -1.5% 1.01x(?)
ObjectiveCBridgeStubFromNSStringRef 162 161 -0.6% 1.01x
ObjectiveCBridgeStubFromNSString 815 807 -1.0% 1.01x
StaticArray 35519 35216 -0.8% 1.01x(?)
ObjectiveCBridgeStubURLAppendPathRef 240102 237435 -1.1% 1.01x(?)
DictionaryOfObjects 4887 4857 -0.6% 1.01x
ObjectiveCBridgeStubURLAppendPath 236717 235018 -0.7% 1.01x(?)
SetExclusiveOr 30693 30439 -0.8% 1.01x
SetExclusiveOr_OfObjects 46930 46587 -0.7% 1.01x(?)
ObjectiveCBridgeStubDateMutation 433 427 -1.4% 1.01x
DictionaryRemove 17472 17351 -0.7% 1.01x(?)
Chars 5025 4986 -0.8% 1.01x
StrToInt 5744 5699 -0.8% 1.01x(?)
DeadArray 121126 120278 -0.7% 1.01x(?)
ObjectiveCBridgeStubNSDataAppend 2789 2772 -0.6% 1.01x(?)
SevenBoom 1511 1496 -1.0% 1.01x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 92489 91418 -1.2% 1.01x(?)
TwoSum 6739 6688 -0.8% 1.01x
ArraySubscript 5632 5633 +0.0% 1.00x(?)
ObjectiveCBridgeToNSString 1103 1102 -0.1% 1.00x(?)
RecursiveOwnedParameter 10894 10881 -0.1% 1.00x(?)
Integrate 368 368 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectToString 119567 119720 +0.1% 1.00x(?)
ClassArrayGetter 1266 1265 -0.1% 1.00x(?)
Array2D 812901 812593 -0.0% 1.00x(?)
SortStrings 2770 2779 +0.3% 1.00x
DictionaryBridge 3958 3951 -0.2% 1.00x(?)
MonteCarloPi 53726 53721 -0.0% 1.00x(?)
StringWithCString 154829 154655 -0.1% 1.00x(?)
Prims 13572 13526 -0.3% 1.00x(?)
SortLettersInPlace 2567 2562 -0.2% 1.00x(?)
DictionarySwap 7517 7515 -0.0% 1.00x(?)
PopFrontArray 24628 24669 +0.2% 1.00x(?)
Dictionary3OfObjects 2263 2266 +0.1% 1.00x(?)
RangeAssignment 13268 13265 -0.0% 1.00x(?)
ByteSwap 9 9 +0.0% 1.00x
SuperChars 263998 264630 +0.2% 1.00x(?)
XorLoop 20016 19997 -0.1% 1.00x(?)
ArrayAppendReserved 3191 3192 +0.0% 1.00x(?)
ArrayAppendStrings 11838 11864 +0.2% 1.00x(?)
ProtocolDispatch 5474 5473 -0.0% 1.00x(?)
ObjectAllocation 561 561 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObject 102061 102290 +0.2% 1.00x(?)
AngryPhonebook 2983 2985 +0.1% 1.00x(?)
ProtocolDispatch2 444 445 +0.2% 1.00x
HashTest 5394 5378 -0.3% 1.00x(?)
Dictionary3 1609 1605 -0.2% 1.00x(?)
Dictionary2 4440 4420 -0.5% 1.00x(?)
SetIntersect_OfObjects 13921 13969 +0.3% 1.00x(?)
ArrayOfRef 9394 9362 -0.3% 1.00x
PopFrontArrayGeneric 9757 9768 +0.1% 1.00x(?)
PopFrontUnsafePointer 242972 242429 -0.2% 1.00x(?)
PolymorphicCalls 1143 1143 +0.0% 1.00x
RC4 9371 9369 -0.0% 1.00x(?)
ObjectiveCBridgeStubToNSStringRef 157 157 +0.0% 1.00x
Hanoi 20357 20366 +0.0% 1.00x(?)
DictionaryRemoveOfObjects 46832 46914 +0.2% 1.00x(?)
UTF8Decode 43674 43592 -0.2% 1.00x(?)
SortStringsUnicode 9277 9247 -0.3% 1.00x(?)
SetIsSubsetOf 2441 2440 -0.0% 1.00x(?)
Dictionary 2145 2151 +0.3% 1.00x(?)
NopDeinit 58081 58077 -0.0% 1.00x(?)
ObjectiveCBridgeStubToArrayOfNSString 30011 29934 -0.3% 1.00x(?)
SetIntersect 15179 15138 -0.3% 1.00x(?)
ObjectiveCBridgeStubDataAppend 3335 3349 +0.4% 1.00x(?)
RGBHistogramOfObjects 93788 93374 -0.4% 1.00x(?)
StringBuilder 2719 2721 +0.1% 1.00x(?)
ArrayInClass 3957 3957 +0.0% 1.00x
ArrayOfGenericRef 10058 10028 -0.3% 1.00x(?)
ObjectiveCBridgeFromNSString 5131 5156 +0.5% 1.00x(?)
Sim2DArray 14575 14576 +0.0% 1.00x(?)
MonteCarloE 108896 108665 -0.2% 1.00x(?)
SetUnion_OfObjects 34368 34313 -0.2% 1.00x(?)
StringHasSuffixUnicode 65312 65360 +0.1% 1.00x(?)
Walsh 13216 13238 +0.2% 1.00x(?)
ArrayAppend 3441 3440 -0.0% 1.00x(?)
LinkedList 27926 27871 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 157111 157000 -0.1% 1.00x(?)
RGBHistogram 44221 44428 +0.5% 1.00x(?)
SetUnion 18518 18482 -0.2% 1.00x(?)
BitCount 96 96 +0.0% 1.00x
ArrayLiteral 1241 1246 +0.4% 1.00x(?)
ArrayValueProp 2623 2615 -0.3% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 20654 20655 +0.0% 1.00x(?)
ArrayValueProp4 3006 2996 -0.3% 1.00x(?)
ArrayValueProp2 3147 3147 +0.0% 1.00x
ArrayValueProp3 3059 3064 +0.2% 1.00x(?)
DictionarySwapOfObjects 21186 21397 +1.0% 0.99x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 212886 214471 +0.7% 0.99x(?)
Histogram 11686 11834 +1.3% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 3073 3105 +1.0% 0.99x
Join 1454 1462 +0.6% 0.99x
ObjectiveCBridgeToNSArray 30360 30702 +1.1% 0.99x(?)
MapReduce 45841 46366 +1.1% 0.99x(?)
DictionaryLiteral 16655 16739 +0.5% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObject 78930 80056 +1.4% 0.99x(?)
NSDictionaryCastToSwift 8273 8348 +0.9% 0.99x(?)
Phonebook 63057 63568 +0.8% 0.99x(?)
ObjectiveCBridgeToNSDictionary 16379 16626 +1.5% 0.99x(?)
SetIsSubsetOf_OfObjects 2333 2350 +0.7% 0.99x(?)
ArrayAppendSequence 106213 107657 +1.4% 0.99x(?)
Dictionary2OfObjects 6218 6256 +0.6% 0.99x(?)
ObjectiveCBridgeStubFromNSDateRef 4041 4129 +2.2% 0.98x
ObjectiveCBridgeStubToNSDate 14187 14466 +2.0% 0.98x(?)
ObjectiveCBridgeStubToNSDateRef 3298 3370 +2.2% 0.98x(?)
CaptureProp 116346 118381 +1.8% 0.98x(?)
IterateData 10586 10754 +1.6% 0.98x
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 145448 147728 +1.6% 0.98x(?)
StrComplexWalk 7852 8083 +2.9% 0.97x
ObjectiveCBridgeToNSSet 16050 16510 +2.9% 0.97x(?)
OpenClose 428 441 +3.0% 0.97x(?)
ObjectiveCBridgeStubDateAccess 1094 1125 +2.8% 0.97x
ObjectiveCBridgeFromNSArrayAnyObjectForced 10337 10788 +4.4% 0.96x(?)
ArrayAppendOptionals 1295 1349 +4.2% 0.96x
StringHasPrefixUnicode 14931 15520 +3.9% 0.96x
ArrayAppendArrayOfInt 642 678 +5.6% 0.95x
ArrayOfPOD 2328 2451 +5.3% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i5 Processor Speed: 2.8 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 3 MB Memory: 16 GB

@airspeedswift
Copy link
Member Author

@swift-ci Please test

@airspeedswift
Copy link
Member Author

@swift-ci Please test OS X platform

@airspeedswift airspeedswift force-pushed the collapse-append-contentsof branch from 608b0e7 to 9947cd6 Compare October 31, 2016 21:19
@airspeedswift airspeedswift changed the title [stdlib] WIP: Collapse the append(contentsOf:) taking Sequence and Collection into one [stdlib] Eliminate Array.append(contentsOf:) taking a Collection Oct 31, 2016
@airspeedswift
Copy link
Member Author

@swift-ci Please test

@airspeedswift
Copy link
Member Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - c59240a235a2dcba0296219757b88366db336be8
Test requested by - @airspeedswift

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - c59240a235a2dcba0296219757b88366db336be8
Test requested by - @airspeedswift

@airspeedswift
Copy link
Member Author

@dabrahams @atrick this implements the change we discussed last week re: UnsafeMutablePointer and initializing from collections.

@airspeedswift airspeedswift changed the title [stdlib] Eliminate Array.append(contentsOf:) taking a Collection [stdlib] Eliminate version of Array.append(contentsOf:) that takes a Collection Oct 31, 2016
@dabrahams
Copy link
Contributor

@airspeedswift Cool… but, wow, the benchmarks aren't very encouraging. I suppose that's why you've alerted @atrick? There are a lot of commits here and the messages hint that you may have made changes and then changed something back; has the history been optimized for review?
Thanks

@airspeedswift
Copy link
Member Author

@dabrahams Most of those benchmark variations seem to be noise unrelated to the change – for example the StringWithCString test just creates a String(repeating: "x", count: 100 * (1 << 16)) then calls .withCString several times. It doesn't go near any collections let alone append. Some of these benchmarks are a little noisy – for example, ByteSwap runs so fast that it oscillates wildly between a massive speedup and regression each time. There weren't any benchmarks exercising append-sequence heavily previously so I added a few before doing this. The only one in release that appears to be impacted is the one that tests appending a lazy collection. In -Onone, it's massively slower, but it's not obvious from the code change why this new technique would be significantly worse than what it was doing before, seems like it's optimizer-related. The other append benchmarks are showing about the same perf.

This was a WIP PR for a while (temporarily renamed some methods, move them around, then move them back) but it's stabilized now. If it's easier to review all in one go, I can create a fresh PR though.

@airspeedswift airspeedswift force-pushed the collapse-append-contentsof branch from 0d7aa36 to acfc744 Compare November 1, 2016 00:37
@airspeedswift
Copy link
Member Author

@dabrahams have squashed the initial set of commits from when it was still a WIP

@swift-ci
Copy link
Contributor

swift-ci commented Nov 1, 2016

Build comment file:

Optimized (O)

Regression (3)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendLazyMap 794 1016 +28.0% 0.78x
CaptureProp 3976 4307 +8.3% 0.92x
ObjectiveCBridgeStubNSDateRefAccess 295 320 +8.5% 0.92x

Improvement (2)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
Calculator 30 28 -6.7% 1.07x
ArrayAppendSequence 1000 868 -13.2% 1.15x

No Changes (138)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeFromNSString 1713 1643 -4.1% 1.04x
AnyHashableWithAClass 60391 58882 -2.5% 1.03x(?)
DictionaryBridge 3651 3592 -1.6% 1.02x(?)
ObjectiveCBridgeStubFromNSDateRef 3515 3449 -1.9% 1.02x
ObjectiveCBridgeToNSSet 14887 14573 -2.1% 1.02x(?)
Dictionary 700 687 -1.9% 1.02x
SetIsSubsetOf_OfObjects 494 484 -2.0% 1.02x
Array2D 1944 1931 -0.7% 1.01x(?)
SortStrings 1627 1617 -0.6% 1.01x
ObjectiveCBridgeFromNSArrayAnyObjectForced 5884 5853 -0.5% 1.01x(?)
ObjectiveCBridgeFromNSStringForced 2529 2502 -1.1% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 191774 190101 -0.9% 1.01x(?)
StringHasPrefix 698 691 -1.0% 1.01x(?)
StringInterpolation 10333 10248 -0.8% 1.01x(?)
ObjectiveCBridgeStubFromNSStringRef 121 120 -0.8% 1.01x(?)
StaticArray 2614 2592 -0.8% 1.01x(?)
ArrayOfRef 3347 3322 -0.8% 1.01x(?)
DictionaryLiteral 2600 2586 -0.5% 1.01x(?)
ObjectiveCBridgeStubToArrayOfNSString 27876 27531 -1.2% 1.01x(?)
142 2827883 2806864 -0.7% 1.01x
DictionaryRemove 4341 4313 -0.7% 1.01x(?)
NSStringConversion 772 767 -0.7% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4376 4330 -1.1% 1.01x(?)
TwoSum 1509 1487 -1.5% 1.01x(?)
ObjectiveCBridgeStubFromNSDate 3255 3218 -1.1% 1.01x(?)
ArraySubscript 1353 1359 +0.4% 1.00x(?)
ObjectiveCBridgeToNSString 1010 1008 -0.2% 1.00x(?)
DictionarySwapOfObjects 6366 6375 +0.1% 1.00x(?)
StackPromo 20326 20285 -0.2% 1.00x(?)
RecursiveOwnedParameter 1827 1830 +0.2% 1.00x(?)
Integrate 228 228 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 199510 199261 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 111027 111261 +0.2% 1.00x(?)
ClassArrayGetter 12 12 +0.0% 1.00x
Histogram 619 619 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 4997 4998 +0.0% 1.00x(?)
MonteCarloPi 42598 42472 -0.3% 1.00x
StringWithCString 146454 147014 +0.4% 1.00x(?)
Prims 694 695 +0.1% 1.00x(?)
SortLettersInPlace 920 919 -0.1% 1.00x(?)
DictionarySwap 593 591 -0.3% 1.00x(?)
ArrayOfGenericPOD 207 207 +0.0% 1.00x
Dictionary3OfObjects 807 808 +0.1% 1.00x(?)
RangeAssignment 271 272 +0.4% 1.00x(?)
ByteSwap 0 0 +0.0% 1.00x
ArrayAppendGenericStructs 1142 1141 -0.1% 1.00x(?)
SuperChars 198400 199008 +0.3% 1.00x(?)
XorLoop 359 359 +0.0% 1.00x
ArrayAppendReserved 505 505 +0.0% 1.00x
ObjectiveCBridgeStubToNSString 1206 1208 +0.2% 1.00x(?)
ArrayAppendStrings 11401 11375 -0.2% 1.00x(?)
Join 435 437 +0.5% 1.00x(?)
ObjectiveCBridgeStubFromNSString 725 722 -0.4% 1.00x(?)
ProtocolDispatch 2869 2868 -0.0% 1.00x(?)
TypeFlood 0 0 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObject 90661 90867 +0.2% 1.00x(?)
AngryPhonebook 2651 2655 +0.1% 1.00x(?)
Walsh 304 305 +0.3% 1.00x(?)
Dictionary3 480 480 +0.0% 1.00x
Dictionary2 1935 1928 -0.4% 1.00x(?)
StrComplexWalk 2736 2732 -0.1% 1.00x(?)
SetIntersect_OfObjects 2151 2152 +0.1% 1.00x(?)
ErrorHandling 2782 2775 -0.2% 1.00x(?)
ObjectiveCBridgeStubURLAppendPathRef 216403 217366 +0.5% 1.00x(?)
ArrayAppendOptionals 1141 1141 +0.0% 1.00x
NSError 307 306 -0.3% 1.00x(?)
DictionaryOfObjects 2156 2161 +0.2% 1.00x(?)
ObjectiveCBridgeStubToNSDateRef 3258 3248 -0.3% 1.00x(?)
PopFrontUnsafePointer 8660 8650 -0.1% 1.00x(?)
StringEqualPointerComparison 6893 6896 +0.0% 1.00x(?)
PolymorphicCalls 20 20 +0.0% 1.00x
RC4 156 156 +0.0% 1.00x
MapReduce 322 322 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 258 258 +0.0% 1.00x
IterateData 2396 2395 -0.0% 1.00x(?)
Hanoi 3017 3003 -0.5% 1.00x(?)
OpenClose 51 51 +0.0% 1.00x
DictionaryRemoveOfObjects 18526 18517 -0.1% 1.00x(?)
UTF8Decode 272 272 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 219304 218876 -0.2% 1.00x(?)
SetIsSubsetOf 481 481 +0.0% 1.00x
NopDeinit 34596 34577 -0.1% 1.00x(?)
SetIntersect 1011 1011 +0.0% 1.00x
SetExclusiveOr 2463 2473 +0.4% 1.00x(?)
NSDictionaryCastToSwift 6578 6566 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 134534 135013 +0.4% 1.00x(?)
ArrayOfGenericRef 3423 3412 -0.3% 1.00x(?)
StringHasSuffix 755 755 +0.0% 1.00x
Phonebook 6675 6660 -0.2% 1.00x(?)
ObjectiveCBridgeStubDateAccess 172 172 +0.0% 1.00x
Sim2DArray 261 261 +0.0% 1.00x
SetExclusiveOr_OfObjects 7430 7415 -0.2% 1.00x(?)
ArrayAppendRepeatCol 606 606 +0.0% 1.00x
MonteCarloE 9962 9979 +0.2% 1.00x(?)
SetUnion_OfObjects 6246 6252 +0.1% 1.00x(?)
StringHasSuffixUnicode 60257 60011 -0.4% 1.00x(?)
ArrayAppend 731 730 -0.1% 1.00x(?)
StringHasPrefixUnicode 12677 12630 -0.4% 1.00x(?)
LinkedList 6845 6846 +0.0% 1.00x(?)
RGBHistogramOfObjects 20742 20725 -0.1% 1.00x(?)
RGBHistogram 2654 2647 -0.3% 1.00x(?)
ArrayAppendArrayOfInt 565 565 +0.0% 1.00x
ArrayOfPOD 171 171 +0.0% 1.00x
Chars 590 590 +0.0% 1.00x
StringBuilder 1246 1246 +0.0% 1.00x
DeadArray 174 174 +0.0% 1.00x
ArrayValueProp2 5 5 +0.0% 1.00x
BitCount 1 1 +0.0% 1.00x
SevenBoom 1274 1274 +0.0% 1.00x
StringWalk 5556 5565 +0.2% 1.00x(?)
ArrayValueProp 5 5 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 55473 55500 +0.1% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 222 222 +0.0% 1.00x
ArrayValueProp4 5 5 +0.0% 1.00x
ArrayValueProp3 5 5 +0.0% 1.00x
PopFrontArray 1056 1070 +1.3% 0.99x(?)
ObjectAllocation 144 145 +0.7% 0.99x(?)
ProtocolDispatch2 149 151 +1.3% 0.99x
ObjectiveCBridgeToNSArray 28293 28489 +0.7% 0.99x(?)
PopFrontArrayGeneric 1055 1071 +1.5% 0.99x(?)
ObjectiveCBridgeStubToNSStringRef 109 110 +0.9% 0.99x(?)
SortStringsUnicode 7647 7749 +1.3% 0.99x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 129453 130121 +0.5% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObject 71274 72045 +1.1% 0.99x(?)
StrToInt 4639 4702 +1.4% 0.99x
HashTest 1646 1657 +0.7% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 100091 100903 +0.8% 0.99x(?)
SetUnion 2839 2857 +0.6% 0.99x(?)
ArrayLiteral 1106 1112 +0.5% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 85078 85529 +0.5% 0.99x(?)
ObjectiveCBridgeStubNSDateMutationRef 11595 11666 +0.6% 0.99x(?)
Dictionary2OfObjects 3198 3218 +0.6% 0.99x(?)
ObjectiveCBridgeStubNSDataAppend 2279 2303 +1.1% 0.99x(?)
ObjectiveCBridgeStubDataAppend 2793 2854 +2.2% 0.98x(?)
ArrayInClass 59 60 +1.7% 0.98x(?)
ObjectiveCBridgeToNSDictionary 14732 15009 +1.9% 0.98x(?)
ObjectiveCBridgeStubToNSDate 12363 12719 +2.9% 0.97x(?)
**Unoptimized (Onone)**

Regression (5)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendRepeatCol 203180 477358 +134.9% 0.43x
ArrayAppendLazyMap 230774 496762 +115.3% 0.46x
ObjectiveCBridgeStubDateMutation 409 459 +12.2% 0.89x
142 5625601 6190084 +10.0% 0.91x
PopFrontUnsafePointer 229356 244295 +6.5% 0.94x

Improvement (3)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
StrComplexWalk 7395 6960 -5.9% 1.06x
StringHasSuffix 1649 1512 -8.3% 1.09x
StringHasPrefix 1585 1436 -9.4% 1.10x

No Changes (135)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
Calculator 914 870 -4.8% 1.05x
StringWalk 21333 20339 -4.7% 1.05x
StringEqualPointerComparison 9326 8953 -4.0% 1.04x
SortStrings 2610 2537 -2.8% 1.03x(?)
ObjectiveCBridgeStubFromNSString 768 748 -2.6% 1.03x
ObjectiveCBridgeFromNSDictionaryAnyObject 201704 197096 -2.3% 1.02x(?)
TypeFlood 171 167 -2.3% 1.02x(?)
ObjectiveCBridgeStubURLAppendPath 222309 217996 -1.9% 1.02x(?)
ObjectiveCBridgeFromNSString 4861 4763 -2.0% 1.02x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7126 6965 -2.3% 1.02x(?)
StackPromo 121509 120364 -0.9% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7278 7212 -0.9% 1.01x(?)
ObjectiveCBridgeFromNSStringForced 2904 2870 -1.2% 1.01x(?)
ObjectiveCBridgeStubToNSDate 13679 13483 -1.4% 1.01x(?)
Join 1388 1375 -0.9% 1.01x(?)
ObjectAllocation 526 523 -0.6% 1.01x(?)
ObjectiveCBridgeToNSSet 14983 14821 -1.1% 1.01x(?)
DictionaryOfObjects 4602 4577 -0.5% 1.01x(?)
PopFrontArrayGeneric 9205 9100 -1.1% 1.01x
MapReduce 43831 43362 -1.1% 1.01x(?)
Hanoi 19247 18977 -1.4% 1.01x
SortStringsUnicode 8750 8674 -0.9% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 140458 138568 -1.4% 1.01x(?)
ObjectiveCBridgeStubToArrayOfNSString 28336 27969 -1.3% 1.01x(?)
SetIntersect 14376 14287 -0.6% 1.01x(?)
SetExclusiveOr 28945 28671 -0.9% 1.01x
ArrayOfGenericRef 9520 9464 -0.6% 1.01x(?)
DictionaryRemove 16497 16398 -0.6% 1.01x(?)
ArrayLiteral 1171 1165 -0.5% 1.01x(?)
NSStringConversion 2806 2776 -1.1% 1.01x(?)
StringBuilder 2576 2555 -0.8% 1.01x(?)
ObjectiveCBridgeStubNSDataAppend 2618 2598 -0.8% 1.01x(?)
SevenBoom 1427 1408 -1.3% 1.01x
ObjectiveCBridgeStubFromNSDate 3587 3569 -0.5% 1.01x
ArraySubscript 5324 5311 -0.2% 1.00x(?)
ObjectiveCBridgeToNSString 1037 1037 +0.0% 1.00x
PopFrontArray 23080 22981 -0.4% 1.00x(?)
RecursiveOwnedParameter 10238 10228 -0.1% 1.00x(?)
Integrate 344 344 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 207544 208458 +0.4% 1.00x(?)
ClassArrayGetter 1194 1195 +0.1% 1.00x(?)
Array2D 766737 766726 -0.0% 1.00x(?)
MonteCarloPi 50690 50665 -0.1% 1.00x(?)
StringWithCString 146197 145771 -0.3% 1.00x
Prims 12824 12776 -0.4% 1.00x(?)
SortLettersInPlace 2422 2427 +0.2% 1.00x(?)
ArrayOfGenericPOD 3239 3240 +0.0% 1.00x(?)
Dictionary3OfObjects 2143 2141 -0.1% 1.00x(?)
RangeAssignment 12530 12518 -0.1% 1.00x(?)
ByteSwap 9 9 +0.0% 1.00x
SuperChars 219671 220229 +0.2% 1.00x(?)
XorLoop 18877 18866 -0.1% 1.00x(?)
ArrayAppendReserved 3014 3018 +0.1% 1.00x
StringInterpolation 14940 14918 -0.1% 1.00x(?)
ObjectiveCBridgeStubToNSString 1272 1270 -0.2% 1.00x(?)
ArrayAppendStrings 11108 11111 +0.0% 1.00x(?)
ProtocolDispatch2 419 419 +0.0% 1.00x
HashTest 5084 5082 -0.0% 1.00x(?)
Dictionary3 1520 1518 -0.1% 1.00x(?)
Dictionary2 4157 4144 -0.3% 1.00x(?)
SetIntersect_OfObjects 13111 13110 -0.0% 1.00x(?)
ErrorHandling 3612 3622 +0.3% 1.00x(?)
ArrayOfRef 8891 8863 -0.3% 1.00x(?)
ObjectiveCBridgeToNSArray 28752 28849 +0.3% 1.00x(?)
NSError 647 648 +0.1% 1.00x(?)
PolymorphicCalls 1078 1081 +0.3% 1.00x
RC4 8841 8843 +0.0% 1.00x(?)
ObjectiveCBridgeStubToNSStringRef 147 147 +0.0% 1.00x
IterateData 9958 9978 +0.2% 1.00x(?)
DictionaryLiteral 15667 15642 -0.2% 1.00x(?)
DictionaryRemoveOfObjects 44239 44333 +0.2% 1.00x(?)
UTF8Decode 41092 41150 +0.1% 1.00x(?)
SetIsSubsetOf 2305 2311 +0.3% 1.00x
Dictionary 2015 2012 -0.1% 1.00x
NopDeinit 54826 54832 +0.0% 1.00x(?)
ObjectiveCBridgeStubDataAppend 3138 3123 -0.5% 1.00x(?)
NSDictionaryCastToSwift 7787 7787 +0.0% 1.00x
ObjectiveCBridgeStubNSDateRefAccess 1185 1188 +0.2% 1.00x
StrToInt 5420 5442 +0.4% 1.00x
ArrayInClass 3735 3734 -0.0% 1.00x(?)
Sim2DArray 13757 13745 -0.1% 1.00x(?)
SetExclusiveOr_OfObjects 44270 44116 -0.3% 1.00x(?)
ObjectiveCBridgeToNSDictionary 15400 15375 -0.2% 1.00x(?)
MonteCarloE 102633 102512 -0.1% 1.00x
SetUnion_OfObjects 32441 32589 +0.5% 1.00x(?)
StringHasSuffixUnicode 61610 61320 -0.5% 1.00x
Walsh 12426 12422 -0.0% 1.00x(?)
SetIsSubsetOf_OfObjects 2089 2085 -0.2% 1.00x(?)
LinkedList 26306 26279 -0.1% 1.00x(?)
RGBHistogramOfObjects 88187 88207 +0.0% 1.00x(?)
RGBHistogram 41951 41997 +0.1% 1.00x(?)
ArrayOfPOD 2198 2196 -0.1% 1.00x(?)
SetUnion 17598 17653 +0.3% 1.00x(?)
Chars 4727 4706 -0.4% 1.00x
DeadArray 114432 113956 -0.4% 1.00x(?)
BitCount 91 91 +0.0% 1.00x
AnyHashableWithAClass 73721 73826 +0.1% 1.00x(?)
ArrayValueProp 2475 2469 -0.2% 1.00x(?)
ObjectiveCBridgeStubFromArrayOfNSString 55964 55865 -0.2% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 19485 19489 +0.0% 1.00x(?)
ArrayValueProp4 2834 2824 -0.3% 1.00x
TwoSum 6195 6177 -0.3% 1.00x(?)
ArrayValueProp2 2966 2965 -0.0% 1.00x(?)
ArrayValueProp3 2887 2891 +0.1% 1.00x(?)
DictionarySwapOfObjects 20168 20310 +0.7% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 113028 114362 +1.2% 0.99x(?)
Histogram 11058 11131 +0.7% 0.99x(?)
StaticArray 33528 33934 +1.2% 0.99x
ObjectiveCBridgeFromNSSetAnyObject 96047 96634 +0.6% 0.99x(?)
AngryPhonebook 2817 2847 +1.1% 0.99x
ObjectiveCBridgeStubURLAppendPathRef 221487 223513 +0.9% 0.99x(?)
ObjectiveCBridgeStubToNSDateRef 3089 3117 +0.9% 0.99x(?)
CaptureProp 109767 110428 +0.6% 0.99x
StringHasPrefixUnicode 14086 14163 +0.6% 0.99x
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 113088 113873 +0.7% 0.99x(?)
ObjectiveCBridgeStubNSDateMutationRef 13396 13596 +1.5% 0.99x(?)
Dictionary2OfObjects 5894 5924 +0.5% 0.99x(?)
DictionaryBridge 3729 3824 +2.5% 0.98x(?)
DictionarySwap 7106 7257 +2.1% 0.98x(?)
OpenClose 406 416 +2.5% 0.98x(?)
ObjectiveCBridgeFromNSArrayAnyObject 74265 75965 +2.3% 0.98x
Phonebook 58921 59951 +1.8% 0.98x(?)
ArrayAppendSequence 100178 101944 +1.8% 0.98x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 86132 87894 +2.0% 0.98x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 9810 10108 +3.0% 0.97x(?)
ArrayAppendGenericStructs 1184 1220 +3.0% 0.97x
ObjectiveCBridgeStubFromNSStringRef 148 152 +2.7% 0.97x(?)
ArrayAppendOptionals 1184 1222 +3.2% 0.97x
ObjectiveCBridgeStubDateAccess 1033 1062 +2.8% 0.97x
ObjectiveCBridgeStubFromNSDateRef 3808 3971 +4.3% 0.96x
ProtocolDispatch 5166 5371 +4.0% 0.96x
ObjectiveCBridgeFromNSSetAnyObjectToString 149636 156889 +4.8% 0.95x(?)
ArrayAppend 3248 3402 +4.7% 0.95x
ArrayAppendArrayOfInt 604 639 +5.8% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i7 Processor Speed: 3 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 4 MB Memory: 16 GB

@swift-ci
Copy link
Contributor

swift-ci commented Nov 1, 2016

Build comment file:

Optimized (O)

Regression (5)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ByteSwap 0 1 +100000.0% 0.00x
ArrayAppendLazyMap 846 1075 +27.1% 0.79x
StringWithCString 160169 198610 +24.0% 0.81x(?)
CaptureProp 4191 4565 +8.9% 0.92x
ObjectiveCBridgeStubNSDateRefAccess 310 338 +9.0% 0.92x

Improvement (2)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
RecursiveOwnedParameter 2148 1939 -9.7% 1.11x
ArrayAppendSequence 1062 920 -13.4% 1.15x

No Changes (136)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeFromNSString 1817 1740 -4.2% 1.04x(?)
DictionaryBridge 3981 3850 -3.3% 1.03x(?)
AnyHashableWithAClass 63978 62273 -2.7% 1.03x
PopFrontUnsafePointer 9449 9167 -3.0% 1.03x(?)
Calculator 31 30 -3.2% 1.03x
ObjectiveCBridgeStubFromNSDateRef 3731 3651 -2.1% 1.02x
ObjectiveCBridgeFromNSDictionaryAnyObject 205347 202033 -1.6% 1.02x(?)
ObjectiveCBridgeStubToNSDate 13395 13118 -2.1% 1.02x(?)
SetIsSubsetOf_OfObjects 522 512 -1.9% 1.02x
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 216431 214315 -1.0% 1.01x(?)
ObjectiveCBridgeFromNSStringForced 2677 2650 -1.0% 1.01x(?)
StringHasPrefix 743 736 -0.9% 1.01x(?)
ArrayAppendGenericStructs 1246 1235 -0.9% 1.01x(?)
StrComplexWalk 2904 2889 -0.5% 1.01x(?)
ObjectiveCBridgeToNSArray 30240 30074 -0.6% 1.01x(?)
Hanoi 3198 3177 -0.7% 1.01x
ObjectiveCBridgeStubURLAppendPath 255590 253947 -0.6% 1.01x(?)
Dictionary 742 734 -1.1% 1.01x
NSDictionaryCastToSwift 7031 6978 -0.8% 1.01x(?)
142 3155463 3129992 -0.8% 1.01x
NSStringConversion 823 814 -1.1% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4636 4583 -1.1% 1.01x(?)
SevenBoom 1353 1345 -0.6% 1.01x(?)
ObjectiveCBridgeStubNSDateMutationRef 11995 11909 -0.7% 1.01x(?)
ObjectiveCBridgeStubFromNSDate 3443 3412 -0.9% 1.01x(?)
ArraySubscript 1435 1434 -0.1% 1.00x(?)
ObjectiveCBridgeToNSString 1071 1069 -0.2% 1.00x(?)
DictionarySwapOfObjects 6747 6753 +0.1% 1.00x(?)
StackPromo 21641 21634 -0.0% 1.00x(?)
Integrate 239 239 +0.0% 1.00x
ClassArrayGetter 12 12 +0.0% 1.00x
Array2D 2033 2038 +0.2% 1.00x(?)
Histogram 656 656 +0.0% 1.00x
SortStrings 1721 1714 -0.4% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5293 5294 +0.0% 1.00x(?)
MonteCarloPi 45134 45005 -0.3% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectForced 6226 6216 -0.2% 1.00x(?)
Prims 735 735 +0.0% 1.00x
SortLettersInPlace 976 972 -0.4% 1.00x(?)
DictionarySwap 629 627 -0.3% 1.00x
ArrayOfGenericPOD 220 220 +0.0% 1.00x
Dictionary3OfObjects 858 857 -0.1% 1.00x(?)
RangeAssignment 287 288 +0.3% 1.00x(?)
SuperChars 249747 250076 +0.1% 1.00x(?)
XorLoop 380 380 +0.0% 1.00x
ArrayAppendReserved 536 536 +0.0% 1.00x
StringInterpolation 10869 10845 -0.2% 1.00x(?)
ObjectiveCBridgeStubToNSString 1281 1282 +0.1% 1.00x(?)
ArrayAppendStrings 12149 12099 -0.4% 1.00x(?)
ErrorHandling 2919 2931 +0.4% 1.00x(?)
ObjectiveCBridgeStubFromNSStringRef 128 128 +0.0% 1.00x
ObjectiveCBridgeStubFromNSString 768 768 +0.0% 1.00x
ProtocolDispatch 3038 3040 +0.1% 1.00x(?)
TypeFlood 0 0 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObject 96162 96093 -0.1% 1.00x(?)
AngryPhonebook 2810 2814 +0.1% 1.00x(?)
Dictionary3 511 513 +0.4% 1.00x(?)
Dictionary2 2053 2047 -0.3% 1.00x(?)
SetIntersect_OfObjects 2291 2288 -0.1% 1.00x(?)
ArrayOfRef 3562 3547 -0.4% 1.00x(?)
ObjectiveCBridgeStubURLAppendPathRef 254423 253619 -0.3% 1.00x(?)
ObjectiveCBridgeToNSSet 16198 16151 -0.3% 1.00x(?)
ObjectiveCBridgeStubDateMutation 273 273 +0.0% 1.00x
NSError 324 325 +0.3% 1.00x(?)
DictionaryOfObjects 2286 2295 +0.4% 1.00x(?)
StringEqualPointerComparison 7301 7300 -0.0% 1.00x(?)
PolymorphicCalls 22 22 +0.0% 1.00x
RC4 165 165 +0.0% 1.00x
ObjectiveCBridgeStubToNSStringRef 116 116 +0.0% 1.00x
ArrayAppendOptionals 1236 1242 +0.5% 1.00x(?)
IterateData 2539 2538 -0.0% 1.00x(?)
DictionaryLiteral 2742 2754 +0.4% 1.00x(?)
OpenClose 54 54 +0.0% 1.00x
DictionaryRemoveOfObjects 19620 19625 +0.0% 1.00x(?)
UTF8Decode 288 288 +0.0% 1.00x
SetIsSubsetOf 508 508 +0.0% 1.00x
NopDeinit 36648 36628 -0.1% 1.00x(?)
ObjectiveCBridgeStubToArrayOfNSString 29642 29538 -0.3% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObject 76285 76443 +0.2% 1.00x(?)
SetIntersect 1073 1072 -0.1% 1.00x(?)
SetExclusiveOr 2618 2615 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 142721 142619 -0.1% 1.00x(?)
ArrayInClass 63 63 +0.0% 1.00x
ArrayOfGenericRef 3609 3605 -0.1% 1.00x(?)
StringHasSuffix 800 800 +0.0% 1.00x
Phonebook 7072 7055 -0.2% 1.00x(?)
ObjectiveCBridgeStubDateAccess 182 182 +0.0% 1.00x
Sim2DArray 277 277 +0.0% 1.00x
SetExclusiveOr_OfObjects 7831 7858 +0.3% 1.00x(?)
ArrayAppendRepeatCol 643 643 +0.0% 1.00x
ObjectiveCBridgeToNSDictionary 16804 16841 +0.2% 1.00x(?)
MonteCarloE 10572 10588 +0.1% 1.00x(?)
SetUnion_OfObjects 6633 6650 +0.3% 1.00x(?)
StringHasSuffixUnicode 63850 63586 -0.4% 1.00x
Walsh 323 323 +0.0% 1.00x
ArrayAppend 776 773 -0.4% 1.00x(?)
DictionaryRemove 4595 4584 -0.2% 1.00x(?)
StringHasPrefixUnicode 13447 13381 -0.5% 1.00x(?)
MapReduce 342 342 +0.0% 1.00x
RGBHistogramOfObjects 22007 21974 -0.1% 1.00x(?)
RGBHistogram 2805 2812 +0.2% 1.00x(?)
ArrayAppendArrayOfInt 599 599 +0.0% 1.00x
ArrayOfPOD 182 182 +0.0% 1.00x
SetUnion 3018 3005 -0.4% 1.00x(?)
Chars 626 625 -0.2% 1.00x(?)
StringBuilder 1318 1322 +0.3% 1.00x(?)
ArrayValueProp2 6 6 +0.0% 1.00x
BitCount 1 1 +0.0% 1.00x
ArrayLiteral 1175 1179 +0.3% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 90638 90698 +0.1% 1.00x(?)
StringWalk 5891 5873 -0.3% 1.00x(?)
ArrayValueProp 6 6 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 58566 58495 -0.1% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 235 235 +0.0% 1.00x
Dictionary2OfObjects 3404 3413 +0.3% 1.00x(?)
ArrayValueProp4 6 6 +0.0% 1.00x
TwoSum 1598 1593 -0.3% 1.00x(?)
ArrayValueProp3 6 6 +0.0% 1.00x
PopFrontArray 1118 1133 +1.3% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 116771 117409 +0.6% 0.99x(?)
StaticArray 2614 2648 +1.3% 0.99x(?)
ObjectAllocation 153 154 +0.7% 0.99x(?)
ProtocolDispatch2 159 160 +0.6% 0.99x
HashTest 1746 1757 +0.6% 0.99x(?)
Join 465 469 +0.9% 0.99x(?)
ObjectiveCBridgeStubToNSDateRef 3270 3298 +0.9% 0.99x(?)
PopFrontArrayGeneric 1119 1134 +1.3% 0.99x(?)
SortStringsUnicode 8103 8196 +1.1% 0.99x
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 136344 137371 +0.8% 0.99x(?)
LinkedList 7210 7253 +0.6% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 107448 108267 +0.8% 0.99x(?)
DeadArray 184 185 +0.5% 0.99x
ObjectiveCBridgeStubNSDataAppend 2416 2440 +1.0% 0.99x(?)
ObjectiveCBridgeStubDataAppend 2954 3000 +1.6% 0.98x(?)
StrToInt 4892 4979 +1.8% 0.98x
**Unoptimized (Onone)**

Regression (5)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ArrayAppendRepeatCol 215527 507768 +135.6% 0.42x
ArrayAppendLazyMap 245146 531971 +117.0% 0.46x
ObjectiveCBridgeStubDateMutation 434 486 +12.0% 0.89x
142 6081252 6636746 +9.1% 0.92x
PopFrontUnsafePointer 242843 258521 +6.5% 0.94x

Improvement (3)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
StrComplexWalk 7850 7384 -5.9% 1.06x
StringHasSuffix 1748 1606 -8.1% 1.09x
StringHasPrefix 1686 1523 -9.7% 1.11x

No Changes (135)

TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
Calculator 968 920 -5.0% 1.05x
Phonebook 64349 61572 -4.3% 1.05x(?)
StringEqualPointerComparison 9879 9487 -4.0% 1.04x
ObjectiveCBridgeFromNSSetAnyObjectToString 163398 156795 -4.0% 1.04x(?)
SortStrings 2770 2692 -2.8% 1.03x
DictionaryBridge 4128 3992 -3.3% 1.03x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 214688 209434 -2.5% 1.03x(?)
ErrorHandling 3894 3781 -2.9% 1.03x(?)
TypeFlood 211 205 -2.8% 1.03x(?)
ObjectiveCBridgeStubURLAppendPathRef 262677 256039 -2.5% 1.03x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 124813 120838 -3.2% 1.03x(?)
ObjectiveCBridgeStubFromArrayOfNSString 60746 59131 -2.7% 1.03x(?)
ObjectiveCBridgeStubFromNSString 812 794 -2.2% 1.02x
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 123782 121034 -2.2% 1.02x(?)
NSStringConversion 3009 2943 -2.2% 1.02x(?)
StringWalk 22038 21681 -1.6% 1.02x
PopFrontArray 24971 24773 -0.8% 1.01x
AnyHashableWithAClass 78528 77531 -1.3% 1.01x(?)
ObjectiveCBridgeFromNSStringForced 3073 3042 -1.0% 1.01x(?)
ObjectiveCBridgeStubToNSDate 14178 14021 -1.1% 1.01x(?)
StringInterpolation 15857 15739 -0.7% 1.01x(?)
StringHasSuffixUnicode 65381 65001 -0.6% 1.01x
ObjectiveCBridgeFromNSSetAnyObject 101829 100927 -0.9% 1.01x(?)
ObjectiveCBridgeToNSArray 30286 29894 -1.3% 1.01x(?)
PopFrontArrayGeneric 9765 9643 -1.2% 1.01x(?)
PolymorphicCalls 1143 1132 -1.0% 1.01x
ObjectiveCBridgeStubToNSStringRef 157 155 -1.3% 1.01x(?)
Hanoi 20323 20101 -1.1% 1.01x
ObjectiveCBridgeStubURLAppendPath 260904 257476 -1.3% 1.01x(?)
SortStringsUnicode 9265 9204 -0.7% 1.01x
ObjectiveCBridgeFromNSArrayAnyObject 79633 79170 -0.6% 1.01x(?)
SetExclusiveOr 30668 30409 -0.8% 1.01x(?)
ObjectiveCBridgeFromNSString 5143 5079 -1.2% 1.01x(?)
LinkedList 27950 27721 -0.8% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7602 7553 -0.6% 1.01x(?)
DeadArray 121076 120015 -0.9% 1.01x(?)
ObjectiveCBridgeStubNSDataAppend 2780 2741 -1.4% 1.01x
SevenBoom 1503 1486 -1.1% 1.01x(?)
ArrayValueProp4 3004 2989 -0.5% 1.01x
ObjectiveCBridgeStubNSDateMutationRef 14201 14079 -0.9% 1.01x(?)
TwoSum 6568 6519 -0.8% 1.01x(?)
ArraySubscript 5626 5625 -0.0% 1.00x(?)
ObjectiveCBridgeToNSString 1099 1099 +0.0% 1.00x
RecursiveOwnedParameter 10844 10816 -0.3% 1.00x(?)
Integrate 368 368 +0.0% 1.00x
ClassArrayGetter 1266 1265 -0.1% 1.00x(?)
Array2D 812733 812131 -0.1% 1.00x(?)
MonteCarloPi 53729 53700 -0.1% 1.00x(?)
StringWithCString 155031 154317 -0.5% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectForced 10777 10733 -0.4% 1.00x(?)
Prims 13569 13562 -0.1% 1.00x(?)
SortLettersInPlace 2581 2569 -0.5% 1.00x(?)
DictionarySwap 7516 7534 +0.2% 1.00x(?)
ArrayOfGenericPOD 3427 3431 +0.1% 1.00x(?)
Dictionary3OfObjects 2260 2254 -0.3% 1.00x(?)
RangeAssignment 13289 13303 +0.1% 1.00x(?)
ByteSwap 9 9 +0.0% 1.00x
XorLoop 20020 20001 -0.1% 1.00x
ObjectiveCBridgeStubToNSString 1348 1342 -0.5% 1.00x(?)
StaticArray 35480 35655 +0.5% 1.00x(?)
ProtocolDispatch2 444 444 +0.0% 1.00x
HashTest 5384 5381 -0.1% 1.00x(?)
Dictionary3 1607 1609 +0.1% 1.00x(?)
Dictionary2 4403 4416 +0.3% 1.00x(?)
SetIntersect_OfObjects 13955 13929 -0.2% 1.00x(?)
Join 1462 1465 +0.2% 1.00x(?)
ArrayOfRef 9412 9416 +0.0% 1.00x(?)
NSError 690 690 +0.0% 1.00x
DictionaryOfObjects 4880 4864 -0.3% 1.00x(?)
MapReduce 45473 45644 +0.4% 1.00x(?)
IterateData 10576 10580 +0.0% 1.00x(?)
DictionaryLiteral 16610 16591 -0.1% 1.00x(?)
UTF8Decode 43885 43754 -0.3% 1.00x(?)
SetIsSubsetOf 2458 2449 -0.4% 1.00x(?)
Dictionary 2147 2140 -0.3% 1.00x(?)
NopDeinit 58047 58079 +0.1% 1.00x(?)
ObjectiveCBridgeStubToArrayOfNSString 29777 29635 -0.5% 1.00x(?)
SetIntersect 15157 15127 -0.2% 1.00x(?)
ObjectiveCBridgeStubDataAppend 3333 3338 +0.1% 1.00x(?)
RGBHistogramOfObjects 93516 93409 -0.1% 1.00x(?)
ObjectiveCBridgeStubNSDateRefAccess 1254 1260 +0.5% 1.00x
ArrayInClass 3955 3954 -0.0% 1.00x(?)
ArrayOfGenericRef 10069 10041 -0.3% 1.00x(?)
Sim2DArray 14575 14583 +0.1% 1.00x(?)
SetExclusiveOr_OfObjects 46839 46834 -0.0% 1.00x(?)
ObjectiveCBridgeToNSDictionary 16976 16938 -0.2% 1.00x(?)
MonteCarloE 108856 108657 -0.2% 1.00x(?)
SetUnion_OfObjects 34398 34403 +0.0% 1.00x(?)
RC4 9368 9368 +0.0% 1.00x
Walsh 13227 13204 -0.2% 1.00x(?)
SetIsSubsetOf_OfObjects 2315 2316 +0.0% 1.00x(?)
DictionaryRemove 17386 17318 -0.4% 1.00x
StringHasPrefixUnicode 14936 15005 +0.5% 1.00x(?)
RGBHistogram 44192 44170 -0.1% 1.00x(?)
ArrayOfPOD 2330 2327 -0.1% 1.00x(?)
SetUnion 18392 18410 +0.1% 1.00x(?)
Chars 5013 4998 -0.3% 1.00x
BitCount 96 96 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 91923 91892 -0.0% 1.00x(?)
ArrayValueProp 2629 2616 -0.5% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
Memset 20657 20658 +0.0% 1.00x(?)
Dictionary2OfObjects 6264 6244 -0.3% 1.00x(?)
ArrayAppendReserved 3193 3196 +0.1% 1.00x(?)
ArrayValueProp2 3143 3141 -0.1% 1.00x(?)
ArrayValueProp3 3065 3064 -0.0% 1.00x(?)
ObjectiveCBridgeStubFromNSDate 3803 3796 -0.2% 1.00x(?)
DictionarySwapOfObjects 21318 21515 +0.9% 0.99x(?)
StackPromo 128304 129868 +1.2% 0.99x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 223615 225789 +1.0% 0.99x(?)
Histogram 11686 11774 +0.8% 0.99x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7703 7745 +0.6% 0.99x(?)
SuperChars 275533 278075 +0.9% 0.99x(?)
ArrayAppendStrings 11827 11907 +0.7% 0.99x
ObjectiveCBridgeStubFromNSStringRef 159 160 +0.6% 0.99x
ObjectAllocation 560 568 +1.4% 0.99x(?)
ArrayLiteral 1240 1249 +0.7% 0.99x
ObjectiveCBridgeStubToNSDateRef 3329 3362 +1.0% 0.99x(?)
CaptureProp 116402 117036 +0.5% 0.99x
DictionaryRemoveOfObjects 46910 47254 +0.7% 0.99x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 142873 144564 +1.2% 0.99x(?)
NSDictionaryCastToSwift 8359 8435 +0.9% 0.99x(?)
StringBuilder 2708 2729 +0.8% 0.99x(?)
ObjectiveCBridgeToNSSet 16570 16697 +0.8% 0.99x(?)
StrToInt 5740 5793 +0.9% 0.99x
AngryPhonebook 2990 3017 +0.9% 0.99x
OpenClose 437 446 +2.1% 0.98x
ArrayAppendSequence 106127 108115 +1.9% 0.98x
ObjectiveCBridgeStubDateAccess 1095 1125 +2.7% 0.97x
ObjectiveCBridgeStubFromNSDateRef 4027 4208 +4.5% 0.96x
ArrayAppendGenericStructs 1307 1355 +3.7% 0.96x
ProtocolDispatch 5471 5671 +3.7% 0.96x
ArrayAppendOptionals 1307 1362 +4.2% 0.96x
ArrayAppend 3441 3618 +5.1% 0.95x
ArrayAppendArrayOfInt 642 677 +5.5% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i5 Processor Speed: 2.8 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 3 MB Memory: 16 GB

slavapestov and others added 26 commits January 4, 2017 02:02
Cleaning out some old JIRAs, don't want these to regress...
…on-tests

Add test cases for a few bugs that seem to be fixed already
…atePairedRequirements

Add test case for crash triggered in `swift::GenericSignature::enumeratePairedRequirements`.

Current number of unresolved compiler crashers: 20 (5389 resolved)

Assertion failure in `llvm/include/llvm/ADT/Optional.h (line 138)`:

```
Assertion `hasVal' failed.

When executing: T &&llvm::Optional<swift::ProtocolConformanceRef>::operator*() && [T = swift::ProtocolConformanceRef]
```

Assertion context:

```
    return hasValue() ? getValue() : std::forward<U>(value);
  }

#if LLVM_HAS_RVALUE_REFERENCE_THIS
  T&& getValue() && { assert(hasVal); return std::move(*getPointer()); }
  T&& operator*() && { assert(hasVal); return std::move(*getPointer()); }

  template <typename U>
  T getValueOr(U &&value) && {
    return hasValue() ? std::move(getValue()) : std::forward<U>(value);
  }
```
Stack trace:

```
0 0x0000000003512118 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/path/to/swift/bin/swift+0x3512118)
1 0x0000000003512856 SignalHandler(int) (/path/to/swift/bin/swift+0x3512856)
2 0x00007f07b159e3e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x113e0)
3 0x00007f07afccc428 gsignal /build/glibc-Qz8a69/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
4 0x00007f07afcce02a abort /build/glibc-Qz8a69/glibc-2.23/stdlib/abort.c:91:0
5 0x00007f07afcc4bd7 __assert_fail_base /build/glibc-Qz8a69/glibc-2.23/assert/assert.c:92:0
6 0x00007f07afcc4c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
7 0x0000000000e4ee90 bool llvm::function_ref<bool (swift::Type, llvm::ArrayRef<swift::Requirement>)>::callback_fn<swift::GenericSignature::getSubstitutions(llvm::function_ref<swift::Type (swift::SubstitutableType*)>, llvm::function_ref<llvm::Optional<swift::ProtocolConformanceRef> (swift::CanType, swift::Type, swift::ProtocolType*)>, llvm::SmallVectorImpl<swift::Substitution>&) const::$_3>(long, swift::Type, llvm::ArrayRef<swift::Requirement>) (/path/to/swift/bin/swift+0xe4ee90)
8 0x0000000000e4da41 swift::GenericSignature::enumeratePairedRequirements(llvm::function_ref<bool (swift::Type, llvm::ArrayRef<swift::Requirement>)>) const (/path/to/swift/bin/swift+0xe4da41)
9 0x0000000000e4dd26 swift::GenericSignature::getSubstitutions(llvm::DenseMap<swift::SubstitutableType*, swift::Type, llvm::DenseMapInfo<swift::SubstitutableType*>, llvm::detail::DenseMapPair<swift::SubstitutableType*, swift::Type> > const&, llvm::function_ref<llvm::Optional<swift::ProtocolConformanceRef> (swift::CanType, swift::Type, swift::ProtocolType*)>, llvm::SmallVectorImpl<swift::Substitution>&) const (/path/to/swift/bin/swift+0xe4dd26)
10 0x0000000000c29986 swift::constraints::Solution::computeSubstitutions(swift::Type, swift::DeclContext*, swift::Type, swift::constraints::ConstraintLocator*, llvm::SmallVectorImpl<swift::Substitution>&) const (/path/to/swift/bin/swift+0xc29986)
11 0x0000000000c30c90 (anonymous namespace)::ExprRewriter::buildMemberRef(swift::Expr*, swift::Type, swift::SourceLoc, swift::ValueDecl*, swift::DeclNameLoc, swift::Type, swift::constraints::ConstraintLocatorBuilder, swift::constraints::ConstraintLocatorBuilder, bool, swift::FunctionRefKind, swift::AccessSemantics, bool) (/path/to/swift/bin/swift+0xc30c90)
12 0x0000000000c41461 swift::ASTVisitor<(anonymous namespace)::ExprRewriter, swift::Expr*, void, void, void, void, void>::visit(swift::Expr*) (/path/to/swift/bin/swift+0xc41461)
13 0x0000000000c2f774 (anonymous namespace)::ExprRewriter::walkToExprPost(swift::Expr*) (/path/to/swift/bin/swift+0xc2f774)
14 0x0000000000c35021 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) (/path/to/swift/bin/swift+0xc35021)
15 0x0000000000e0c387 swift::ASTVisitor<(anonymous namespace)::Traversal, swift::Expr*, swift::Stmt*, bool, swift::Pattern*, bool, void>::visit(swift::Expr*) (/path/to/swift/bin/swift+0xe0c387)
16 0x0000000000e0ad1b swift::Expr::walk(swift::ASTWalker&) (/path/to/swift/bin/swift+0xe0ad1b)
17 0x0000000000c2c268 swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::Expr*, swift::Type, bool, bool, bool) (/path/to/swift/bin/swift+0xc2c268)
18 0x0000000000cf5433 swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) (/path/to/swift/bin/swift+0xcf5433)
19 0x0000000000c5a791 (anonymous namespace)::FailureDiagnosis::typeCheckChildIndependently(swift::Expr*, swift::Type, swift::ContextualTypePurpose, swift::OptionSet<TCCFlags, unsigned int>, swift::ExprTypeCheckListener*, bool) (/path/to/swift/bin/swift+0xc5a791)
20 0x0000000000c63c40 (anonymous namespace)::FailureDiagnosis::typeCheckArgumentChildIndependently(swift::Expr*, swift::Type, (anonymous namespace)::CalleeCandidateInfo const&, swift::OptionSet<TCCFlags, unsigned int>) (/path/to/swift/bin/swift+0xc63c40)
21 0x0000000000c70920 (anonymous namespace)::FailureDiagnosis::visitApplyExpr(swift::ApplyExpr*) (/path/to/swift/bin/swift+0xc70920)
22 0x0000000000c567a3 swift::ASTVisitor<(anonymous namespace)::FailureDiagnosis, bool, void, void, void, void, void>::visit(swift::Expr*) (/path/to/swift/bin/swift+0xc567a3)
23 0x0000000000c4ec2a swift::constraints::ConstraintSystem::diagnoseFailureForExpr(swift::Expr*) (/path/to/swift/bin/swift+0xc4ec2a)
24 0x0000000000c55ced swift::constraints::ConstraintSystem::salvage(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::Expr*) (/path/to/swift/bin/swift+0xc55ced)
25 0x0000000000cf1ed8 swift::TypeChecker::solveForExpression(swift::Expr*&, swift::DeclContext*, swift::Type, swift::FreeTypeVariableBinding, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem&, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) (/path/to/swift/bin/swift+0xcf1ed8)
26 0x0000000000cf539d swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) (/path/to/swift/bin/swift+0xcf539d)
27 0x0000000000c0cf9e swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) (/path/to/swift/bin/swift+0xc0cf9e)
28 0x0000000000c0c7c6 swift::TypeChecker::typeCheckTopLevelCodeDecl(swift::TopLevelCodeDecl*) (/path/to/swift/bin/swift+0xc0c7c6)
29 0x0000000000c21c70 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int) (/path/to/swift/bin/swift+0xc21c70)
30 0x0000000000996736 swift::CompilerInstance::performSema() (/path/to/swift/bin/swift+0x996736)
31 0x000000000047c5aa swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/path/to/swift/bin/swift+0x47c5aa)
32 0x000000000043ade7 main (/path/to/swift/bin/swift+0x43ade7)
33 0x00007f07afcb7830 __libc_start_main /build/glibc-Qz8a69/glibc-2.23/csu/../csu/libc-start.c:325:0
34 0x0000000000438229 _start (/path/to/swift/bin/swift+0x438229)
```
…reachable-executed-at-swift-lib-sema-csapply-cpp-5466

[swiftc (20 vs. 5389)] Add crasher in swift::GenericSignature::enumeratePairedRequirements
…pendIdentifier(...)

Add test case for crash triggered in `swift::NewMangling::Mangler::appendIdentifier(...)`.

Current number of unresolved compiler crashers: 21 (5389 resolved)

/cc @eeckstein - just wanted to let you know that this crasher caused an assertion failure for the assertion `!isDigit(ident[Pos]) && "first char of sub-string may not be a digit"` added on 2016-12-02 by you in commit 684092d :-)

Assertion failure in [`include/swift/Basic/ManglingUtils.h (line 187)`](https://github.com/apple/swift/blob/master/include/swift/Basic/ManglingUtils.h#L187):

```
Assertion `!isDigit(ident[Pos]) && "first char of sub-string may not be a digit"' failed.

When executing: void swift::NewMangling::mangleIdentifier(Mangler &, llvm::StringRef) [Mangler = swift::NewMangling::Mangler]
```

Assertion context:

```
      // Mangle the sub-string up to the next word substitution (or to the end
      // of the identifier - that's why we added the dummy-word).
      // The first thing: we add the encoded sub-string length.
      M.Buffer << (Repl.StringPos - Pos);
      assert(!isDigit(ident[Pos]) &&
             "first char of sub-string may not be a digit");
      do {
        // Update the start position of new added words, so that they refer to
        // the begin of the whole mangled Buffer.
        if (WordsInBuffer < M.Words.size() &&
            M.Words[WordsInBuffer].start == Pos) {
```
Stack trace:

```
0 0x0000000003512118 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/path/to/swift/bin/swift+0x3512118)
1 0x0000000003512856 SignalHandler(int) (/path/to/swift/bin/swift+0x3512856)
2 0x00007f97fd01b3e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x113e0)
3 0x00007f97fb749428 gsignal /build/glibc-Qz8a69/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
4 0x00007f97fb74b02a abort /build/glibc-Qz8a69/glibc-2.23/stdlib/abort.c:91:0
5 0x00007f97fb741bd7 __assert_fail_base /build/glibc-Qz8a69/glibc-2.23/assert/assert.c:92:0
6 0x00007f97fb741c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
7 0x0000000000efb1ec void swift::NewMangling::mangleIdentifier<swift::NewMangling::Mangler>(swift::NewMangling::Mangler&, llvm::StringRef) (/path/to/swift/bin/swift+0xefb1ec)
8 0x0000000000efa72d swift::NewMangling::Mangler::appendIdentifier(llvm::StringRef) (/path/to/swift/bin/swift+0xefa72d)
9 0x0000000000dcef51 swift::NewMangling::ASTMangler::appendDeclName(swift::ValueDecl const*) (/path/to/swift/bin/swift+0xdcef51)
10 0x0000000000dcbbc6 swift::NewMangling::ASTMangler::appendEntity(swift::ValueDecl const*, llvm::StringRef, bool) (/path/to/swift/bin/swift+0xdcbbc6)
11 0x0000000000dccb0e swift::NewMangling::ASTMangler::mangleGlobalVariableFull[abi:cxx11](swift::VarDecl const*) (/path/to/swift/bin/swift+0xdccb0e)
12 0x00000000006694b5 swift::Lowering::SILGenModule::getSILGlobalVariable(swift::VarDecl*, swift::ForDefinition_t) (/path/to/swift/bin/swift+0x6694b5)
13 0x000000000063a3e5 swift::Lowering::SILGenFunction::emitInitializationForVarDecl(swift::VarDecl*) (/path/to/swift/bin/swift+0x63a3e5)
14 0x000000000063c0a1 swift::ASTVisitor<(anonymous namespace)::InitializationForPattern, void, void, void, std::unique_ptr<swift::Lowering::Initialization, std::default_delete<swift::Lowering::Initialization> >, void, void>::visit(swift::Pattern*) (/path/to/swift/bin/swift+0x63c0a1)
15 0x000000000063b164 swift::Lowering::SILGenFunction::emitPatternBinding(swift::PatternBindingDecl*, unsigned int) (/path/to/swift/bin/swift+0x63b164)
16 0x000000000063b2dd swift::Lowering::SILGenFunction::visitPatternBindingDecl(swift::PatternBindingDecl*) (/path/to/swift/bin/swift+0x63b2dd)
17 0x000000000061e0ac swift::Lowering::SILGenModule::visitTopLevelCodeDecl(swift::TopLevelCodeDecl*) (/path/to/swift/bin/swift+0x61e0ac)
18 0x000000000061e96b swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) (/path/to/swift/bin/swift+0x61e96b)
19 0x000000000061f95b swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*, llvm::Optional<unsigned int>, bool, bool) (/path/to/swift/bin/swift+0x61f95b)
20 0x000000000061ffb5 swift::performSILGeneration(swift::FileUnit&, swift::SILOptions&, llvm::Optional<unsigned int>, bool) (/path/to/swift/bin/swift+0x61ffb5)
21 0x000000000047e7a5 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/path/to/swift/bin/swift+0x47e7a5)
22 0x000000000043ade7 main (/path/to/swift/bin/swift+0x43ade7)
23 0x00007f97fb734830 __libc_start_main /build/glibc-Qz8a69/glibc-2.23/csu/../csu/libc-start.c:325:0
24 0x0000000000438229 _start (/path/to/swift/bin/swift+0x438229)
```
…rst-char-of-sub-string-may-not-be-a-digit

[swiftc (21 vs. 5389)] Add crasher in swift::NewMangling::Mangler::appendIdentifier(...)
…tisfy(...)

Add test case for crash triggered in `swift::IterativeTypeChecker::satisfy(...)`.

Current number of unresolved compiler crashers: 22 (5389 resolved)

/cc @DougGregor - just wanted to let you know that this crasher caused an assertion failure for the assertion `isSatisfied(request)` added on 2015-10-09 by you in commit b49964e :-)

Assertion failure in [`lib/Sema/IterativeTypeChecker.cpp (line 107)`](https://github.com/apple/swift/blob/master/lib/Sema/IterativeTypeChecker.cpp#L107):

```
Assertion `isSatisfied(request)' failed.

When executing: void swift::IterativeTypeChecker::satisfy(swift::TypeCheckRequest)
```

Assertion context:

```
      return true;
    });

    // If there were no unsatisfied dependencies, we're done.
    if (unsatisfied.empty()) {
      assert(isSatisfied(request));
      break;
    }

    // Recurse to satisfy any unsatisfied dependencies.
    // FIXME: Don't recurse in the iterative type checker, silly!
```
Stack trace:

```
0 0x0000000003512118 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/path/to/swift/bin/swift+0x3512118)
1 0x0000000003512856 SignalHandler(int) (/path/to/swift/bin/swift+0x3512856)
2 0x00007fb14edc23e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x113e0)
3 0x00007fb14d4f0428 gsignal /build/glibc-Qz8a69/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
4 0x00007fb14d4f202a abort /build/glibc-Qz8a69/glibc-2.23/stdlib/abort.c:91:0
5 0x00007fb14d4e8bd7 __assert_fail_base /build/glibc-Qz8a69/glibc-2.23/assert/assert.c:92:0
6 0x00007fb14d4e8c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
7 0x0000000000d76c99 (/path/to/swift/bin/swift+0xd76c99)
8 0x0000000000d76b3b swift::IterativeTypeChecker::satisfy(swift::TypeCheckRequest) (/path/to/swift/bin/swift+0xd76b3b)
9 0x0000000000d01ae9 swift::TypeChecker::resolveInheritanceClause(llvm::PointerUnion<swift::TypeDecl*, swift::ExtensionDecl*>) (/path/to/swift/bin/swift+0xd01ae9)
10 0x0000000000d7e387 swift::ArchetypeBuilder::addAbstractTypeParamRequirements(swift::AbstractTypeParamDecl*, swift::ArchetypeBuilder::PotentialArchetype*, swift::RequirementSource::Kind, llvm::SmallPtrSetImpl<swift::ProtocolDecl*>&) (/path/to/swift/bin/swift+0xd7e387)
11 0x0000000000d7e74f swift::ArchetypeBuilder::addConformanceRequirement(swift::ArchetypeBuilder::PotentialArchetype*, swift::ProtocolDecl*, swift::RequirementSource, llvm::SmallPtrSetImpl<swift::ProtocolDecl*>&) (/path/to/swift/bin/swift+0xd7e74f)
12 0x0000000000d842bd bool llvm::function_ref<bool (swift::Type, swift::SourceLoc)>::callback_fn<swift::ArchetypeBuilder::addAbstractTypeParamRequirements(swift::AbstractTypeParamDecl*, swift::ArchetypeBuilder::PotentialArchetype*, swift::RequirementSource::Kind, llvm::SmallPtrSetImpl<swift::ProtocolDecl*>&)::$_5>(long, swift::Type, swift::SourceLoc) (/path/to/swift/bin/swift+0xd842bd)
13 0x0000000000d8445f std::_Function_handler<void (swift::Type, swift::SourceLoc), swift::ArchetypeBuilder::visitInherited(llvm::ArrayRef<swift::TypeLoc>, llvm::function_ref<bool (swift::Type, swift::SourceLoc)>)::$_6>::_M_invoke(std::_Any_data const&, swift::Type&&, swift::SourceLoc&&) (/path/to/swift/bin/swift+0xd8445f)
14 0x0000000000d7f829 swift::ArchetypeBuilder::visitInherited(llvm::ArrayRef<swift::TypeLoc>, llvm::function_ref<bool (swift::Type, swift::SourceLoc)>) (/path/to/swift/bin/swift+0xd7f829)
15 0x0000000000d7e3cd swift::ArchetypeBuilder::addAbstractTypeParamRequirements(swift::AbstractTypeParamDecl*, swift::ArchetypeBuilder::PotentialArchetype*, swift::RequirementSource::Kind, llvm::SmallPtrSetImpl<swift::ProtocolDecl*>&) (/path/to/swift/bin/swift+0xd7e3cd)
16 0x0000000000d7e04f swift::ArchetypeBuilder::addGenericParameterRequirements(swift::GenericTypeParamDecl*) (/path/to/swift/bin/swift+0xd7e04f)
17 0x0000000000d2fcc6 swift::TypeChecker::checkGenericParamList(swift::ArchetypeBuilder*, swift::GenericParamList*, swift::GenericSignature*, swift::GenericTypeResolver*) (/path/to/swift/bin/swift+0xd2fcc6)
18 0x0000000000d31eea swift::TypeChecker::checkGenericEnvironment(swift::GenericParamList*, swift::DeclContext*, swift::GenericSignature*, bool, llvm::function_ref<void (swift::ArchetypeBuilder&)>) (/path/to/swift/bin/swift+0xd31eea)
19 0x0000000000d32286 swift::TypeChecker::validateGenericTypeSignature(swift::GenericTypeDecl*) (/path/to/swift/bin/swift+0xd32286)
20 0x0000000000d04a4f swift::TypeChecker::validateDecl(swift::ValueDecl*) (/path/to/swift/bin/swift+0xd04a4f)
21 0x0000000000d04570 swift::TypeChecker::validateDecl(swift::ValueDecl*) (/path/to/swift/bin/swift+0xd04570)
22 0x0000000000e6b025 swift::namelookup::ResolutionKind recordImportDecls<llvm::SmallSet<swift::CanType, 4u, (anonymous namespace)::SortCanType> >(swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&, llvm::ArrayRef<swift::ValueDecl*>, llvm::SmallSet<swift::CanType, 4u, (anonymous namespace)::SortCanType>&, swift::namelookup::ResolutionKind) (/path/to/swift/bin/swift+0xe6b025)
23 0x0000000000e691be void lookupInModule<llvm::SmallSet<swift::CanType, 4u, (anonymous namespace)::SortCanType>, swift::namelookup::lookupInModule(swift::ModuleDecl*, llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::DeclName, llvm::SmallVectorImpl<swift::ValueDecl*>&, swift::NLKind, swift::namelookup::ResolutionKind, swift::LazyResolver*, swift::DeclContext const*, llvm::ArrayRef<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >)::$_0>(swift::ModuleDecl*, llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, llvm::SmallVectorImpl<swift::ValueDecl*>&, swift::namelookup::ResolutionKind, bool, swift::LazyResolver*, llvm::SmallDenseMap<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*>, llvm::TinyPtrVector<swift::ValueDecl*>, 32u, llvm::DenseMapInfo<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >, llvm::detail::DenseMapPair<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*>, llvm::TinyPtrVector<swift::ValueDecl*> > >&, swift::DeclContext const*, bool, llvm::ArrayRef<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >, swift::namelookup::lookupInModule(swift::ModuleDecl*, llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::DeclName, llvm::SmallVectorImpl<swift::ValueDecl*>&, swift::NLKind, swift::namelookup::ResolutionKind, swift::LazyResolver*, swift::DeclContext const*, llvm::ArrayRef<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >)::$_0) (/path/to/swift/bin/swift+0xe691be)
24 0x0000000000e68a77 swift::namelookup::lookupInModule(swift::ModuleDecl*, llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::DeclName, llvm::SmallVectorImpl<swift::ValueDecl*>&, swift::NLKind, swift::namelookup::ResolutionKind, swift::LazyResolver*, swift::DeclContext const*, llvm::ArrayRef<std::pair<llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >) (/path/to/swift/bin/swift+0xe68a77)
25 0x0000000000e70752 swift::UnqualifiedLookup::UnqualifiedLookup(swift::DeclName, swift::DeclContext*, swift::LazyResolver*, bool, swift::SourceLoc, bool, bool, bool) (/path/to/swift/bin/swift+0xe70752)
26 0x0000000000d33f1b swift::TypeChecker::lookupUnqualified(swift::DeclContext*, swift::DeclName, swift::SourceLoc, swift::OptionSet<swift::NameLookupFlags, unsigned int>) (/path/to/swift/bin/swift+0xd33f1b)
27 0x0000000000cf041f swift::TypeChecker::resolveDeclRefExpr(swift::UnresolvedDeclRefExpr*, swift::DeclContext*) (/path/to/swift/bin/swift+0xcf041f)
28 0x0000000000cfcdd2 (anonymous namespace)::PreCheckExpression::walkToExprPre(swift::Expr*) (/path/to/swift/bin/swift+0xcfcdd2)
29 0x0000000000e0df70 (anonymous namespace)::Traversal::visitApplyExpr(swift::ApplyExpr*) (/path/to/swift/bin/swift+0xe0df70)
30 0x0000000000e0ad1b swift::Expr::walk(swift::ASTWalker&) (/path/to/swift/bin/swift+0xe0ad1b)
31 0x0000000000cf1dd5 swift::TypeChecker::solveForExpression(swift::Expr*&, swift::DeclContext*, swift::Type, swift::FreeTypeVariableBinding, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem&, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) (/path/to/swift/bin/swift+0xcf1dd5)
32 0x0000000000cf539d swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) (/path/to/swift/bin/swift+0xcf539d)
33 0x0000000000cf90e1 swift::TypeChecker::typeCheckBinding(swift::Pattern*&, swift::Expr*&, swift::DeclContext*, bool) (/path/to/swift/bin/swift+0xcf90e1)
34 0x0000000000cf92ad swift::TypeChecker::typeCheckPatternBinding(swift::PatternBindingDecl*, unsigned int, bool) (/path/to/swift/bin/swift+0xcf92ad)
35 0x0000000000d0e517 validatePatternBindingDecl(swift::TypeChecker&, swift::PatternBindingDecl*, unsigned int) (/path/to/swift/bin/swift+0xd0e517)
36 0x0000000000d0a65d (anonymous namespace)::DeclChecker::visit(swift::Decl*) (/path/to/swift/bin/swift+0xd0a65d)
37 0x0000000000d178fb (anonymous namespace)::DeclChecker::visitClassDecl(swift::ClassDecl*) (/path/to/swift/bin/swift+0xd178fb)
38 0x0000000000d0a5b4 (anonymous namespace)::DeclChecker::visit(swift::Decl*) (/path/to/swift/bin/swift+0xd0a5b4)
39 0x0000000000d0a4e3 swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) (/path/to/swift/bin/swift+0xd0a4e3)
40 0x0000000000c21bf5 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int) (/path/to/swift/bin/swift+0xc21bf5)
41 0x0000000000996736 swift::CompilerInstance::performSema() (/path/to/swift/bin/swift+0x996736)
42 0x000000000047c5aa swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/path/to/swift/bin/swift+0x47c5aa)
43 0x000000000043ade7 main (/path/to/swift/bin/swift+0x43ade7)
44 0x00007fb14d4db830 __libc_start_main /build/glibc-Qz8a69/glibc-2.23/csu/../csu/libc-start.c:325:0
45 0x0000000000438229 _start (/path/to/swift/bin/swift+0x438229)
```
…satisfied-request

[swiftc (22 vs. 5389)] Add crasher in swift::IterativeTypeChecker::satisfy(...)
…InContext

Add test case for crash triggered in `swift::TypeChecker::resolveTypeInContext`.

Current number of unresolved compiler crashers: 23 (5389 resolved)

/cc @slavapestov - just wanted to let you know that this crasher caused an assertion failure for the assertion `false && "Should have found context by now"` added on 2016-12-06 by you in commit fdaa886 :-)

Assertion failure in [`lib/Sema/TypeCheckType.cpp (line 325)`](https://github.com/apple/swift/blob/master/lib/Sema/TypeCheckType.cpp#L325):

```
Assertion `false && "Should have found context by now"' failed.

When executing: std::tuple<DeclContext *, NominalTypeDecl *, bool> findDeclContextForType(swift::TypeChecker &, swift::TypeDecl *, swift::DeclContext *, TypeResolutionOptions)
```

Assertion context:

```
    // or associated type from a context outside a ProtocolDecl.
    if (isa<ProtocolDecl>(parentDC) && isa<AbstractTypeParamDecl>(typeDecl))
      return std::make_tuple(nullptr, nullptr, false);
  }

  assert(false && "Should have found context by now");
  return std::make_tuple(nullptr, nullptr, false);
}

Type TypeChecker::resolveTypeInContext(
       TypeDecl *typeDecl,
```
Stack trace:

```
0 0x0000000003512118 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/path/to/swift/bin/swift+0x3512118)
1 0x0000000003512856 SignalHandler(int) (/path/to/swift/bin/swift+0x3512856)
2 0x00007fa33d95b3e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x113e0)
3 0x00007fa33c089428 gsignal /build/glibc-Qz8a69/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
4 0x00007fa33c08b02a abort /build/glibc-Qz8a69/glibc-2.23/stdlib/abort.c:91:0
5 0x00007fa33c081bd7 __assert_fail_base /build/glibc-Qz8a69/glibc-2.23/assert/assert.c:92:0
6 0x00007fa33c081c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
7 0x0000000000c11d39 swift::TypeChecker::resolveTypeInContext(swift::TypeDecl*, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*) (/path/to/swift/bin/swift+0xc11d39)
8 0x0000000000c19498 resolveTypeDecl(swift::TypeChecker&, swift::TypeDecl*, swift::SourceLoc, swift::DeclContext*, swift::GenericIdentTypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) (/path/to/swift/bin/swift+0xc19498)
9 0x0000000000c1909d resolveTopLevelIdentTypeComponent(swift::TypeChecker&, swift::DeclContext*, swift::ComponentIdentTypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) (/path/to/swift/bin/swift+0xc1909d)
10 0x0000000000c138f9 resolveIdentTypeComponent(swift::TypeChecker&, swift::DeclContext*, llvm::ArrayRef<swift::ComponentIdentTypeRepr*>, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) (/path/to/swift/bin/swift+0xc138f9)
11 0x0000000000c13323 swift::TypeChecker::resolveIdentifierType(swift::DeclContext*, swift::IdentTypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) (/path/to/swift/bin/swift+0xc13323)
12 0x0000000000c14357 (anonymous namespace)::TypeResolver::resolveType(swift::TypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>) (/path/to/swift/bin/swift+0xc14357)
13 0x0000000000c1425c swift::TypeChecker::resolveType(swift::TypeRepr*, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) (/path/to/swift/bin/swift+0xc1425c)
14 0x0000000000c129fa swift::TypeChecker::validateType(swift::TypeLoc&, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) (/path/to/swift/bin/swift+0xc129fa)
15 0x0000000000d37249 validateParameterType(swift::ParamDecl*, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver&, swift::TypeChecker&) (/path/to/swift/bin/swift+0xd37249)
16 0x0000000000d370f9 swift::TypeChecker::typeCheckParameterList(swift::ParameterList*, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver&) (/path/to/swift/bin/swift+0xd370f9)
17 0x0000000000d30eea checkGenericFuncSignature(swift::TypeChecker&, swift::ArchetypeBuilder*, swift::AbstractFunctionDecl*, swift::GenericTypeResolver&) (/path/to/swift/bin/swift+0xd30eea)
18 0x0000000000d3024e swift::TypeChecker::validateGenericFuncSignature(swift::AbstractFunctionDecl*) (/path/to/swift/bin/swift+0xd3024e)
19 0x0000000000d1aceb (anonymous namespace)::DeclChecker::visitFuncDecl(swift::FuncDecl*) (/path/to/swift/bin/swift+0xd1aceb)
20 0x0000000000d0a720 (anonymous namespace)::DeclChecker::visit(swift::Decl*) (/path/to/swift/bin/swift+0xd0a720)
21 0x0000000000d178fb (anonymous namespace)::DeclChecker::visitClassDecl(swift::ClassDecl*) (/path/to/swift/bin/swift+0xd178fb)
22 0x0000000000d0a5b4 (anonymous namespace)::DeclChecker::visit(swift::Decl*) (/path/to/swift/bin/swift+0xd0a5b4)
23 0x0000000000d1874b (anonymous namespace)::DeclChecker::visitProtocolDecl(swift::ProtocolDecl*) (/path/to/swift/bin/swift+0xd1874b)
24 0x0000000000d0a700 (anonymous namespace)::DeclChecker::visit(swift::Decl*) (/path/to/swift/bin/swift+0xd0a700)
25 0x0000000000d0a4e3 swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) (/path/to/swift/bin/swift+0xd0a4e3)
26 0x0000000000c21bf5 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int) (/path/to/swift/bin/swift+0xc21bf5)
27 0x0000000000996736 swift::CompilerInstance::performSema() (/path/to/swift/bin/swift+0x996736)
28 0x000000000047c5aa swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/path/to/swift/bin/swift+0x47c5aa)
29 0x000000000043ade7 main (/path/to/swift/bin/swift+0x43ade7)
30 0x00007fa33c074830 __libc_start_main /build/glibc-Qz8a69/glibc-2.23/csu/../csu/libc-start.c:325:0
31 0x0000000000438229 _start (/path/to/swift/bin/swift+0x438229)
```
…lse-should-have-found-context-by-now

[swiftc (23 vs. 5389)] Add crasher in swift::TypeChecker::resolveTypeInContext
Add test case for crash triggered in `swift::Parser::parseTopLevel(...)`.

Current number of unresolved compiler crashers: 24 (5389 resolved)

Assertion failure in [`lib/Parse/ParseDecl.cpp (line 222)`](https://github.com/apple/swift/blob/master/lib/Parse/ParseDecl.cpp#L222):

```
Assertion `isInSILMode() && "'sil' should only be a keyword in SIL mode"' failed.

When executing: bool swift::Parser::parseTopLevel()
```

Assertion context:

```
    parseSILDefaultWitnessTable();
  } else if (Tok.is(tok::kw_sil_coverage_map)) {
    assert(isInSILMode() && "'sil' should only be a keyword in SIL mode");
    parseSILCoverageMap();
  } else if (Tok.is(tok::kw_sil_scope)) {
    assert(isInSILMode() && "'sil' should only be a keyword in SIL mode");
    parseSILScope();
  } else {
    parseBraceItems(Items,
                    allowTopLevelCode() ? BraceItemListKind::TopLevelCode
                                        : BraceItemListKind::TopLevelLibrary);
```
Stack trace:

```
0 0x0000000003512118 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/path/to/swift/bin/swift+0x3512118)
1 0x0000000003512856 SignalHandler(int) (/path/to/swift/bin/swift+0x3512856)
2 0x00007f8ea4f2d3e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x113e0)
3 0x00007f8ea365b428 gsignal /build/glibc-Qz8a69/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
4 0x00007f8ea365d02a abort /build/glibc-Qz8a69/glibc-2.23/stdlib/abort.c:91:0
5 0x00007f8ea3653bd7 __assert_fail_base /build/glibc-Qz8a69/glibc-2.23/assert/assert.c:92:0
6 0x00007f8ea3653c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
7 0x0000000000b80db1 swift::Parser::parseTopLevel() (/path/to/swift/bin/swift+0xb80db1)
8 0x0000000000bb4f10 swift::parseIntoSourceFile(swift::SourceFile&, unsigned int, bool*, swift::SILParserState*, swift::PersistentParserState*, swift::DelayedParsingCallbacks*) (/path/to/swift/bin/swift+0xbb4f10)
9 0x0000000000996713 swift::CompilerInstance::performSema() (/path/to/swift/bin/swift+0x996713)
10 0x000000000047c5aa swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/path/to/swift/bin/swift+0x47c5aa)
11 0x000000000043ade7 main (/path/to/swift/bin/swift+0x43ade7)
12 0x00007f8ea3646830 __libc_start_main /build/glibc-Qz8a69/glibc-2.23/csu/../csu/libc-start.c:325:0
13 0x0000000000438229 _start (/path/to/swift/bin/swift+0x438229)
```
…insilmode-sil-should-only-be-a-keyword-in-sil-mode

[swiftc (24 vs. 5389)] Add crasher in swift::Parser::parseTopLevel(...)
Add test case for crash triggered in `swift::ASTVisitor`.

Current number of unresolved compiler crashers: 25 (5389 resolved)

/cc Eli Friedman - just wanted to let you know that this crasher caused an assertion failure for the assertion `(getKind() != ExprKind::Binary || isa<TupleExpr>(e)) && "BinaryExprs must have a TupleExpr as the argument"` added on 2012-05-25 by you in commit 95838dc :-)

Assertion failure in [`include/swift/AST/Expr.h (line 3666)`](https://github.com/apple/swift/blob/master/include/swift/AST/Expr.h#L3666):

```
Assertion `(getKind() != ExprKind::Binary || isa<TupleExpr>(e)) && "BinaryExprs must have a TupleExpr as the argument"' failed.

When executing: void swift::ApplyExpr::setArg(swift::Expr *)
```

Assertion context:

```
  Expr *getSemanticFn() const { return Fn->getSemanticsProvidingExpr(); }

  Expr *getArg() const { return ArgAndIsSuper.getPointer(); }
  void setArg(Expr *e) {
    assert((getKind() != ExprKind::Binary || isa<TupleExpr>(e)) &&
           "BinaryExprs must have a TupleExpr as the argument");
    ArgAndIsSuper = {e, ArgAndIsSuper.getInt()};
  }

  bool isSuper() const { return ArgAndIsSuper.getInt(); }
  void setIsSuper(bool super) {
```
Stack trace:

```
0 0x0000000003512118 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/path/to/swift/bin/swift+0x3512118)
1 0x0000000003512856 SignalHandler(int) (/path/to/swift/bin/swift+0x3512856)
2 0x00007f553f90b3e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x113e0)
3 0x00007f553e039428 gsignal /build/glibc-Qz8a69/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
4 0x00007f553e03b02a abort /build/glibc-Qz8a69/glibc-2.23/stdlib/abort.c:91:0
5 0x00007f553e031bd7 __assert_fail_base /build/glibc-Qz8a69/glibc-2.23/assert/assert.c:92:0
6 0x00007f553e031c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
7 0x0000000000c33846 (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder) (/path/to/swift/bin/swift+0xc33846)
8 0x0000000000c49083 (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) (/path/to/swift/bin/swift+0xc49083)
9 0x0000000000c2f774 (anonymous namespace)::ExprRewriter::walkToExprPost(swift::Expr*) (/path/to/swift/bin/swift+0xc2f774)
10 0x0000000000c35021 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) (/path/to/swift/bin/swift+0xc35021)
11 0x0000000000e0c387 swift::ASTVisitor<(anonymous namespace)::Traversal, swift::Expr*, swift::Stmt*, bool, swift::Pattern*, bool, void>::visit(swift::Expr*) (/path/to/swift/bin/swift+0xe0c387)
12 0x0000000000e0e00e (anonymous namespace)::Traversal::visitApplyExpr(swift::ApplyExpr*) (/path/to/swift/bin/swift+0xe0e00e)
13 0x0000000000e0ad1b swift::Expr::walk(swift::ASTWalker&) (/path/to/swift/bin/swift+0xe0ad1b)
14 0x0000000000c34753 (anonymous namespace)::ExprWalker::walkToExprPre(swift::Expr*) (/path/to/swift/bin/swift+0xc34753)
15 0x0000000000e0aceb swift::Expr::walk(swift::ASTWalker&) (/path/to/swift/bin/swift+0xe0aceb)
16 0x0000000000c2c268 swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::Expr*, swift::Type, bool, bool, bool) (/path/to/swift/bin/swift+0xc2c268)
17 0x0000000000cf5433 swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) (/path/to/swift/bin/swift+0xcf5433)
18 0x0000000000c5a791 (anonymous namespace)::FailureDiagnosis::typeCheckChildIndependently(swift::Expr*, swift::Type, swift::ContextualTypePurpose, swift::OptionSet<TCCFlags, unsigned int>, swift::ExprTypeCheckListener*, bool) (/path/to/swift/bin/swift+0xc5a791)
19 0x0000000000c56dc0 swift::ASTVisitor<(anonymous namespace)::FailureDiagnosis, bool, void, void, void, void, void>::visit(swift::Expr*) (/path/to/swift/bin/swift+0xc56dc0)
20 0x0000000000c4ec2a swift::constraints::ConstraintSystem::diagnoseFailureForExpr(swift::Expr*) (/path/to/swift/bin/swift+0xc4ec2a)
21 0x0000000000c55ced swift::constraints::ConstraintSystem::salvage(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::Expr*) (/path/to/swift/bin/swift+0xc55ced)
22 0x0000000000cf1ed8 swift::TypeChecker::solveForExpression(swift::Expr*&, swift::DeclContext*, swift::Type, swift::FreeTypeVariableBinding, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem&, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) (/path/to/swift/bin/swift+0xcf1ed8)
23 0x0000000000cf539d swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) (/path/to/swift/bin/swift+0xcf539d)
24 0x0000000000c0cf9e swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) (/path/to/swift/bin/swift+0xc0cf9e)
25 0x0000000000c0c7c6 swift::TypeChecker::typeCheckTopLevelCodeDecl(swift::TopLevelCodeDecl*) (/path/to/swift/bin/swift+0xc0c7c6)
26 0x0000000000c21c70 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int) (/path/to/swift/bin/swift+0xc21c70)
27 0x0000000000996736 swift::CompilerInstance::performSema() (/path/to/swift/bin/swift+0x996736)
28 0x000000000047c5aa swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/path/to/swift/bin/swift+0x47c5aa)
29 0x000000000043ade7 main (/path/to/swift/bin/swift+0x43ade7)
30 0x00007f553e024830 __libc_start_main /build/glibc-Qz8a69/glibc-2.23/csu/../csu/libc-start.c:325:0
31 0x0000000000438229 _start (/path/to/swift/bin/swift+0x438229)
```
…lang#6544)

These have historically been defined as protocols in Objective-C
(under a pile of macros), but when imported into Swift they're classes
instead. Reverse this bit of magic by hard-coding the prefix "OS_" and
the header <os/object.h>, and emitting the classic 'foo_bar_t'-style
type names.

rdar://problem/29790636
…tkind-exprkind-binary-isa-tupleexpr-e-binaryexprs-must-have-a-tupleexpr-as-the

[swiftc (25 vs. 5389)] Add crasher in swift::ASTVisitor
@airspeedswift airspeedswift removed the request for review from parkera January 4, 2017 17:57
MaxDesiatov pushed a commit that referenced this pull request Sep 7, 2023
[pull] swiftwasm from main
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.