Commit Graph

1043 Commits

Author SHA1 Message Date
Argyrios Kyrtzidis
8c6c9a27c1 [sourcekitd] Be tolerant of multiple calls to sourcekitd_initialize. 2015-11-30 10:46:52 -08:00
Xi Ge
9beeb56a90 [TypeInterface] When printing type-specific interfaces, replace parameter and return types with instantiated types. 2015-11-17 19:12:30 -08:00
Doug Gregor
9491ec4c02 Add a swift-ide-test option to not print import declarations.
The import declarations get in the way when looking the results of
-enable-omit-needless-words.
2015-11-16 15:27:38 -08:00
Argyrios Kyrtzidis
6bcd425047 [sourcekit] Introduce sourcekitd_set_uid_handlers, to fully control how uid's are mapped to strings and vice-versa. 2015-11-16 13:26:58 -08:00
Argyrios Kyrtzidis
df060ff827 [sourcekit] Fix a comment. 2015-11-16 13:26:58 -08:00
Argyrios Kyrtzidis
e8b1a10b5c [sourcekit] Fix sourcekitd::UIdentFromSKDUID on the service side, that is used for logging purposes. 2015-11-16 13:26:58 -08:00
Argyrios Kyrtzidis
d06b55a622 [CMake/build] Instead of just picking up the libclang dylib, invoke install-libclang target on the llvm build. 2015-11-11 21:35:01 -08:00
Michael Gottesman
b0b9ca4f63 Update for upstream llvm change. 2015-11-11 16:07:41 -08:00
Xi Ge
4b847abf92 [SourceKit][CodeFormat] Align the comments before a case statement with the statement. rdar://20985149 2015-11-11 11:40:49 -08:00
Chris Willmore
2088cd4373 swift-autolink-extract should look inside .a files.
Previously it just gave up when it saw anything other than an ELF .o file. We
could have it ignore .a files, but we might as well do the right thing.

<rdar://problem/23045632>
2015-11-10 12:48:37 -07:00
Erik Eckstein
ce848c648d And again: re-apply the StackPromotion commit 0dd045ca04.
The problem of the failure was a bug in instruction cloning, which is fixed in the previous commit.
2015-11-08 15:51:00 -08:00
Mark Lacey
e9718f619e Revert "Another try to re-apply the StackPromotion commit 0dd045ca04dcc10a33abf57f7e1b08260c4e3de1."
This reverts commit 7d70aa39dc because
it may be responsible for a bot breakage.
2015-11-07 16:51:24 -08:00
Ben Langmuir
7b0784958f [CodeCompletion] Penalize fuzzy matches that aren't on token boundaries even more
rdar://problem/22419553
2015-11-06 20:01:53 -08:00
Ben Langmuir
11444373a5 [CodeCompletion] Don't fuzzy-match on single characters
Use prefix matching on the first character, switch to fuzzy after 2 or
more. With only a single character, we often get silly fuzzy results.
2015-11-06 19:26:48 -08:00
Ben Langmuir
ef8338fe86 [CodeCompletion] Don't add inner results on non-declarations
We were getting some ridiculous completions that were just two
independentdcompletions concatenated together.

rdar://problem/22945376
2015-11-06 19:02:22 -08:00
Jordan Rose
6a0527ec14 [SourceKit/CMake] Fix output directory for building with Xcode. 2015-11-06 16:27:08 -08:00
Erik Eckstein
7d70aa39dc Another try to re-apply the StackPromotion commit 0dd045ca04.
One bug fixed in escape analysis (previous commit) and one bug fixed in StackPromotion itself.
2015-11-06 16:16:36 -08:00
Xi Ge
6d19519e14 [SourceKit][CodeFormat] Adjust the indentation for getter methods that have no explicit "getter" keyword.
rdar://21598808
2015-11-06 11:34:18 -08:00
Arnold Schwaighofer
fd662987c8 Revert the StackPromotion pass - bots hit an assert.
Assertion failed: (NumUsePointsToFind > 0 && "There must be at least one
releasing instruction for an alloc"), function canPromoteAlloc

Revert "Fix comment for StackPromotion pass in SIL Passes"
Revert "Reapply the StackPromotion commit
0dd045ca04dcc10a33abf57f7e1b08260c4e3de1."

This reverts commit 3f4b1496bd and commit
199cfca13b.
2015-11-06 06:40:05 -08:00
Erik Eckstein
199cfca13b Reapply the StackPromotion commit 0dd045ca04.
This time with fixing a crash.
2015-11-05 22:01:27 -08:00
Erik Eckstein
d7b7fc76ea Revert "Add a stack promotion optimization."
This reverts commit 0dd045ca04.

StackPromotion crashes when compiling MatMult in stdlib-asserts configuration
2015-11-05 21:34:05 -08:00
Argyrios Kyrtzidis
f0f83d32c2 Fix -Wunused-function warnings. 2015-11-05 19:04:10 -08:00
Argyrios Kyrtzidis
a11b5628e3 [SourceKit] Use the correct macro, 'SWIFT_ENABLE_TARGET_TVOS'. 2015-11-05 18:34:42 -08:00
Argyrios Kyrtzidis
26fca3a347 [SourceKit/CMake] Use 'tools' install component for the SourceKit tools. 2015-11-05 18:24:19 -08:00
Erik Eckstein
0dd045ca04 Add a stack promotion optimization.
It promotes allocations of native swift objects and array buffers to the stack if it is possible.
The SIL StackPromotion pass is the main part of the optimization. For details see comments there.
Unfortunately we need an additional LLVM pass to handle array buffers, which is not very nice.
I hope that we can get rid of it in future (again: for details see the comments in StackPromotion.cpp)

The optimization gives performance improvements in some benchmarks, mostly related to array literals:
ArrayLiteral: +12%
Combos: +16%
DictionaryLiteral: + 37%
RIPEMD: +10%
StringBuilder: +27%
StringInterpolation: +11%
And last but not least the new benchmark which is dedicated to test stack promotion:
ObjectAllocation: +52%
2015-11-05 16:52:59 -08:00
Xi Ge
c022c9925c [CodeComplete] Start to support keyword-based code completion. rdar://23101032
Conventionally, code completion results are matched with user input solely by
names. However, names are limited in expressiveness. From this comments, we start to
decorate code completion results with @keywords fields extracted from Clang doc comments.
These fields are added by API authors to comment the decl with information that
is not manifested clear enough through names. Code completion users' typing of the
keyword leads to the corresponding code completion results being selected as well.
Keywords can be arbitrarily long and can be multiple.

For instance, a function called "index()" has "@keyword find" in its doc comment.
Users' typing of "find" leads to "index()" being selected in the code completion list.
2015-11-05 15:36:55 -08:00
Ben Langmuir
07e7be5d99 [sourcekit] Fix swift library dependencies
Now that we're in the same repo, use cmake targets instead of paths so
we get correct dependencies.
2015-11-05 12:47:38 -08:00
Argyrios Kyrtzidis
d19e4ae026 [SourceKit] Add license notices to all the source files. 2015-11-05 12:01:14 -08:00
Argyrios Kyrtzidis
8f0bc8c95f [CMake] Fix building SourceKit for a standalone build. 2015-11-05 11:02:47 -08:00
Argyrios Kyrtzidis
8ff6a98a99 [sourcekit] Merge SourceKit into the Swift repo.
The code goes into its own sub-tree under 'tools' but tests go under 'test',
so that running 'check-swift' will also run all the SourceKit tests.

SourceKit is disabled on non-darwin platforms.
2015-11-05 01:09:08 -08:00
David Farler
4ac9c80809 Add back remaining files for building and testing in Open Source 2015-10-31 00:19:20 -07:00
Dmitri Hrybenko
2e51d23875 Un-ifdef object literals
Swift SVN r32880
2015-10-25 07:50:53 +00:00
Michael Gottesman
dfb7e98168 Remove SwiftLLVMPasses and llvm-opt. They are no longer needed since we have swift-llvm-opt.
Swift SVN r32829
2015-10-22 20:04:01 +00:00
Michael Gottesman
4390d96adc Fix the linux build by appeasing the linker gods.
Swift SVN r32824
2015-10-22 07:05:34 +00:00
Michael Gottesman
53b64728f9 Add a new tool called swift-llvm-opts that is a custom opt driver for swift.
Now that one can not use analysis groups anymore on LLVM, we were given two
choices. Reinsert that dynamicism so we could via opt -load add in analyses /or/
just create our own version of opt. I decided to go with the later since it
enables us to simulate how IRGen sets up the LLVM pass pipeline exactly,
something we were unable to do before.

This also sets us up for whenever we need to respond to the new pass manager.

Swift SVN r32808
2015-10-21 21:45:20 +00:00
Michael Gottesman
72f5063f3c Update SwiftAA for upstream AA changes.
Swift SVN r32800
2015-10-21 21:45:13 +00:00
Xi Ge
5ca83d97a5 [InterfacePrint] Enhance ASTPrinter to support type-specific interface printing.
When users try to print the interface of a specific type (most often through cursor
infor query of SourceKit), we should simplify the original decls by replacing
archetypes with instantiated types, hiding extension details, and omitting
unfulfilled extension requirements. So the users can get the straight-to-the-point
"type interface". This commit builds the testing infrastructure for this feature,
and implements the first trick that wraps extension contents into the interface body.

This commit also moves some generic testing support from SourceKit to Swift.

Swift SVN r32630
2015-10-12 19:14:58 +00:00
Daniel Dunbar
a0f5bdfa50 [PATCH] [Driver] Add support for using 'swift' to exec subcommands.
- This allows 'swift <FOO>' to be used to invoke swift-<FOO>, so that we can
   use 'swift' as a namespace for additional commands (like ones used for the
   package manager.

 - This patch just adds the basic subcommand functionality, but doesn't rework
   either 'swift-autolink-extract' or 'swift -frontend' to follow this code path.

 - <rdar://problem/22844530> Provide 'swift' support for subcommands



Swift SVN r32367
2015-10-01 07:16:12 +00:00
Mark Lacey
ea4af7309e Remove another use of getInstList().
Missed this in r32307, which added front()/back() to SILBasicBlock.

Swift SVN r32318
2015-09-29 23:22:16 +00:00
Jordan Rose
f866e56388 [swift-demangle] Filter mode: '$' is a valid mangled name character.
rdar://problem/21001459

Swift SVN r32229
2015-09-25 17:53:43 +00:00
Xin Tong
c9f43c824c LLVM level RC identity, strip off pointer casts as well as reference forwarding
for some of the entry points. rdar://22774326

Swift SVN r32124
2015-09-21 21:16:22 +00:00
Mark Lacey
8f001ed174 Use a SILBuilder in SILExtract rather than calling a ctor.
Swift SVN r32111
2015-09-21 05:58:59 +00:00
Doug Gregor
44b8d45288 Clean up inference of default arguments from imported APIs (mostly).
My temporary hackery around inferring default arguments from imported
APIs was too horrible. Make it slightly more sane by:

1) Actually marking these as default arguments in the type system,
rather than doing everything outside of the type system. This is a
step closer to what we would really do, if we go in this
direction. Put it behind the new -frontend flag
-enable-infer-default-arguments.

2) Only inferring a default argument from option sets and from
explicitly "nullable" parameters, as stated in the (Objective-)C API
or API notes. This eliminates a pile of spurious, non-sensical "=
nil"'s in the resulting output.

Note that there is one ugly tweak to the overloading rules to prefer
declarations with fewer defaulted arguments. This is a bad
implementation of what is probably a reasonable rule (prefer to bind
fewer default arguments), which intentionally only kicks in when we're
dealing with imported APIs that have default arguments.

Swift SVN r32078
2015-09-18 21:50:59 +00:00
Mark Lacey
7fea483078 Avoid trying to close stdout twice in sil-opt.
Running sil-opt with the new call graph printing pass (which uses
llvm::outs) was resulting in some spew about "LLVM IO Error" because we
could potentially close stdout twice.

Swift SVN r32041
2015-09-17 18:26:59 +00:00
Doug Gregor
dc820315ba Omit needless words: fake defaulted imported optional and option-set arguments.
Introduce a hack that allows us to fake importing optional and
option-set parameters as "nil" or "[]", respectively.

Swift SVN r31977
2015-09-15 22:45:47 +00:00
Erik Eckstein
f73e2e6ee9 Register SILAnalysis classes directly in the constructor of the PassManager.
This reduces some redundant code.



Swift SVN r31939
2015-09-14 21:56:15 +00:00
Roman Levenstein
4cef619c19 Revert "Verify SIL modules at the beginning and at the end of the SIL optimization pipelines, if -sil-verify-all is provided"
This reverts commit r31863, which was committed by mistake.

Swift SVN r31864
2015-09-10 22:32:36 +00:00
Roman Levenstein
141b8f814d Verify SIL modules at the beginning and at the end of the SIL optimization pipelines, if -sil-verify-all is provided
Till now, a SIL module would be only verified if an optimization has changed it. But if there were no changes, then no verification would happen and some SIL module format errors would stay unnoticed. This was happening in certain cases when reading a textual SIL module representation, which turned out to be broken, but SIL verifier wouldn't catch it.

Swift SVN r31863
2015-09-10 22:26:37 +00:00
Roman Levenstein
66e13af73e Add support for whole-module optimizations for SIL files.
To invoke the front-end on a SIL with whole-module optimizations enabled, execute:
swiftc -frontend myfile.sil

To invoke the front-end on a SIL without whole-module optimizations enabled, add a -primary-file option:
swiftc -frontend -primary-file myfile.sil

To invoke a sil-opt with whole-module optimizations enabled, use the -wmo option:
sil-opt myfile.sil -wmo

This change was need to be able to write SIL unit tests which should be compiled in the WMO mode.

Swift SVN r31862
2015-09-10 22:26:35 +00:00
Jordan Rose
bc91897806 Remove LLVM_INITIALIZE from swift-demangle.
There were dependencies missing, but it turns out it doesn't actually need
any of it.

Swift SVN r31860
2015-09-10 21:15:31 +00:00