Michael Gottesman
bf6920650c
[gardening] Drop BB from all argument related code in SILBasicBlock.
...
Before this commit all code relating to handling arguments in SILBasicBlock had
somewhere in the name BB. This is redundant given that the class's name is
already SILBasicBlock. This commit drops those names.
Some examples:
getBBArg() => getArgument()
BBArgList => ArgumentList
bbarg_begin() => args_begin()
2016-11-25 01:14:36 -06:00
practicalswift
797b80765f
[gardening] Use the correct base URL ( https://swift.org ) in references to the Swift website
...
Remove all references to the old non-TLS enabled base URL (http://swift.org )
2016-11-20 17:36:03 +01:00
Xin Tong
34eadd43ee
Small refactoring in RRCM.
2016-08-09 21:44:53 -07:00
Xin Tong
be793d26eb
Remove last bit of retain release code motion in SILCodeMotion. All these code are
...
replaced by retain release code motion. This code has been disabled for sometime now.
This should bring the retain release code motion into a close. The retain release
code motion pipeline looks like this. There could be some minor cleanups after this though.
1. We perform a global data flow for retain release code motion in RRCM (RetainReleaseCodeMotion)
2. We perform a local form of retain release code motion in SILCodeMotion. This is more
for cases which can not be handled in RRCM. e.g. sinking into a switch is more efficiently
done in a local form, the retain is not needed on the None block. Release on SILArgument needs
to be split to incoming values, this can not be done in RRCM and other cases.
3. We do not perform code motion in ASO, only elimination which are very important.
Some modifications to test cases, they look different, but functionally the same.
RRCM has this canonicalization effect, i.e. it uses the rc root, instead of
the SSA value the retain/release is currently using. As a result some test cases need
to be modified.
I also removed some test cases that do not make sense anymore and lot of duplicate test
cases between earlycodemotion.sil and latecodemotion.sil. These tests cases only have retains
and should be used to test early code motion.
2016-06-08 10:49:33 -07:00
Xin Tong
a3c1c1649e
Hoist release on SILArgument to predecessors.
...
so that they can be potentially paired retains on some paths.
I did not measure real performance difference on my machine
rdar://19011844
2016-06-01 15:26:22 -07:00
Xin Tong
7d26a47200
Fix a non-deterministic retain/release insertion in RRCodeMotion
2016-04-19 22:14:38 -07:00
Xin Tong
c2e8c81227
Disable retain release code motion. There is some nondeterminism in
...
how we insert the new retain release instructions
2016-04-19 21:42:59 -07:00
Xin Tong
51b1c0bc68
Implement retain, release code motion.
...
Iterative data flow retain sinking and release hoisting.
This allows us to sink retains and hoist releases across harmless loops. which is
an improvement on the SILCodeMotion retain sinking and release hoisting.
It also separates the duty of moving retain and release with the duty of eliminating them
in ASO.
This should eventually replace RR code motion in SILcodemotion and insertion point
in ARCsequence opts (ASO).
This is the performance difference i get with retain sinking and release hoisting.
After disabling retain release code motion in ASO and SILCodeMotion. we can start to take
those code out once this lands.
I see that we go from 24.5% of time spent in SILOptimizations w.r.t. the whole stdlib compilation
to 25.1%.
Improvement is better (i.e. retain sinking and hoisting releases result in performance gain).
<details open>
<summary>Regression (7)</summary>
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP
--- | --- | --- | --- | ---
SetIsSubsetOf | 441 | 510 | +15.7% | **0.86x**
SetIntersect | 1041 | 1197 | +15.0% | **0.87x**
BenchLangCallingCFunction | 184 | 211 | +14.7% | **0.87x**
Sim2DArray | 326 | 372 | +14.1% | **0.88x**
SetIsSubsetOf_OfObjects | 498 | 567 | +13.9% | **0.88x**
GeekbenchGEMM | 945 | 1022 | +8.2% | **0.92x**
COWTree | 3839 | 4181 | +8.9% | **0.92x(?)**
</details>
<details >
<summary>Improvement (31)</summary>
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP
--- | --- | --- | --- | ---
ObjectiveCBridgeFromNSDictionaryAnyObjectToString | 174526 | 165392 | -5.2% | **1.06x**
RGBHistogram | 3128 | 2957 | -5.5% | **1.06x**
ObjectiveCBridgeToNSDictionary | 16510 | 15494 | -6.2% | **1.07x**
LuhnAlgoLazy | 2294 | 2120 | -7.6% | **1.08x**
DictionarySwapOfObjects | 6477 | 5994 | -7.5% | **1.08x**
StringRemoveDupes | 1610 | 1485 | -7.8% | **1.08x**
ObjectiveCBridgeFromNSSetAnyObjectToString | 159358 | 147824 | -7.2% | **1.08x**
ObjectiveCBridgeToNSSet | 16191 | 14924 | -7.8% | **1.08x**
DictionaryHashableClass | 1839 | 1704 | -7.3% | **1.08x**
DictionaryLiteral | 2906 | 2678 | -7.8% | **1.09x(?)**
StringUtilsUnderscoreCase | 10031 | 9187 | -8.4% | **1.09x**
LuhnAlgoEager | 2320 | 2113 | -8.9% | **1.10x**
ObjectiveCBridgeFromNSSetAnyObjectToStringForced | 99553 | 90348 | -9.2% | **1.10x**
RIPEMD | 3327 | 3009 | -9.6% | **1.11x**
Combos | 595 | 538 | -9.6% | **1.11x**
Roman | 10 | 9 | -10.0% | **1.11x**
StringUtilsCamelCase | 10783 | 9646 | -10.5% | **1.12x**
SetIntersect_OfObjects | 2511 | 2182 | -13.1% | **1.15x**
SwiftStructuresTrie | 28331 | 24339 | -14.1% | **1.16x**
Dictionary2OfObjects | 3748 | 3115 | -16.9% | **1.20x**
DictionaryOfObjects | 2473 | 2050 | -17.1% | **1.21x**
Dictionary | 894 | 737 | -17.6% | **1.21x**
Dictionary2 | 2268 | 1859 | -18.0% | **1.22x**
StringIteration | 8027 | 6344 | -21.0% | **1.27x**
Phonebook | 8207 | 6436 | -21.6% | **1.28x**
BenchLangArray | 119 | 91 | -23.5% | **1.31x**
LinkedList | 8267 | 6297 | -23.8% | **1.31x**
StrToInt | 5585 | 4180 | -25.2% | **1.34x**
Dictionary3OfObjects | 1122 | 831 | -25.9% | **1.35x**
Dictionary3 | 731 | 515 | -29.6% | **1.42x**
SuperChars | 513353 | 258735 | -49.6% | **1.98x**
2016-04-18 15:39:17 -07:00
practicalswift
872070900d
[gardening] Consistent formatting of STATISTIC(…, "…");
2016-04-09 23:51:23 +02:00
Roman Levenstein
2e77b3990b
Add [nonatomic] attribute to all SIL reference counting instructions.
2016-04-06 01:52:43 -07:00
Xin Tong
8318b83016
Remove unnecessary header. NFC
2016-02-05 22:49:24 -08:00
Erik Eckstein
74d44b74e7
SIL: remove SILValue::getDef and add a cast operator to ValueBase * as a repelacement. NFC.
2016-01-25 15:00:49 -08:00
Erik Eckstein
506ab9809f
SIL: remove getTyp() from SILValue
2016-01-25 15:00:49 -08:00
practicalswift
71e00fefa1
[gardening] Fix typos: "word word" (two spaces) → "word word" (one space)
2016-01-24 21:27:16 +01:00
practicalswift
33312eac6b
[gardening] Remove unreachable/unused/redundant code
...
* Make parameter naming in forward declaration match definition
* Remove unused argument to function persistAsync(…)
* Remove unused enum ShouldHalt
* Remove unused enum class IsProtocol
* Remove unused function dumpTypeSubstitutionMap()
* Remove unused function template getFirstPairElt(…)
* Remove unused method addConstantWordInWords(…)
* Remove unused method asExistentialTI()
* Remove unused method currentTrackedState()
* Remove unused method getNumBodyParameters()
* Remove unused method getSuccIndex()
* Remove unused method getTypeOfDeclReference(…)
* Remove unused method hasStructWithAtMostOneNonTrivialField(…)
* Remove unused method initForDirectValues()
* Remove unused method nextIfNot(…)
* Remove unused method overwriteLoweredValue(…)
* Remove unused method removeColumn(…)
* Remove unused methods HasSingleDecl() and GetFirstDecl()
* Remove unused methods overwriteLoweredExplosion(…) and setLoweredSingleValue(…)
* Remove unused methods requireRetainablePointerValue(…), getMethodSelfInstanceType(…) and isSelfArchetype(…)
* Remove unused methods setAsEmptyDirect(), setAsSingleDirectUnmanagedFragileValue(…), setAsIndirectAddress(…) and getDirectValues()
* Remove unused struct CachedMemberInfo
* Remove unused struct CallEdit
* Remove unused struct ErrorImportInfo
* Remove unused synonym ConformancePair
* Remove unused variable SemaInfo
* Remove unused variable localDeclNameNode
* Remove unused variables kindToken and kindLoc
2016-01-22 09:43:24 +01:00
Erik Eckstein
ec172cde5b
Remove SILValue::replaceAllUsesWith.
...
It's not needed anymore because we can use ValueBase::replaceAllUses
2016-01-21 16:04:30 -08:00
Erik Eckstein
f2c0283437
Simplify DebugUtils
...
With the changes in SILValue there is no need for template functions in DebugUtils anymore.
2016-01-21 16:04:30 -08:00
Erik Eckstein
2db6f3d213
SIL: remove multiple result values from SILValue
...
As there are no instructions left which produce multiple result values, this is a NFC regarding the generated SIL and generated code.
Although this commit is large, most changes are straightforward adoptions to the changes in the ValueBase and SILValue classes.
2016-01-21 10:30:31 -08:00
practicalswift
e0eba97b98
Fix typos.
2016-01-06 00:48:22 +01:00
practicalswift
1339b5403b
Consistent use of header comment format.
...
Correct format:
//===--- Name of file - Description ----------------------------*- Lang -*-===//
2016-01-04 13:26:31 +01:00
Zach Panzarino
e3a4147ac9
Update copyright date
2015-12-31 23:28:40 +00:00
practicalswift
fd70b26033
Fix typos in comments.
2015-12-28 02:15:34 +01:00
practicalswift
22e10737e2
Fix typos
2015-12-26 01:19:40 +01:00
practicalswift
81e7439a9a
Fix typos.
2015-12-23 11:16:34 +01:00
Slava Pestov
36ddea64ae
Merge pull request #729 from ken0nek/fix-can-not
...
Convert [Cc]an not -> [Cc]annot
2015-12-22 16:06:20 -08:00
practicalswift
6e3b700b44
Fix typos.
2015-12-23 00:31:13 +01:00
ken0nek
fcd8fcee91
Convert [Cc]an not -> [Cc]annot
2015-12-23 00:55:48 +09:00
practicalswift
8ab8847684
Fix typos.
2015-12-16 22:09:32 +01:00
practicalswift
c6e8459187
Fix typos.
2015-12-14 11:13:30 +01:00
Andrew Trick
739b0e9c56
Reorganize SILOptimizer directories for better discoverability.
...
(libraries now)
It has been generally agreed that we need to do this reorg, and now
seems like the perfect time. Some major pass reorganization is in the
works.
This does not have to be the final word on the matter. The consensus
among those working on the code is that it's much better than what we
had and a better starting point for future bike shedding.
Note that the previous organization was designed to allow separate
analysis and optimization libraries. It turns out this is an
artificial distinction and not an important goal.
2015-12-11 15:14:23 -08:00