Commit Graph

24822 Commits

Author SHA1 Message Date
swift-ci
1a04c69edd Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-23 19:43:43 -08:00
David Smith
7f551fd020 Add missing oneway modifier to -release 2020-01-23 17:49:14 -08:00
Andrew Trick
06645d3c0f Add EscapeAnalysis verification to catch unmapped SILValues.
This verification would have prevented the following recent miscompilation:

  commit fbe38ce78d
  Fix EscapeAnalysis losing precision during merge.
2020-01-23 17:43:19 -08:00
Hamish Knight
fe906574cd [Basic] Avoid reentrant stat collection
Currently `UnifiedStatsReporter::flushTracesAndProfiles`
can kick off requests when computing the source
ranges for collected entities, which will try to
record additional stats about the requests.

This currently happens to work without issue,
but #29289 bumped the counters down slightly such
that the vector storing the stats now performs a
re-allocation when we do a reentrant stat entry.
This then caused a use-after-free as we try to
continue iterating over the old buffer.

Fix this issue by refusing to record any new stats
while we're flushing out the ones we've already
recorded.
2020-01-23 16:43:18 -08:00
Dan Zheng
a56e77a28a Lower AST @noDerivative attribute to SIL.
Add SILGen test.
2020-01-23 15:35:55 -08:00
Dan Zheng
ac48febfd4 Add @noDerivative flag to SILParameterInfo.
The `@noDerivative` attribute marks the non-differentiability parameters of a
`@differentiable` function type. All parameters except those marked with
`@noDerivative` are differentiability parameters.

For example, `@differentiable (Float, @noDerivative Float) -> Float` is only
differentiable with respect to its first parameter.

The `@noDerivative` attribute is represented as a
`SILParameterDifferentiability` bit on `SILParameterInfo`.

Add round-trip serialization tests.

Resolves TF-872.
2020-01-23 15:29:14 -08:00
swift-ci
f324eb6a1e Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-23 15:04:45 -08:00
David Ungar
0852a1bbe6 Default to enabling fine-grained-dependencies. 2020-01-23 15:02:01 -08:00
David Ungar
2f79ff7875 Merge pull request #29390 from davidungar/centralizeDefault
[Incremental] Use the initial value of EnableFineGrainedDependencies as the default.
2020-01-23 14:58:50 -08:00
swift-ci
b0d3f3a13c Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-23 14:24:57 -08:00
Suyash Srijan
74cfee1485 [Typechecker] Extended ambiguous none warning to cases as well (#29356) 2020-01-23 22:04:08 +00:00
David Ungar
98b86c63d1 Use the initial value of EnableFineGrainedDependencies as the default. 2020-01-23 12:12:17 -08:00
swift-ci
ec55ec0bb5 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-23 11:03:41 -08:00
Hamish Knight
9027d52399 [AST] Fix friendship with AnyRequestBase
This was causing issues with MSVC. Have subclasses
be friends with all specializations of
AnyRequestBase, and define `getRawStorage` in
the base class to make it accessible to `friend`
top-level functions.
2020-01-23 11:03:33 -08:00
Hamish Knight
f081ae51d4 Revert "Revert "Don't heap allocate for active requests""
f8a1ad22e1
2020-01-23 11:03:32 -08:00
Saleem Abdulrasool
f8a1ad22e1 Revert "Don't heap allocate for active requests" 2020-01-23 08:33:31 -08:00
swift-ci
cbd174c46f Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-23 07:23:42 -08:00
Hamish Knight
5f4688d4d6 Merge pull request #29289 from hamishknight/the-requests-are-stacking-up
Don't heap allocate for active requests
2020-01-23 07:07:33 -08:00
swift-ci
810bf82c09 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-23 00:37:05 -08:00
Keith Smiley
8c8c9784d6 Add -no-whole-module-optimization (#29362)
This adds an argument to allow negating `-whole-module-optimization`.
This is useful for cases where it's easier to add an extra flag to your
swiftc invocation rather than removing the original one.
2020-01-23 00:13:00 -08:00
swift-ci
4a1f9f9b04 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-22 23:24:37 -08:00
David Ungar
f696aabffb Merge pull request #29246 from davidungar/fine-grained-off-but-w-tests-rb
[Incremental] Fixes for fine-grained dependencies + tests for them, but off-by-default
2020-01-22 23:21:33 -08:00
kelvin13
2701012434 fix some reviewed issues 2020-01-22 21:56:47 -06:00
swift-ci
97af8d7e0b Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-22 17:24:41 -08:00
David Smith
8e09cd2119 Merge pull request #25864 from Catfish-Man/no-objc-complications-once-more-into-the-breach
Update fast dealloc to use new-style interposing and support objc weak refs
2020-01-22 17:21:34 -08:00
Andrew Trick
82a9f132a7 Merge pull request #29316 from atrick/escape-verifysummary
EscapeAnalysis verification: fix false positives.
2020-01-22 17:15:19 -08:00
kelvin13
fb4bd68653 Merge branch 'master' into comparable-enums 2020-01-22 18:38:31 -06:00
swift-ci
2cbb8f4de9 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-22 15:23:52 -08:00
David Smith
f36a4db856 Update fast dealloc to use new-style interposing and support objc weak refs 2020-01-22 13:55:27 -08:00
Xi Ge
7987725d10 AST: PlatformKind can use uint8_t as raw value 2020-01-22 13:29:38 -08:00
Andrew Trick
1654dd54a1 Cleanup EscapeAnalysis getNode and fix undef handling.
Consistently handle base and derived pointers.

Consistently avoid creating nodes for undef, which breaks
verification.

Be more precise about creating the node based on the derived pointer
type.

Remove a few extraneous helpers.

Fixes <rdar://58445744> swiftc assert during EscapeAnalysis
verification: (EA->isPointer(Nd->mappedValue)), function verify
2020-01-22 11:48:05 -08:00
Andrew Trick
9495af6b75 Fix -escapes-internal-verify for summary graph merging.
Don't merge node properties until after node merging begins, so
internal verification can run right before each merge.

Rework ConnectionGraph::mergeFrom. Remove an extra loop. Defer
mergeAllScheduledNodes until all the source graph's mapped nodes are
added so that the graph is always structurally valid before a
merge. This is also necessary to avoid EscapeAnalysis
assert: (!To->mergeTo), in setPointsToEdge.

Enable -escapes-internal-verify to all tests in escape_analysis.sil.

Add hand-reduced unit tests in escape_analysis_reduced.sil.
2020-01-22 11:48:05 -08:00
swift-ci
11550b4c0c Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-22 09:43:43 -08:00
Varun Gandhi
f6643af650 [Printer] Update printSIL to make sure LLDB doesn't break.
For more context, see:
1. https://github.com/apple/swift/pull/29239 - original PR which introduced
   the change, including an LLDB-side change.
2. The immediately preceding commit, which reverted this change.
3. https://github.com/apple/swift/pull/29350 which revealed some breakage
   caused by the changes in PR 29239 (unrelated to printing).
2020-01-22 09:05:39 -08:00
Varun Gandhi
ae358842dc Revert "[NFC] Fix incorrect comment in ExtInfo's constructor."
This reverts commit f07ba79377.
2020-01-22 09:04:52 -08:00
Varun Gandhi
191b0d8c02 Revert "[AST] Add functionality for computing Clang types for SIL functions."
This reverts commit bfa2f98d95.
2020-01-22 09:04:52 -08:00
Varun Gandhi
29cc1b6195 Revert "[AST] Store Clang type in SILFunctionType for @convention(c) functions."
This reverts commit 5f45820755.
2020-01-22 09:04:52 -08:00
Varun Gandhi
d9a7a7d49e Revert "[Printer] Conditionally print Clang types in emitted SIL."
This reverts commit a27c5f0a16.
2020-01-22 09:04:52 -08:00
swift-ci
8d4bb2197f Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-22 09:03:43 -08:00
David Zarzycki
68b5505e89 [SIL] Fix -Wdocumentation warnings
In a27c5f0a16, these two parameters were
removed.
2020-01-22 07:15:51 -05:00
Erik Eckstein
bbfaccda4b Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-22 08:25:23 +01:00
Devin Coughlin
e9df206b9d Merge pull request #29017 from devincoughlin/maccatalyst
Build system and availability support for macCatalyst
2020-01-21 22:52:48 -08:00
swift-ci
44ebe469a6 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-21 21:02:46 -08:00
Brent Royal-Gordon
7df141cdad Merge pull request #29341 from brentdax/path-dependence
[MiscDiagnostics] Warn if magic identifiers don’t match
2020-01-21 20:45:47 -08:00
Devin Coughlin
082421048a [AST/Sema] Add availability attributes for macCatalyst
Add a platform kind and availability attributes for macCatalyst. macCatalyst
uses iOS version numbers and inherits availability from iOS attributes unless
a macCatalyst attribute is explicitly provided.
2020-01-21 20:27:14 -08:00
Devin Coughlin
8c5c5ec802 [Parse] Support macCatalyst conditional compilation
Add support for conditional compilation under macCatalyst

Developers can now detect whether they are compiling for macCatalyst at
compile time with:

  #if targetEnvironment(macCatalyst)
    // Code only compiled under macCatalyst.
  #end
2020-01-21 18:28:17 -08:00
Devin Coughlin
655d89b146 [Driver/Frontend] Add Driver support for macCatalyst and library search paths
Add support in the driver and frontend for macCatalyst target
targets and library search paths.

The compiler now adds two library search paths for overlays when compiling
for macCatalyst: one for macCatalyst libraries and one for zippered macOS
libraries. The macCatalyst path must take priority over the normal macOS path
so that in the case of 'unzippered twins' the macCatalyst library is
found instead of the macOS library.

To support 'zippered' builds, also add support for a new -target-variant
flag. For zippered libraries, the driver invocation takes both a -target and a
-target-variant flag passes them along to the frontend. We support builds both
when the target is a macOS triple and the target variant is macCatalyst and
also the 'reverse zippered' configuration where the target is macCatalyst and the
target-variant is macOS.
2020-01-21 18:28:17 -08:00
Brent Royal-Gordon
c504eb1b0a Warn if magic identifiers don’t match
When wrapping a function which is supposed to capture the caller’s location, there’s always a risk that the wrapper won’t capture the information the wrapped function wants; for instance, you might pass `(…, line, column)` where the callee expected `(…, column, line)`.

This commit emits a warning when a call passes an explicit argument to something that has a default argument, and that explicit argument is itself a parameter with a default argument, and both parameters use magic identifiers, but they use *different* magic identifiers.  This is partially in support of concise #file, but applies to all magic identifiers.

Fixes rdar://problem/58588633.
2020-01-21 14:28:16 -08:00
Brent Royal-Gordon
b43b1ec1be [NFC] Allow getParameter{List,At} to be called on any ValueDecl
These now return nullptr for parameter-list-free types; previously those would have failed a cast.
2020-01-21 14:28:16 -08:00
Brent Royal-Gordon
6c99bdac1e [NFC] Extract helper for making magic identifier strings 2020-01-21 14:28:16 -08:00