Commit Graph

2818 Commits

Author SHA1 Message Date
swift-ci
969feefd63 Merge remote-tracking branch 'origin/master' into master-next 2018-04-15 09:26:40 -07:00
Andrew Trick
9fdba965b1 [NFC] Create an AccessedStorage utility for use in multiple exclusivity related passes.
Added new files, MemAccessUtils.h and MemAccessUtils.cpp to house the
new utility. Three functions previously in InstructionUtils.h move
here:
- findAccessedAddressBase
- isPossibleFormalAccessBase
- visitAccessedAddress

Rather than working with SILValues, these routines now work with the
AccessedStorage abstraction. This allows enforcement logic and SIL
pattern recognition to be shared across diagnostics and
optimization. (It's very important for this to be consistent).

The new AccessedStorage utility is a superset of the class that was
local to DiagnoseStaticExclusivity. It exposes the full set of all
recognized kinds of storage. It also represents function arguments as
an index rather that a SILValue. This allows an analysis pass to
compare/merge AccessedStorage results from multiple callee functions,
or more naturally propagate from callee to caller context.
2018-04-13 23:07:20 -07:00
swift-ci
ff91175c5e Merge remote-tracking branch 'origin/master' into master-next 2018-04-12 22:15:59 -07:00
Slava Pestov
07e95de659 Merge pull request #15895 from slavapestov/sil-link-remove-worklist
Remove one of the two worklists from the SIL linker
2018-04-12 22:10:57 -07:00
swift-ci
5ea4848930 Merge remote-tracking branch 'origin/master' into master-next 2018-04-12 19:39:53 -07:00
Vedant Kumar
bb567886d8 [Coverage] Disable forced emission for unmapped decls (#15909)
Disable forced SILGen for lazy functions which are not used for code
coverage reporting.

As a drive-by, fix the forced emission logic for functions profiled for
PGO.

This helps address a compile-time issue (r://39332957).
2018-04-12 19:34:34 -07:00
Slava Pestov
f4b170c144 SIL: Add SILModule::loadFunction()
This is like linkFunction(), except it only deserializes the immediate
function body, without recursively walking its transitive dependencies.
2018-04-12 18:08:05 -07:00
swift-ci
491445b075 Merge remote-tracking branch 'origin/master' into master-next 2018-04-12 11:35:46 -07:00
swift-ci
a16c423518 Merge pull request #15875 from dcci/di-member 2018-04-12 11:35:31 -07:00
Davide Italiano
b4d563802b [SILInstruction] Introduce isDebugInstruction().
This is a property of an instruction and should be a member
function of `SILInstruction` and not a free function in
`DebugUtils`. Discussed with Adrian.
2018-04-11 10:14:21 -07:00
swift-ci
068ea184ec Merge remote-tracking branch 'origin/master' into master-next 2018-04-10 17:27:42 -07:00
Vedant Kumar
c597ad1775 [Coverage] Use a MapVector to store coverage maps in a module, NFC (#15858)
Using a MapVector allows coverage maps to be printed in a deterministic
order, and to be queried by function name. This makes an assertion
cheaper.
2018-04-10 17:24:59 -07:00
swift-ci
43ff3494c2 Merge remote-tracking branch 'origin/master' into master-next 2018-04-09 16:21:22 -07:00
Slava Pestov
81cf1d951d SIL: Remove -sil-link-all frontend flag
It was only used in a few tests. Those tests now use -emit-sil instead
of -emit-silgen, with some functions marked @_transparent and a few
CHECK: lines changed now that the mandatory optimizations get to run.
2018-04-09 13:27:52 -07:00
swift-ci
272cac3586 Merge remote-tracking branch 'origin/master' into master-next 2018-04-07 20:29:42 -07:00
Michael Gottesman
3717512cba Merge pull request #15777 from gottesmm/pr-bb748720540ac4e06fad7d37623faa9c10bb2599
[func-sig-opts] hasNonTrivialNonDebugUse => hasNonTrivialNonDebugTran…
2018-04-07 20:18:19 -07:00
Michael Gottesman
88bc490380 [func-sig-opts] hasNonTrivialNonDebugUse => hasNonTrivialNonDebugTransitiveUsers and move to DebugUtils.
I am getting rid of FunctionSignatureOptUtils. It is only used by
FunctionSignatureOpts, so it should either be a local utility file whose header
lives in ./lib or integrated into FunctionSignatureOpts. Beyond this utility
function (which seems like a generally useful thing that should be in
DebugUtils), the only other thing left in FunctionSignatureOptUtils is part of
the heuristic of FunctionSignatureOpts. It should really be in that file.

rdar://38196046
2018-04-07 10:06:48 -07:00
swift-ci
67ad495bd1 Merge remote-tracking branch 'origin/master' into master-next 2018-04-06 16:47:46 -07:00
Slava Pestov
69583c724d SIL: Sort associated types in witness table layouts
This allows them to be re-ordered resiliently.
2018-04-06 15:41:08 -07:00
swift-ci
2fda5ce1f5 Merge remote-tracking branch 'origin/master' into master-next 2018-04-05 22:53:22 -07:00
Doug Gregor
703f8dbb75 Merge pull request #15759 from ikesyo/sil-using-over-typedef
[gardening][SIL] Replace `typedef` with `using`
2018-04-05 22:42:49 -07:00
swift-ci
c991563cad Merge remote-tracking branch 'origin/master' into master-next 2018-04-05 18:51:37 -07:00
swift-ci
5e74cdabd7 Merge pull request #15773 from vedantk/cov-decls 2018-04-05 18:42:40 -07:00
Vedant Kumar
daa094e5e0 [Coverage] Only instrument functions which are definitions
The ASTs for functions which aren't definitions may not be fully
typechecked or well-formed, so: avoid looking at them.

This fixes at least one assertion failure seen while building a project
with coverage, and is probably good for some substantial compile-time
improvements with coverage enabled.

rdar://39069115
2018-04-05 13:33:43 -07:00
swift-ci
8f0f89053a Merge remote-tracking branch 'origin/master' into master-next 2018-04-05 09:29:49 -07:00
Joe Groff
9793439356 Merge pull request #15722 from jckarter/deserialize-clang-importer-witness-tables-iii
SIL: Force Clang-imported protocol conformances to get deserialized when used.
2018-04-05 09:20:46 -07:00
Sho Ikeda
03fbd4a6de [gardening][SIL] Replace typedef with using 2018-04-05 13:53:20 +09:00
Joe Groff
c5abef647f SIL: Force Clang-imported protocol conformances to get deserialized when used.
Code may end up indirectly using a witness table for a Clang-imported type by inlining code that used the conformance from another module, in which case we need to ensure we have a local definition at hand in the inlining module so we can have something to link against independently. This needs to be fixed from both sides:

- During serialization, serialize not only witness tables from the current module, but from Clang-imported modules too
- During deserialization, when the SILLinker walks a loaded module, ensure that all shared conformances get deserialized, including those from ApplyInsts and inherited/associated type protocol requirements.

Fixes rdar://problem/38687726.
2018-04-04 14:41:13 -07:00
swift-ci
8ff573b5ba Merge remote-tracking branch 'origin/master' into master-next 2018-04-03 19:41:16 -07:00
Slava Pestov
28d24f8f38 SIL: Remove redundant utility method and rename another one 2018-04-03 18:14:40 -07:00
swift-ci
7b007e6db5 Merge remote-tracking branch 'origin/master' into master-next 2018-04-01 18:49:13 -07:00
Slava Pestov
38817f7a2d SIL: Refactor the linker a bit 2018-04-01 02:27:36 -07:00
swift-ci
1a436bcb75 Merge remote-tracking branch 'origin/master' into master-next 2018-03-31 10:08:58 -07:00
Andrew Trick
e9d07d88fc Merge pull request #15501 from atrick/add-access-tracking-flag
[exclusivity] Add an access tracking flag.
2018-03-31 10:04:08 -07:00
swift-ci
1c162a567d Merge remote-tracking branch 'origin/master' into master-next 2018-03-31 01:49:02 -07:00
Mark Lacey
21134efd22 Revert "IRGen: Deserialize SIL witness tables and shared-linkage definitions by need." 2018-03-30 22:14:13 -07:00
Andrew Trick
4ed120e46c Merge branch 'master' into add-access-tracking-flag 2018-03-30 19:25:46 -07:00
swift-ci
9121164d82 Merge remote-tracking branch 'origin/master' into master-next 2018-03-30 17:09:01 -07:00
Joe Groff
dbcab4b002 Merge pull request #15590 from jckarter/deserialize-clang-importer-witness-tables-ii
IRGen: Deserialize SIL witness tables and shared-linkage definitions by need.
2018-03-30 17:07:18 -07:00
swift-ci
e99fdb8f07 Merge remote-tracking branch 'origin/master' into master-next 2018-03-30 13:48:46 -07:00
Joe Groff
ae2d2973d1 IRGen: Deserialize SIL witness tables and shared-linkage definitions by need.
Code may end up indirectly using a witness table for a Clang-imported type by inlining code that used the conformance from another module, in which case we need to ensure we have a local definition at hand in the inlining module so we can have something to link against independently. This needs to be fixed from both sides:

- During serialization, serialize not only witness tables from the current module, but from Clang-imported modules too, so that their definitions can be used by other modules that inline code from the current module
- During IRGen, when we emit a reference to a SILWitnessTable or SILFunction declaration with shared linkage, attempt to deserialize the definition on demand

Fixes rdar://problem/38687726.
2018-03-30 11:12:58 -07:00
Arnold Schwaighofer
80e7a1914d Add a convert_escape_to_noescape [not_guaranteed] variant 2018-03-30 08:53:40 -07:00
swift-ci
3466e93d25 Merge remote-tracking branch 'origin/master' into master-next 2018-03-29 19:09:12 -07:00
Andrew Trick
ed8a604c27 Merge branch 'master' into add-access-tracking-flag 2018-03-29 18:26:22 -07:00
Slava Pestov
d1c6e1d24a SIL: Generalize default witness tables now that defaulted witnesses don't have to go at the end
NFC until the new witness table instantiation mechanism is enabled.
2018-03-29 14:03:58 -07:00
swift-ci
3e53228828 Merge remote-tracking branch 'origin/master' into master-next 2018-03-28 15:09:15 -07:00
Davide Italiano
dfaf133d27 [LoadableByAddress] Fix debug info holes when expanding alloc_stack.
<rdar://problem/36876376>
2018-03-28 11:54:03 -07:00
swift-ci
7d334ee930 Merge remote-tracking branch 'origin/master' into master-next 2018-03-27 16:43:30 -07:00
Vedant Kumar
80ed3cf0a2 Merge pull request #15552 from dcci/diholesloosen
[SILVerifier] Loosen verification for debug info scopes holes.
2018-03-27 16:43:16 -07:00
swift-ci
cb0c88cf09 Merge remote-tracking branch 'origin/master' into master-next 2018-03-27 16:24:45 -07:00