Commit Graph

965 Commits

Author SHA1 Message Date
Max Desiatov
e387b36656 Merge pull request #33255 from kateinoigakukun/katei/fix-sib-xref-deinit
[Serialization] Force destructor creation for imported class for SIB deserialization
2020-08-26 08:19:13 +01:00
Yuta Saito
878efac769 [Serialization] Force destructor creation for imported class
Swift class deinit decl can be implicitly synthesized when emitting
swiftmodule, so swiftmodule always have deinit decl. So resolution of
x-refs to deinit of swift class always success.
But when x-refs points deinit of clang imported class, it always failed
because clang importer doesn't force to synthesize deinit before looking
up.

x-refs to deinit decl appears in only deinit of its subclasses, so it's
serialized only when deinit have body. And deinit has body only on SIB
because deinit is always non-inlinable. It means that this missing of
deinit creation can be problem only on SIB

This commit changes to force to synthesize class deinit
decl before looking up members.
2020-08-13 10:05:59 +09:00
Slava Pestov
4b8bbf7434 Merge pull request #33279 from kateinoigakukun/katei/serialize-subclass-scope
[Serialization] Serialize subclassScope to keep linkage
2020-08-12 15:33:20 -04:00
Max Desiatov
f74502ee9d Merge pull request #33325 from kateinoigakukun/katei/sort-diff-wt-serialization
[Serialization] Serialize Differentiability WT index sorted
2020-08-12 17:10:47 +01:00
Saleem Abdulrasool
72e6bbca9a test: repair Serialization.autolinking after #33379
The order of attribution was swapped which failed on platforms which use
`comdat` (i.e. Windows).
2020-08-09 11:14:27 -07:00
John McCall
03d94b44a6 Add default IR attributes to helper functions and convert
several more places to use getOrCreateHelperFunction.

This means that several of these places are now emitting
shared functions rather than private ones, which I've
verified is okay.  There are some other places where
privacy is still unfortunately necessary.

I've also fixed the name of the store-extra-inhabitants
helper function to say "store" instead of "get", which
is longstanding (but harmless because it's private).

Fixes rdar://66707994.
2020-08-08 16:57:02 -04:00
Yuta Saito
0ce2810144 [Serialization] Serialize subclassScope to keep linkage
subclassScope was always set as NotApplicable when deserialized but we
need to serialize and deserialize it to keep correct linkage when using
SIB

```swift
open class Visitor {
    public func visit() {
        visitExprImpl()
    }
    @_optimize(none)
    private func visitExprImpl() {
    }
}
```

In this case, `visitExprImpl` is private but subclassScope is External.
So it should be lowered as an external function at LLVM IR level.

But once it's serialized into SIB, subclassScope of `visitExprImpl` was
deserialized as NotApplicable because it was not serialized. This
mismatch makes `visitExprImpl` lowered as an internal function at LLVM
IR level.

So `subclassScope` should be serialized.
2020-08-08 14:28:12 +09:00
Yuta Saito
d913e57d84 [Serialization] Serialize Differentiability WT index sorted
When there are sil_property and sil_differentiability_witness at once,
serialized file couldn't be deserialized because it's index table is
serialized un-sortedly but deserializer assumes that contents of table
index are sorted.

This patch fixes the un-sorted serialization and adds test case to
ensure that table index contents can be deserialized
2020-08-07 08:49:26 +09:00
Doug Gregor
6ff46ae2da [Concurrency] Add serialization test for async 2020-08-06 10:43:53 -07:00
Harlan Haskins
d67d7ebc0a [Serialization] Look for cross-ref errors inside type errors (#33271)
In #30614, we started consuming XRefNonLoadedModuleErrors while loading
conformances, since a conformance to a type we cannot load usually
indicates we're trying to load a protocol that was declared in an
@_implementationOnly imported module.

We should also consume TypeErrors that we see where the underlying reason
is an XRefNonLoadedModuleError, since they're likely indicators of the
same thing.
2020-08-04 13:04:14 -07:00
Brent Royal-Gordon
d4ebd5df06 [NFC] Avoid violating same-filename rule in tests
…and modify resolveFileIDConflicts() to diagnose any such violations instead of asserting.

Swift does not allow any two files in the same module to have the same filename, even if they are in different directories. However, this is enforced in the driver, so tests that invoke the frontend directly can violate it. Turns out that a couple of those snuck into the test suite at various points.

This commit updates those tests. It also causes the frontend to diagnose the duplicate filename error just as the driver would have, which should help us understand what happened more easily if this crops up again in the future.

NFC, since invoking the frontend directly is unsupported.
2020-07-13 14:05:13 -07:00
Hamish Knight
241c5d95e3 Merge pull request #32461 from hamishknight/its-all-linked 2020-07-08 11:07:17 -07:00
Mishal Shah
92ca9fc924 [Apple Silicon] Generalize tests for other macOS architectures
Most of the changes fall into a few categories:
* Replace explicit "x86_64" with %target-cpu in lit tests
* Cope with architecture differences in IR/asm/etc. macOS-specific tests
2020-07-02 16:27:46 -07:00
Hamish Knight
751e68177c [test] Remove uses of -sil-merge-partial-modules
Replace with -merge-modules, which means we can
also remove the now redundant
`-disable-diagnostic-passes` &
`-disable-sil-perf-optzns` options.
2020-07-01 23:14:50 -07:00
Hamish Knight
b3dcef9796 Avoid unnecessary linking in SIL tools
Previously we were linking in all SIL entities
if the input was a serialized non-SIB AST, and
`-disable-sil-linking` wasn't specified. However
none of the tests appear to want this behaviour.

Stop calling `SerializedSILLoader::getAll`, and
remove the `-disable-sil-linking` option, as this
is now the default behaviour.
2020-07-01 23:14:01 -07:00
Erik Eckstein
67605553df SIL: a new instruction 'base_addr_for_offset' for field offset calculations.
The ``base_addr_for_offset`` instruction creates a base address for offset calculations.
The result can be used by address projections, like ``struct_element_addr``, which themselves return the offset of the projected fields.
IR generation simply creates a null pointer for ``base_addr_for_offset``.
2020-07-01 15:10:08 +02:00
Saleem Abdulrasool
f77e794977 test: make binary_sub python 2, 3 compatible
In order to access `stdin`, `stdout` as binary, you must use the
`buffer` member in Python 3.  The replacement of the binary data
requires that pattern and the replacement be byte objects.  Convert the
pattern and replacement to UTF-8 encoded bytes.
2020-06-23 08:19:08 -07:00
Pavel Yaskevich
16862e50a5 Merge pull request #31713 from xedin/no-ranking-with-ambiguous-with-fixes
[ConstraintSystem] Overhaul ambiguity diagnostics
2020-06-16 12:55:14 -07:00
3405691582
c8ba437444 [test] Handle architecture aliasing for OpenBSD.
Swift calls the architecture x86_64, OpenBSD calls it amd64. If we use
run_cpu in lit.cfg as-is, then we may need to duplicate lines in each
test for 'x86_64' and 'amd64', which puts a maintenance burden on unit
test developers to ensure they are duplicating changes to each line.

Instead, alias 'amd64' to 'x86_64' for `run_cpu`, but keep the platform
module path referring to 'amd64', in order to distinguish the target
architecture name and the Swift architecture name. This is particularly
relevant for the %target-.*-name pseudovariables used, which should
reference the Swift architecture names.

However, some unit tests are directly referencing %target-cpu directly,
which would break the aliasing. This is done only for swiftinterface
files, so a new substitution is defined in lit.cfg for these variables,
and the affected unit test cases are migrated.
2020-06-12 21:06:37 -04:00
Pavel Yaskevich
d9594c712a [TypeChecker] NFC: Adjust tests improved by new approach for ambiguity diagnosis 2020-06-12 11:47:03 -07:00
Karoy Lorentey
68351d2110 Revert "Merge remote-tracking branch 'origin/master-next'"
This reverts commit 1c9b0908e6, reversing
changes made to 3eb82c1836.
2020-06-08 16:48:38 -07:00
swift_jenkins
8cfaff7371 Merge remote-tracking branch 'origin/master' into master-next 2020-05-29 11:19:36 -07:00
Alexis Laferrière
94ff157c60 Merge pull request #32070 from xymus/spi-swiftdoc
[Serialization] Skip SPI documentation in swiftdoc files
2020-05-29 11:09:13 -07:00
swift_jenkins
b84e995326 Merge remote-tracking branch 'origin/master' into master-next 2020-05-28 16:38:52 -07:00
Alexis Laferrière
56c77df926 [Serialization] Skip SPI documentation in swiftdoc files
Hide comments from SPI decls in all swiftdoc files. This applies the
same restrictions as private declarations. This is a temporary solution,
a long term fix is to emit both a public and an internal swiftdoc file.

rdar://63729195
2020-05-28 12:58:59 -07:00
Hamish Knight
21b733b4a1 [Frontend] Set "failed to load" for failed partial module
If a partial module fails to load, the main module
may be left without files, so let's set the failed
to load bit.
2020-05-28 11:32:12 -07:00
swift_jenkins
d0cf0c2f6e Merge remote-tracking branch 'origin/master' into master-next 2020-05-26 11:19:07 -07:00
Doug Gregor
8e0ec601db Merge pull request #32005 from DougGregor/function-builder-infer
[Function builders] Infer function builder from a protocol requirement.
2020-05-26 10:59:42 -07:00
Doug Gregor
8cec6b555d [Function builders] Add tests for function builders on protocol requirements 2020-05-25 23:42:45 -07:00
swift_jenkins
dbba29435f Merge remote-tracking branch 'origin/master' into master-next 2020-05-23 10:18:38 -07:00
David Zarzycki
97c89d8d3a Remove three ObjC fields from non-ObjC runtime 2020-05-22 09:21:21 -07:00
swift_jenkins
f375a35b29 Merge remote-tracking branch 'origin/master' into master-next 2020-05-14 02:19:22 -07:00
Erik Eckstein
f5a8f600ea SIL: new instructions for copy-on-write support
* a new [immutable] attribute on ref_element_addr and ref_tail_addr
* new instructions: begin_cow_mutation and end_cow_mutation

These new instructions are intended to be used for the stdlib's COW containers, e.g. Array.
They allow more aggressive optimizations, especially for Array.
2020-05-14 08:39:54 +02:00
swift_jenkins
b9a5f31375 Merge remote-tracking branch 'origin/master' into master-next 2020-05-08 10:01:47 -07:00
David Zarzycki
5dcc32f98f Remove all uses of -force-single-frontend-invocation
The `-force-single-frontend-invocation` flag predates WMO and is now an
alias for `-whole-module-optimization`. We should use the latter and let
the former fade into history.
2020-05-08 06:37:41 -04:00
swift_jenkins
04271f4cbf Merge remote-tracking branch 'origin/master' into master-next 2020-04-28 14:20:03 -07:00
Varun Gandhi
a1716fe2a6 [Diagnostics] Update compiler diagnostics to use less jargon. (#31315)
Fixes rdar://problem/62375243.
2020-04-28 14:11:39 -07:00
swift_jenkins
1f69a82f5a Merge remote-tracking branch 'origin/master' into master-next 2020-04-24 19:58:15 -07:00
Varun Gandhi
811d6a5fe7 [NFC] [arm64e] Delete arm64e fallback test. (#31297) 2020-04-24 19:38:54 -07:00
swift_jenkins
537100831f Merge remote-tracking branch 'origin/master' into master-next 2020-04-20 12:57:17 -07:00
Doug Gregor
574f0e8a5b [Platform] Stop inferring simulator-ness.
The *-simulator target triples have been used consistently in tools for
several years to indicate simulator targets. Stop inferring the
simulator part, rdar://problem/35810403.
2020-04-20 08:50:34 -07:00
swift_jenkins
9458dc803c Merge remote-tracking branch 'origin/master' into master-next 2020-04-19 18:18:29 -07:00
Saleem Abdulrasool
fbbf61f297 Revert "[Darwin] Further restrict inference of the simulator environment" 2020-04-19 16:43:22 -07:00
swift_jenkins
1acb641f2c Merge remote-tracking branch 'origin/master' into master-next 2020-04-17 21:17:31 -07:00
Doug Gregor
22cdddd84e Merge pull request #30771 from DougGregor/stop-inferring-simulator
[Darwin] Further restrict inference of the simulator environment
2020-04-17 20:59:39 -07:00
swift_jenkins
ea8ac5e9f9 Merge remote-tracking branch 'origin/master' into master-next 2020-04-16 16:17:38 -07:00
Pavel Yaskevich
386b622717 Merge pull request #31077 from apple/revert-30429-optimize/remove-dead-in-mand-combine
Revert "[opt] remove trivially dead instructions in mandatory combine"
2020-04-16 16:05:29 -07:00
swift_jenkins
999d033f4f Merge remote-tracking branch 'origin/master' into master-next 2020-04-16 15:57:40 -07:00
Alexis Laferrière
2fbc063b2e [Serialization] Note the misc version field of modules on deser. failures
This added information will hopefully help us understand hard to
reproduce deserialization failures.
2020-04-16 13:50:11 -07:00
Doug Gregor
7e7dc648f2 [Platform] Stop inferring simulator-ness.
The *-simulator target triples have been used consistently in tools for
several years to indicate simulator targets. Stop inferring the
simulator part, rdar://problem/35810403.
2020-04-16 11:35:43 -07:00