Commit Graph

11880 Commits

Author SHA1 Message Date
Robert Widmann
eb61931012 [NFC] Grab the private discriminator for a file in IRGenDebugInfo
This was being done at an odd point in the frontend presumably because by that point the private discriminator had been fully computed.  Instead, push the conditions for generating the prefix data down to debug info generation and stop mutating IRGenOptions::DebugFlag in the frontend.
2020-01-13 22:01:41 -08:00
Robert Widmann
d4976caa4e [Gardening] Const-qualify some logically const functions 2020-01-13 22:01:41 -08:00
swift-ci
b03a280b3b Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-13 21:23:26 -08:00
Xi Ge
166980066e Merge pull request #29179 from nkcsgexi/json-previous-install-name
TBDGen: teach the compiler to take a json file indicating previous install names
2020-01-13 21:20:26 -08:00
Slava Pestov
42916b4e08 Merge pull request #29183 from slavapestov/require-explicit-availability-fix
Fix driver to pass -require-explicit-availability flag to frontend jobs
2020-01-14 00:11:29 -05:00
Slava Pestov
3abf47a191 Sema: Improve -require-explicit-availability diagnostic phrasing 2020-01-13 21:49:51 -05:00
swift-ci
b62a9e089f Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-13 18:03:27 -08:00
Dan Zheng
6c29939f59 [AutoDiff upstream] Add @differentiable ASTScope support. (#29171)
`@differentiable` attributes may contain `where` clauses referencing generic
parameters from some generic context, just like `@_specialize` attributes.

Without special ASTScope support for `@differentiable` attributes,
ASTScopeLookup.cpp logic tries to resolve the generic parameter `DeclName`s in
`where` clauses based on source location alone
(`ASTScopeImpl::findChildContaining`) and fails.

The fix is to add a special `DifferentiableAttributeScope`, mimicking
`SpecializeAttributeScope`. Every `@differentiable` attribute has its own scope,
derived from the declaration on which it is declared. Unlike `@_specialize`,
`@differentiable` may also be declared on `AbstractStorageDecl` declarations
(subscripts and variables).

Upstreams https://github.com/apple/swift/pull/27451.

Progress towards TF-828: upstream `@differentiable` attribute type-checking.
2020-01-13 17:48:44 -08:00
Xi Ge
90f59e4336 TBDGen: teach the compiler to take a json file indicating previous install names
Using the new linker directives $ld$previous requires the compiler to know the previous
install names for the symbols marked as removed. This patch teaches the compiler
to take a path to a Json file specifying the map between module names and previous
install names. Also, these install names can be platform-specific.

Progress towards: rdar://58281536
2020-01-13 17:45:40 -08:00
swift-ci
2981af7f34 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-13 15:43:27 -08:00
Nathan Hawes
9b33ece4e5 Merge pull request #28605 from nathawes/fix-unreachable-in-addSameTypeRequirementBetweenConcrete-during-completion
[AST] Handle visiting UnresolvedType in TypeMatcher
2020-01-13 15:33:53 -08:00
swift-ci
b03560174a Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-13 15:04:05 -08:00
swift-ci
b890bcb3c2 Merge pull request #28899 from ravikandhadai/constexpr-checked-casts 2020-01-13 14:45:32 -08:00
Alex Suhan
eed6a4eb94 Expose function sections option (#28088)
* Expose separate function sections option to compiler

* Add function sections test
2020-01-13 14:45:01 -08:00
swift-ci
f090711bcc Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-13 11:43:28 -08:00
Owen Voorhees
13b42593b5 Merge pull request #29163 from owenv/dynamic_callable_note
[Diagnostics] Add an educational note about @dynamicCallable requirements
2020-01-13 13:35:19 -06:00
Owen Voorhees
4e686494dc [Diagnostics] Add an educational note about @dynamicCallable requirements 2020-01-13 10:48:52 -06:00
swift-ci
e280ebe9b7 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-12 21:44:31 -08:00
David Ungar
d43dc84a5d Merge pull request #29126 from davidungar/fine-grained-fixes-rb2-w-dbg
[Incremental] Dependency fixes in preparation for fine-grained dependencies
2020-01-12 21:29:39 -08:00
swift-ci
d5033fbe3a Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-12 12:44:32 -08:00
Dan Zheng
a98fe74044 [AutoDiff upstream] Add TangentSpace. (#29107)
`TangentSpace` represents the tangent space of a type.

- For `Differentiable`-conforming types:
  - The tangent space is the `TangentVector` associated type.
- For tuple types:
  - The tangent space is a tuple of the elements' tangent space types, for the
    elements that have a tangent space.
- Other types have no tangent space.

`TypeBase::getAutoDiffTangentSpace` gets the tangent space of a type.

`TangentSpace` is used to:
- Compute the derivative function type of a given original function type.
- Compute the type of tangent/adjoint values during automatic differentiation.

Progress towards TF-828: upstream `@differentiable` attribute type-checking.
2020-01-12 12:29:08 -08:00
swift-ci
dcb4ee0582 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-12 12:23:31 -08:00
Dan Zheng
1486d6b346 NFC: Add GenericSignature::getCanonicalSignature. (#29105)
Motivation: `GenericSignatureImpl::getCanonicalSignature` crashes for
`GenericSignature` with underlying `nullptr`. This led to verbose workarounds
when computing `CanGenericSignature` from `GenericSignature`.

Solution: `GenericSignature::getCanonicalSignature` is a wrapper around
`GenericSignatureImpl::getCanonicalSignature` that returns the canonical
signature, or `nullptr` if the underlying pointer is `nullptr`.

Rewrite all verbose workarounds using `GenericSignature::getCanonicalSignature`.
2020-01-12 12:17:41 -08:00
David Ungar
2b2bcdd394 Fix arg-order bug and add assertions. (Windows manifested.) 2020-01-11 21:57:14 -08:00
David Ungar
126932f50e w dbg 2020-01-11 21:57:14 -08:00
David Ungar
cc89dad526 Fine-grained and driver fixes.
Restructure fine-grained-dependencies to enable unit testing

Get frontend to emit correct swiftdeps file (fine-grained when needed) and only emit dot file for -emit-fine-grained-dependency-sourcefile-dot-files

Use deterministic order for more information outputs.

Set EnableFineGrainedDependencies consistently in frontend.

Tolerate errors that result in null getExtendedNominal()

Fix memory issue by removing node everywhere.

Break up print routine

Be more verbose so it will compile on Linux.

Sort batchable jobs, too.
2020-01-11 21:57:14 -08:00
Nathan Hawes
12529fea20 [AST] Handle visiting UnresolvedType in TypeMatcher
This fixes code completion hitting llvm_unreachable("non-canonical or
unchecked type") in subst on a type containing an UnresolvedType.

Resolves rdar://problem/56726715
2020-01-10 18:07:46 -08:00
swift-ci
5dcb80b599 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-10 15:24:32 -08:00
nate-chandler
1430c04e68 Merge pull request #28610 from nate-chandler/generic-metadata-prespecialization
Generic metadata prespecialization, part 1
2020-01-10 15:08:05 -08:00
swift-ci
e0c29988fe Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-10 15:04:04 -08:00
AG
f34c97069a Merge pull request #28678 from bitjammer/acgarland/symbol-graph
Symbol graph support
2020-01-10 14:53:19 -08:00
swift-ci
8e584a61cc Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-10 14:43:41 -08:00
Xi Ge
e1f6e846ca Re-apply "ModuleInterface: lock .swiftinterface while generating module cache" 2020-01-10 12:25:15 -08:00
Ashley Garland
7a3a0a9e23 Symbol graph support
Adds a tool `swift-symbolgraph-extract` that reads an existing Swift
module and prints a platform- and language-agnostic JSON description of
the module, primarly for documentation.

Adds a small sub-library `SymbolGraphGen` which houses the core
implementation for collecting relevant information about declarations.
The main entry point is integrated directly into the driver as a mode:
the tool is meant to be run outside of the normal edit-compile-run/test
workflow to avoid impacting build times.

Along with common options for other tools, unique options include
`pretty-print` for debugging, and a `minimum-access-level` options for
including internal documentation.

A symbol graph is a directed graph where the nodes are symbols in a
module and the edges are relationships between them. For example, a
`struct S` may have a member `var x`. The graph would have two nodes for
`S` and `x`, and one "member-of" relationship edge. Other relationship
kinds include "inherits-from" or "conforms to". The data format for a
symbol graph is still under development and may change without notice
until a specificiation and versioning scheme is published.

Various aspects about a symbol are recorded in the nodes, such as
availability, documentation comments, or data needed for printing the
shapes of declarations without having to understand specifics about the
langauge.

Implicit and public-underscored stdlib declarations are not included by
default.

rdar://problem/55346798
2020-01-10 09:53:37 -08:00
Arnold Schwaighofer
358e72b689 Adjust for removal of llvm::make_unique in favor of std::make_unique 2020-01-10 08:02:16 -08:00
Arnold Schwaighofer
0c99cd9734 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-10 08:00:41 -08:00
Doug Gregor
946eee9cf8 Merge pull request #29102 from DougGregor/function-builder-via-constraint-system
[Constraint solver] Use a constraint system to apply all function builders
2020-01-09 23:42:32 -08:00
Mishal Shah
c769e491e2 Revert "ModuleInterface: lock .swiftinterface while generating module cache" 2020-01-09 22:54:41 -08:00
Saleem Abdulrasool
b483047afe Revert "[Incremental] Dependency fixes in preparation for fine-grained dependencies" 2020-01-09 19:14:47 -08:00
Xi Ge
a8baeb3670 Merge pull request #29101 from nkcsgexi/lock-interface-gen-module
ModuleInterface: lock .swiftinterface while generating module cache
2020-01-09 17:41:20 -08:00
Nate Chandler
89278f8cbf [metadata prespecialization] Target only >=5.2.
Compatibility with earlier swift runtimes would require modifying the
runtime compatibility libraries to adjust the behavior of
checkMetadataState by way of typeForMangledNode or even
typeForMangledName.  For now, simply require that a version of swift
whose runtime knows about prespecialized metadata is being targeted.
2020-01-09 17:25:32 -08:00
Nate Chandler
e45b05476e [IRGen] Added gate for metadata prespecialization.
The new frontend flag -prespecialize-generic-metadata must be passed in
order for generic metadata to be specialized statically.

rdar://problem/56984885
2020-01-09 17:25:31 -08:00
Nate Chandler
52cf749764 [gardening] Corrected comment. 2020-01-09 17:25:30 -08:00
Dan Zheng
fbfb67a218 [AutoDiff upstream] Define AutoDiffConfig. (#29099)
Define `AutoDiffConfig`: the configuration for a derivative function:
- Parameter indices.
- Result indices.
- Derivative generic signature (optional).

Progress towards TF-828: upstream `@differentiable` attribute type-checking.
2020-01-09 17:10:57 -08:00
Xi Ge
8dda0193a6 ModuleInterface: lock .swiftinterface while generating module cache
This ensures only one process is generating module cache from an interface
file so that we don't blow up memory usage when multiple processes are
doing the same. The locking mechanism is similar to that of Clang's.

A better approach is that the build system takes care of the module building
step as a formal dependency.

rdar://52839445
2020-01-09 15:45:48 -08:00
Doug Gregor
5b320992ea [Constraint solver] Use a constraint system to apply all function builders.
When type checking the body of a function declaration that has a function
builder on it (e.g., `@ViewBuilder var body: some View { ... }`), create a
constraint system that is responsible for constraint generation and
application, sending function declarations through the same code paths
used by closures.
2020-01-09 14:38:45 -08:00
Dan Zheng
6a7f84048d [AutoDiff upstream] Store @differentiable original declaration. (#29082)
Store in `DifferentiableAttr` the original declaration on which the attribute
is declared.

The original declaration is resolved during parsing and deserialization
(not yet upstreamed).

Progress towards TF-828: upstream `@differentiable` attribute type-checking.
2020-01-09 10:33:22 -08:00
Dan Zheng
033ddffe42 [AutoDiff] NFC: gardening. (#28928)
Upstream minor changes from `tensorflow` branch.
2020-01-09 07:05:20 -08:00
Slava Pestov
724ccf0f67 Merge pull request #29088 from slavapestov/request-eval-perf-hack
Fix some low-hanging request evaluator performance fruit
2020-01-09 08:47:43 -05:00
David Ungar
939034a4bb Merge pull request #29009 from davidungar/fine-grained-fixes-post-rb
[Incremental] Dependency fixes in preparation for fine-grained dependencies
2020-01-09 00:57:31 -08:00