Commit Graph

19655 Commits

Author SHA1 Message Date
David Ungar
cd48cd6eb3 Format 2019-02-20 14:35:52 -07:00
David Ungar
1595efe5e2 Split the file, unfmt 2019-02-20 14:34:11 -07:00
David Ungar
edaec2aea5 Move searchPlacesToSearch into PlacesToSearch 2019-02-19 11:24:51 -07:00
David Ungar
ef9f99e37c Rename ExpUnqalifiedLookup to UnqualifiedLookup, UnqualifiedLookup to LegacyUnqualifiedLookup 2019-02-19 10:55:44 -07:00
David Ungar
0aee0dba4b 1st cut finish redo, unfmt 2019-02-18 15:30:18 -07:00
David Ungar
977b0db93d Nonfmt cut down on DC 2019-02-16 23:35:25 -07:00
David Ungar
3c295f8228 Group lookupDecls etc into PlacesToSearch 2019-02-16 22:43:10 -07:00
David Ungar
8ece21459b Push GenericParamList check into function case. 2019-02-16 11:55:41 -07:00
David Ungar
3b7131cf0b Factor each variant into a separate function. Facter out Decl dispatch. 2019-02-16 11:49:07 -07:00
David Ungar
e9298a1ee0 Renamed shouldReturnBasedOnResults to isFinishedWithLookupNowThatIsAboutToLookForOuterResults 2019-02-16 11:34:43 -07:00
David Ungar
04ef0daeb8 Add ExpUnqualifiedLookup, cross-check 2019-02-16 11:31:16 -07:00
David Ungar
520b801bf0 Merge pull request #21177 from davidungar/A-exp-dep-graph-12-10-18
First cut at graph-based fine-grained experimental dependencies.
2019-02-03 21:15:17 -08:00
adrian-prantl
7e3357a39b Merge pull request #22313 from adrian-prantl/47600180
Cache clang ASTFile information in swift::Module (NFC from the outside).
2019-02-03 10:06:11 -08:00
swift-ci
f07dec67b2 Merge pull request #22333 from gottesmm/pr-dab4770863e6147e5df9d65b397290b33b25235c 2019-02-03 00:44:03 -08:00
swift-ci
ee3213c854 Merge pull request #22329 from gottesmm/pr-0d0453a04dcbc24ab4009e3faaf94ffecdef8b94 2019-02-03 00:02:17 -08:00
Michael Gottesman
b194435b7f [sil-cloner] Strip out the argument of default blocks of switch_enum/checked_cast_br when cloning from ossa into non-ossa code. 2019-02-02 23:36:06 -08:00
Michael Gottesman
04ec2c86b2 [ownership] Move OME out of the diagnostics pipeline behind a flag.
Once the flag is flipped, ownership stripping will no longer be done in the
diagnostics pipeline. Instead what will happen is that:

* Onone: At -Onone, we run the entire diagnostics pipeline with ownership
enabled and do not strip ownership until after we serialize in the Onone
"optimization" pass pipeline plan.

* -O: At -O, to temporarily work around serialization issues with transparent
functions, we strip ownership from all but transparent functions at the
beginning of the performance pipeline, serialize, and then strip ownership from
transparent functions. For this to work, I needed to make sure that the
performance pipeline passes that do not support ownership SIL, just skip such
functions. So the transparent functions will arrive (mostly) untouched in
serialized SIL and the rest of the pipeline will optimize non-transparent
functions as they should.

The key thing about the -O change is that it /should/ be performance neutral
since after we serialize we re-run the entire pipeline so we can optimize
semantic functions that we only can inline after we serialize.
2019-02-02 22:58:39 -08:00
Michael Gottesman
fccd75e5ce [sil-passmanager] Stash a SILOptions reference in SILPassPipeline.
This normalizes the creation of pass pipelines by ensuring that all pass
pipelines take a SILOption instead of only some. It also makes it so that we do
not need to propagate options through various pipeline creation helpers.
2019-02-02 22:57:05 -08:00
Michael Gottesman
647c63cdcc [sil] Add support for cloning unmanaged_autorelease_value from ossa funcs into non-ossa funcs. 2019-02-02 19:56:03 -08:00
Adrian Prantl
761e9a0fb2 Cache clang ASTFile information in swift::Module (NFC from the outside).
The loading of additional modules by Sema may trigger an out-of-date
PCM rebuild in the Clang module dependencies of the additional
module. A PCM rebuild causes the ModuleManager to unload previously
loaded ASTFiles. For this reason we must use the cached ASTFile
information here instead of the potentially dangling pointer to the
ASTFile that is stored in the clang::Module object.

This fixes a crash in IRGenDebugInfo when generation DIModule context
chains.

rdar://problem/47600180
2019-02-01 17:34:10 -08:00
Erik Eckstein
767ad5e70a Inliner: fix a stack nesting problem when inlining coroutines
Beside fixing the compiler crash, this change also improves the stack-nesting correction mechanisms in the inliners:

* Instead of trying to correct the nesting after each inlining of a callee, correct the nesting once when inlining is finished for a caller function.
This fixes a potential compile time problem, because StackNesting iterates over the whole function.
In worst case this can lead to quadratic behavior in case many begin_apply instructions with overlapping stack locations are inlined.

* Because we are doing it only once for a caller, we can remove the complex logic for checking if it is necessary.
We can just do it unconditionally in case any coroutine gets inlined.
The inliners iterate over all instruction of a function anyway, so this does not increase the computational complexity (StackNesting is roughly linear with the number of instructions).

rdar://problem/47615442
2019-02-01 08:32:19 -08:00
Michael Gottesman
aa4d406d57 Merge pull request #22264 from gottesmm/pr-1eb3e90eae662c1a6cff4fe226e620212a0497b9
[ownership] Add a specialized version of ome that skips transparent f…
2019-01-31 14:49:32 -08:00
swift-ci
71d7aa62e9 Merge pull request #22261 from gottesmm/pr-ce9a20ff25936087de78d929b7298c3e57911c35 2019-01-31 14:37:03 -08:00
Michael Gottesman
ed1cd46d25 [ownership] Update devirtualization utilities for ownership.
I discovered this due to the mandatory inliner doing devirtualization. I ported
all of the relevant SIL tests to increase code coverage of this code when
ownership is enabled.
2019-01-31 13:34:08 -08:00
Michael Gottesman
1375dd0a62 [ownership] Add a specialized version of ome that skips transparent functions.
This will let me strip ownership from non-transparent functions at the beginning
of the perf pipeline. Then after we serialize, I will run OME on the transparent
functions. Otherwise, we can not perform mandatory inlining successfully since
we can not inline ossa into non-ossa functions.
2019-01-31 00:27:08 -08:00
Michael Gottesman
70cb4655cc [ownership] Add support for cloning unmanaged_{retain,release}_value from ossa => non-ossa code.
Just an oversight on my part. I double checked that the only remaining
difference is in how we handle checked_cast_br and switch_enum. I have a
separate patch that fixes that.
2019-01-30 23:46:35 -08:00
David Ungar
7e4a3d2f19 #ifdef out a line that linux requires to be absent. 2019-01-30 21:02:21 -08:00
Pavel Yaskevich
87b66e79a7 Merge pull request #22251 from xedin/change-text-of-fallback-diag
[CSDiagnostics] NFC: Fallback diagnostic shouldn't ask for the project
2019-01-30 17:37:09 -08:00
David Ungar
b82694c307 Format 2019-01-30 17:19:56 -08:00
David Ungar
2f65ac3735 Cosmetic cleanups 2019-01-30 17:16:49 -08:00
Pavel Yaskevich
52024681e0 [CSDiagnostics] NFC: Fallback diagnostic shouldn't ask for the project 2019-01-30 16:04:44 -08:00
Erik Eckstein
f0eed8c409 SILOptimizer: fix a bug in the TempRValue optimization which causes a miscompile.
The problematic scenario is that a function receives an @in_guaranteed and @inout parameter where one is a copy of the other value. For example, when appending a container to itself.
In this case the optimization removed the copy_addr, resulting in passing the same stack location to both parameters.

rdar://problem/47632890
2019-01-30 12:38:10 -08:00
Harlan Haskins
e9d81e1533 Merge pull request #22190 from harlanhaskins/show-me-the-protocol
[ParseableInterfaces] Print @_show_in_interface
2019-01-30 10:58:30 -08:00
Slava Pestov
c14cbe0230 ASTMangler: Add mangleTypeAsUSR()
For now this just duplicates mangleTypeForDebugger(), but the latter's
behavior is going to change.
2019-01-30 01:28:48 -05:00
Slava Pestov
4ab3535948 ASTMangler: Rename mangleTypeAsUSR() to mangleTypeWithoutPrefix() 2019-01-30 01:28:48 -05:00
Slava Pestov
aaf4b88008 AST: Add MangleLocalTypeDeclRequest 2019-01-30 01:28:48 -05:00
Slava Pestov
161eba721a ASTDemangler: Fix demangling of SILFunctionTypes with @in_constant parameters 2019-01-30 01:28:48 -05:00
Slava Pestov
36d3f47388 ASTDemangler: Preserve generic arguments for bound generic Objective-C classes
MetadataLookup gives special treatment to imported Objective-C classes,
since there's no nominal type descriptor and metadata is obtained
directly by calling into the Objective-C runtime.

Remote reflection also gives special treatment to imported Objective-C
classes; they don't have field descriptors.

However, the ASTDemangler needs to treat them like ordinary classes,
in particular it wants to preserve the generic arguments here so that
we can round-trip debug info.
2019-01-30 01:28:48 -05:00
Slava Pestov
d29b545870 Merge pull request #22185 from slavapestov/type-reconstruction-part-2
Type reconstruction rework, part 2
2019-01-30 00:13:01 -05:00
Slava Pestov
4a74bf4ba1 ASTDemangler: Add support for lowered function types 2019-01-29 21:55:57 -05:00
swift-ci
99754ad551 Merge pull request #22230 from gottesmm/pr-7a6d9d7233d756d1fca02f07e2aa68485e2662f5 2019-01-29 18:11:17 -08:00
Michael Gottesman
d012762d26 [sil] Ban passing non-trivial values to copy_value, destroy_value.
I also fixed a small violation in SILGenProlog/added a test for it.
2019-01-29 16:54:37 -08:00
Slava Pestov
13a50c2d2d ASTDemangler: Add support for lowered metatypes 2019-01-29 19:15:17 -05:00
Slava Pestov
fce933910d ASTDemangler: Implement types in generic local context
If we nest a type inside a local context inside a generic type,
we have to look through the local context(s) to find the outer
generic type when stripping off generic arguments.

We don't support nominal types inside generic local context
right now, but this can happen with type aliases.
2019-01-29 19:15:17 -05:00
Harlan Haskins
0a9b8fa37c Merge pull request #22191 from harlanhaskins/fatality
[Diagnostics] Mark invalid ‘@testable import’ as fatal
2019-01-29 15:57:30 -08:00
Harlan Haskins
f4b0e0e7b6 [Diagnostics] Mark invalid ‘@testable import’ as fatal
If this isn’t fatal, this will just end up cascading to a bunch of “could not find member … in …” errors, which hides the real issue.
2019-01-29 14:52:40 -08:00
swift-ci
37183a7ed2 Merge pull request #22217 from gottesmm/pr-7be9ef604e047a30dc019f2cda380b17d6b638f6 2019-01-29 14:31:35 -08:00
Michael Gottesman
c2e8b9e195 [sil] Teach the SILCloner how to clone from ossa -> non-ossa.
At a high level, we perform the OME lowering as we transform.
2019-01-29 13:19:03 -08:00
Harlan Haskins
9c8ed0ba93 [ParseableInterfaces] Print @_show_in_interface
This attribute needs to be preserved in the .swiftmodule, otherwise these declarations will stop showing up in the interface. Print it in the parseable interface.
2019-01-29 11:50:58 -08:00
Jordan Rose
de93ba0992 Merge pull request #22188 from jrose-apple/open-your-heart
Don't fix access of an 'open' override in a 'public' extension

rdar://problem/47557376&28493971
2019-01-29 10:45:48 -08:00