Commit Graph

12606 Commits

Author SHA1 Message Date
swift-ci
598b129de9 Merge remote-tracking branch 'origin/master' into master-next 2017-04-09 17:08:42 -07:00
Joe Groff
39a0849362 SILGen: Codegen for key path applications. 2017-04-09 16:38:34 -07:00
Joe Groff
964dc0e174 Sema: (wip) Overload resolution for keypath subscripts.
TODO: Some diagnostic regressions:
test-macosx-x86_64/Compatibility/tuple_arguments.swift
test-macosx-x86_64/Constraints/diagnostics.swift
test-macosx-x86_64/Constraints/tuple_arguments.swift
test-macosx-x86_64/expr/unary/keypath/keypath.swift
test-macosx-x86_64/expr/unary/selector/selector.swift
2017-04-09 16:38:02 -07:00
Andrew Trick
be1881aa1f Remove redundant Transform.getName() definitions.
At some point, pass definitions were heavily macro-ized. Pass
descriptive names were added in two places. This is not only redundant
but a source of confusion. You could waste a lot of time grepping for
the wrong string. I removed all the getName() overrides which, at
around 90 passes, was a fairly significant amount of code bloat.

Any pass that we want to be able to invoke by name from a tool
(sil-opt) or pipeline plan *should* have unique type name, enum value,
commend-line string, and name string. I removed a comment about the
various inliner passes that contradicted that.

Side note: We should be consistent with the policy that a pass is
identified by its type. We have a couple passes, LICM and CSE, which
currently violate that convention.
2017-04-09 15:20:28 -07:00
Andrew Trick
3bcbf04d38 Rewrite unused SIL pass descriptions as proper, descriptive pass names.
I improved all of the pass names so they are minimal but fully descriptive.

The PASS macros contained wordy, unhelpful descriptions, which served
no functional purpose. Those descriptions are permanently preseved in
git history. If anyone thinks they contain useful information, then
they should be added to the *definition* of the pass (where passes are
actually described).

Long-winded pass comments have no place in Passes.def. The purpose of
those macros is to associate a unique type name, enum value,
command-line-option name, and pretty name with each pass for tooling
purposes. Any one of those entities needs to be sufficient for looking
up the others. That's not where anyone should look read a description
of the pass.
2017-04-09 15:12:53 -07:00
swift-ci
a7fc416bba Merge remote-tracking branch 'origin/master' into master-next 2017-04-08 20:08:31 -07:00
Arnold Schwaighofer
789a9b1d09 Fix DeadStoreElim by not lying about instruction semantics
rdar://31414977
2017-04-08 19:37:23 -07:00
swift-ci
8b73c56a13 Merge remote-tracking branch 'origin/master' into master-next 2017-04-07 17:48:33 -07:00
Doug Gregor
7b19bb4c16 [GSB] Use "direct" requirement terminology for same-type requirement handling.
NFC
2017-04-07 16:53:11 -07:00
Doug Gregor
c522bb5239 [GSB] Separate out "unresolved" and "direct" type requirement handling.
As we've done with layout requirements, introduce a new entry point
(addTypeRequirement) that handles unresolved type requirements of the
form `T: U`, resolves the types, and then can

1. Diagnose any immediate problems with the types,
2. Delay the type requirement if one of the types cannot be resolved,
or
3. Break it into one or more "direct" requirements.

This allows us to clean up and centralize a bunch of checking that was
scattered/duplicated across the GSB and type checker.
2017-04-07 16:53:11 -07:00
Doug Gregor
68efffd4b8 [GSB] Separate out the "unresolved" and "direct" layout constraint entrypoints.
More staging for delayed resolution of constraints.
2017-04-07 16:53:10 -07:00
Doug Gregor
6991a8c261 [GSB] Basic infrastructure to allow type resolution to fail.
When we resolve() a type that is being used in a constraint, allow
that resolution to fail. If it does fail, then record the constraint
we were trying to address (via a stub that, currently, just drops it)
and continue on. NFC for now; this is intended to allow us to limit
the explosion of types in recursive systems.
2017-04-07 16:53:10 -07:00
Doug Gregor
25f3b3dd4b [GSB] Remove unused "from generic typealias" hack. 2017-04-07 16:53:10 -07:00
Bob Wilson
0cb50e1031 Merge remote-tracking branch 'origin/master' into master-next 2017-04-07 16:35:57 -07:00
Huon Wilson
9e9a0a0436 Merge pull request #8596 from huonw/symbol-list-3
Use IRGen's LinkInfo in TBDGen.
2017-04-07 16:23:51 -07:00
swift-ci
2479cea207 Merge remote-tracking branch 'origin/master' into master-next 2017-04-06 18:08:33 -07:00
Joe Groff
85ad6b355e Merge branch 'master' into keypaths 2017-04-06 18:02:07 -07:00
eeckstein
8e77ea7338 Merge pull request #8598 from eeckstein/demangling-extensions
Demangler: fix de- and re-mangling of constrained extensions
2017-04-06 17:56:45 -07:00
Huon Wilson
fcb88b4084 [TBD] Thread enough through to use UniversalLinkageInfo. 2017-04-06 17:50:57 -07:00
Huon Wilson
ac0c76be12 [IRGen] Allow constructing UniversalLinkageInfo without an IRGenModule. 2017-04-06 17:31:45 -07:00
Huon Wilson
4e263a29d5 [IRGen] Compute conformance fragility based on containing module.
Previously this would be using the current module's resilience strategy,
rather than that of the one that contains the conformance.
2017-04-06 17:29:42 -07:00
swift-ci
2bb9b587fb Merge remote-tracking branch 'origin/master' into master-next 2017-04-06 16:48:31 -07:00
swift-ci
d1c5de1cea Merge pull request #8601 from nkcsgexi/lookup-document 2017-04-06 16:33:41 -07:00
Erik Eckstein
7dd2828d27 Demangler: add a debug dump function to print the internal state of the demangler.
Useful for debugging the demangler.
2017-04-06 16:07:13 -07:00
Xi Ge
55bdc6d1a6 Documentation: Add some documentation explaining what is Base in UnqualifiedLookupResult. 2017-04-06 15:50:23 -07:00
swift-ci
db30f2f71c Merge remote-tracking branch 'origin/master' into master-next 2017-04-05 20:08:31 -07:00
Andrew Trick
4f52f84939 [SILOpt] Redundant load elimination. Add debug output. 2017-04-05 19:59:15 -07:00
Andrew Trick
7ea54c8927 SILPrintContext: support for printing consistent block numbers. 2017-04-05 19:59:15 -07:00
Jordan Rose
6fdb076c5e Add a staging flag -enable-experimental-deserialization-recovery.
No promises that this is stable yet!
2017-04-05 18:31:46 -07:00
swift-ci
07fdaa2702 Merge remote-tracking branch 'origin/master' into master-next 2017-04-05 18:28:33 -07:00
swift-ci
5cb302efd7 Merge pull request #8579 from eeckstein/fix-stacknesting 2017-04-05 18:25:13 -07:00
Erik Eckstein
a43a844838 StackNesting: use the right debug locations for inserted deallocation instructions
Fixes a crash because we used a return-location for a deallocation instruction.

rdar://problem/31458587
rdar://problem/31458617
2017-04-05 18:05:39 -07:00
Michael Gottesman
e2a6a6233e [semantic-sil] Enable the mandatory semantic arc optimizer by default.
rdar://29870610
2017-04-05 17:30:17 -07:00
Bob Wilson
c6e37c1f0a Merge remote-tracking branch 'origin/master' into master-next 2017-04-05 17:26:52 -07:00
swift-ci
e822ca3904 Merge pull request #8576 from gottesmm/semantic_arc_opts_the_beginning 2017-04-05 16:54:42 -07:00
Jordan Rose
e831dca955 [Serialization] Save path traces from failed cross-references.
This is important information in a crash trace, so let's make sure to
preserve it even as the stack unwinds.
2017-04-05 16:40:56 -07:00
Huon Wilson
31b92b1b46 Merge pull request #8473 from huonw/symbol-list-2
Remove dependency on IRGenModule of some linkage computations
2017-04-05 16:39:04 -07:00
Michael Gottesman
5e278fdf67 [semantic-arc-opts] Create a new pass called semantic arc opts.
I am going to run it very early and use it to ensure that extra copies due to my
refactoring of SILGenPattern do not cause COW copies to be introduced.

For now, it does a very simple optimization, namely, it eliminates a copy_value,
with only a destroy_value user on a guaranteed parameter.

It is now disabled behind a flag.
2017-04-05 16:16:57 -07:00
swift-ci
0f1ac0abef Merge remote-tracking branch 'origin/master' into master-next 2017-04-05 15:48:32 -07:00
swift-ci
a9d98089c8 Merge pull request #8573 from gottesmm/ownership_verifier_refactoring 2017-04-05 15:36:01 -07:00
Jordan Rose
3dbc9de75b [Serialization] Use llvm::Expected for deserialization failures.
...but don't actually try to handle any of them yet. In fact, don't
even bother to /produce/ them yet, except for resolving
cross-references.
2017-04-05 15:17:01 -07:00
Michael Gottesman
e34bbdf2fb [semantic-sil] Create a new higher level API for accessing the ownership checker. It is meant to be used by passes.
rdar://29870610
2017-04-05 14:34:21 -07:00
swift-ci
5cdde19a04 Merge remote-tracking branch 'origin/master' into master-next 2017-04-05 12:08:45 -07:00
swift-ci
aa880a190d Merge pull request #8557 from DougGregor/substitution-map-cleanups 2017-04-05 12:04:07 -07:00
swift-ci
024033cf97 Merge pull request #8533 from adrian-prantl/28311051 2017-04-05 11:52:50 -07:00
Doug Gregor
6878538ba1 [AST] Remove GenericEnvironment from SubstitutionMap; it's unnecessary. 2017-04-05 11:21:39 -07:00
Doug Gregor
5c89eb84f0 [AST] Drop substitutions from type witnesses.
Nobody is using the actual substitutions, but we sure did a lot of
work to cope with them.
2017-04-05 11:21:38 -07:00
Huon Wilson
0776b19958 [IRGen] Compute LinkInfo without an IGM. 2017-04-05 09:54:20 -07:00
Huon Wilson
65c6bdca90 [IRGen] Remove IGM argument, factor out conformance fragility logic. 2017-04-05 09:54:19 -07:00
Huon Wilson
3105c6ed00 [IRGen] Expose LinkInfo publicly, like LinkEntity. 2017-04-05 09:54:19 -07:00