Commit Graph

350 Commits

Author SHA1 Message Date
Erik Eckstein
5a53b31f57 SIL: remove use-iteration functions from SILValue.
They are not needed anymore. NFC.
2016-01-25 15:00:49 -08:00
Erik Eckstein
b745691a38 SIL refactoring: Move some functions out of SILValue and Operand
SILValue.h/.cpp just defines the SIL base classes. Referring to specific instructions is a (small) kind of layering violation.
Also I want to keep SILValue small so that it is really just a type alias of ValueBase*.
NFC.
2016-01-25 10:37:03 -08:00
Chris Lattner
9dd87e6ab2 Merge pull request #1067 from practicalswift/bools
[gardening] Avoid "var == true" and "var == false"
2016-01-23 12:54:46 -08:00
practicalswift
638a7c9474 [gardening] Avoid "var == true" and "var == false" 2016-01-23 19:57:07 +01:00
Mark Lacey
8b5298eb7b Fix release build warnings about uninitialized variables. 2016-01-23 10:56:35 -08:00
practicalswift
8efa5f587e [gardening] Remove "-*- C++ -*-" tag from .cpp files
Emacs assumes .h files are C files by default which is why the
tag "-*- C++ -*-" is needed.

.cpp files do not have this problem.
2016-01-23 12:09:32 +01: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
Erik Eckstein
8110b1ebc8 [SIL] Let alloc_box return a single value.
And use project_box to get to the address value.
SILGen now generates a project_box for each alloc_box.
And IRGen re-uses the address value from the alloc_box if the operand of project_box is an alloc_box.
This lets the generated code be the same as before.

Other than that most changes of this (quite large) commit are straightforward.
2016-01-19 08:59:24 -08:00
Michael Gottesman
88929f8e99 Fix implicit assumption that RetainArray is not nullptr.
The code in question was the following:

  auto *RetainArray = dyn_cast_or_null<StrongRetainInst>(getInstBefore(Call));
  if (!RetainArray && MayHaveBridgedObjectElementType)
    return false;
  auto *ReleaseArray = dyn_cast_or_null<StrongReleaseInst>(getInstAfter(Call));
  if (!ReleaseArray && MayHaveBridgedObjectElementType)
    return false;
  if (ReleaseArray &&
      ReleaseArray->getOperand() != RetainArray->getOperand())
    return false;

There is no check in the last if if RetainArray is not nullptr even though it is
possible for it to be so.

Found by clang static analyzer.
2016-01-08 19:28:42 -08:00
Erik Eckstein
6ff2f09796 [SIL] Let alloc_stack return a single value.
Having a separate address and container value returned from alloc_stack is not really needed in SIL.
Even if they differ we have both addresses available during IRGen, because a dealloc_stack is always dominated by the corresponding alloc_stack in the same function.

Although this commit quite large, most changes are trivial. The largest non-trivial change is in IRGenSIL.

This commit is a NFC regarding the generated code. Even the generated SIL is the same (except removed #0, #1 and @local_storage).
2016-01-06 17:35:27 -08:00
practicalswift
1339b5403b Consistent use of header comment format.
Correct format:
//===--- Name of file - Description ----------------------------*- Lang -*-===//
2016-01-04 13:26:31 +01:00
practicalswift
f91525a10f Consistent placement of "-*- [language] -*-===//" in header. 2016-01-04 09:46:20 +01:00
Zach Panzarino
e3a4147ac9 Update copyright date 2015-12-31 23:28:40 +00:00
practicalswift
f34df59dc6 Remove duplicate #include:s 2015-12-29 12:12:26 +01:00
practicalswift
149b50d901 Fix typos in code (non-comment/documentation typos). 2015-12-28 11:42:15 +01:00
practicalswift
fd70b26033 Fix typos in comments. 2015-12-28 02:15:34 +01:00
practicalswift
fa0b339a21 Fix typos. 2015-12-26 17:51:59 +01:00
practicalswift
85e2e6eb9a Fix a vs. an 2015-12-26 14:40:16 +01:00
practicalswift
db13bcb22e Fix typos. 2015-12-26 14:11:42 +01:00
practicalswift
22e10737e2 Fix typos 2015-12-26 01:19:40 +01:00
practicalswift
4ff12be924 Fix typos. 2015-12-24 14:26:57 +01:00
ken0nek
fcd8fcee91 Convert [Cc]an not -> [Cc]annot 2015-12-23 00:55:48 +09:00
practicalswift
36d7072013 Remove immediately adjacent repeated words ("the the", "for for", "an an", etc.). 2015-12-21 22:16:04 +01:00
practicalswift
cd7d8dfaff Fix alignment as requested by @gribozavr in #692 2015-12-21 08:54:24 +01:00
practicalswift
176f487d76 Fix incorrect filenames in headers. 2015-12-20 23:59:05 +01:00
Dmitri Gribenko
6a66b3cff8 Merge pull request #561 from practicalswift/typos-again
[Typo] Replace PR#514-525 with one large PR
2015-12-18 03:37:02 -08:00
Arnold Schwaighofer
386dd0f171 COWArrayOpt: Handle patterns of 2d array accesses after more aggresive alias analysis
Make sure we handle a code pattern that we will encounter after Erik's upcoming
alias analysis changes.

rdar://23938778
2015-12-17 15:30:51 -08:00
Arsen Gasparyan
65f336b849 Fix a typo 2015-12-17 00:57:52 +03:00
practicalswift
8ab8847684 Fix typos. 2015-12-16 22:09:32 +01:00
Erik Eckstein
f316a301e6 [LICM] fix wrong aliasing checks for alloc_stack 2015-12-14 16:50:48 -08:00
Arnold Schwaighofer
99ff2168a6 Add debug messages to loop unrolling and array value propagation 2015-12-14 12:03:42 -08:00
Arnold Schwaighofer
edf9ca06fc Unroll loops with known short trip count
This enables array value propagation in array literal loops like:

for e in [2,3,4] {
  r += e
}

Allowing us to completely get rid of the array.

rdar://19958821
SR-203
2015-12-14 12:03:42 -08:00
Arnold Schwaighofer
ba2de2d88d Use SILLoop::canDuplicate in the ArraySpecializer 2015-12-14 12:03:41 -08:00
Dmitri Gribenko
f957a68170 Merge pull request #513 from practicalswift/fix-typos-17
Fix typos (17 of 30)
2015-12-14 01:11:28 -08:00
Dmitri Gribenko
c8b67f6f6c Merge pull request #511 from practicalswift/fix-typos-15
Fix typos (15 of 30)
2015-12-14 01:08:44 -08:00
Dmitri Gribenko
a50b8cd659 Merge pull request #510 from practicalswift/fix-typos-14
Fix typos (14 of 30)
2015-12-14 01:07:49 -08:00
Michael Gottesman
b838e121ed Merge pull request #502 from practicalswift/fix-typos-6
Fix typos (6 of 30)
2015-12-13 19:03:41 -06:00
practicalswift
4e757bd493 Fix typo: intialization → initialization 2015-12-14 00:11:59 +01:00
practicalswift
8d3aa261c8 Fix typo: incomming → incoming 2015-12-14 00:11:54 +01:00
practicalswift
a0428d1993 Fix typo: guarantuees → guarantees 2015-12-14 00:11:49 +01:00
practicalswift
f17ecbc848 Fix typo: guarantueed → guaranteed 2015-12-14 00:11:49 +01:00
practicalswift
6b06eb9d17 Fix typo: completedly → completely 2015-12-14 00:11:24 +01:00
practicalswift
3007523154 Fix typo: cannonicalization → canonicalization 2015-12-14 00:11:20 +01:00
practicalswift
03ab74760a Fix typo: cannonical → canonical 2015-12-14 00:11:20 +01:00
practicalswift
a01cc1e4f2 Fix typo: burried → buried 2015-12-14 00:11:19 +01:00
practicalswift
dc569363fd Fix typo: beeing → being 2015-12-14 00:11:18 +01:00
Tushar
657cd80b30 Fix typo 2015-12-14 00:45:10 +05:30
GauravDS
841092785a Fix typos
interefere => interfere
preceeding => preceding
happend => happened
refererence => reference
constains => contains
2015-12-13 03:09:10 +05:30
Kanstantsin Linou
bc732a9ec9 Fix typo in ArrayBoundsCheckOpts.cpp
<code>guarantueed</code> -> <code>guaranteed</code>
2015-12-12 20:09:14 +03: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