Commit Graph

4055 Commits

Author SHA1 Message Date
Jacob Bandes-Storch
49f5251c73 [QoI] offer typo correction for platform conditionals 2017-01-12 09:07:53 -08:00
Roman Levenstein
8b6a0315a4 (De)Mangling of layout constraints and requirements. 2017-01-12 00:57:06 -08:00
Sean Callanan
f57a87701a Merge pull request #6739 from scallanan/separate-stderr
Optionally separate Tasks` stderr from stdout.
2017-01-11 13:37:22 -08:00
Sean Callanan
399709ccb8 Optionally separate Tasks` stderr from stdout.
Fixes a serious problem where spurious output from xcrun breaks
swift's discovery of libarclite.

<rdar://problem/28573949>
2017-01-11 11:11:23 -08:00
Mark Lacey
5f2aeec434 Implement a new "expression too complex" metric for Swift 4 mode.
Rather than waiting until we've used a huge amount of memory, attempt to
make the choice to bail out based on the number of type bindings /
disjunction choices we visit.

I expect this will generally fail faster than the Swift 3 metric, but
will still only fail when we've got clearly exponential type checking
behvior.

Since we have multiple sources of exponential behavior today, I don't
want to make the bounds too tight. Once we fix some/most of that
behavior we can look at further tightening up the metric.
2017-01-10 22:09:11 -08:00
Bob Wilson
37e7d1c627 Merge remote-tracking branch 'origin/master' into master-next 2017-01-08 17:07:46 -08:00
practicalswift
6d1ae2a39c [gardening] 2016 → 2017 2017-01-06 16:41:22 +01:00
Bob Wilson
4ca0676a34 Merge remote-tracking branch 'origin/master' into master-next 2017-01-05 17:11:16 -08:00
Erik Eckstein
8cf641ce2b Mangling: fix crash when mangling an identifier which has a unicode char as first character and a digit as second char. 2017-01-04 16:20:09 -08:00
Joe Shajrawi
66e45979c7 Merge pull request #6451 from shajrawi/outline_enum_retain_release
[IRGen] Code Size Reduction: Outline Copy/Consume (Loadable) Enum
2017-01-03 18:39:54 -08:00
Michael Gottesman
b95a34a797 Add a new utility called reverse_range(start, end) that returns a reverse range from (start, end]. 2017-01-03 17:01:20 -08:00
Michael Gottesman
3fae2be5b6 Format doxygen comment correctly. 2017-01-03 17:01:19 -08:00
Bob Wilson
78b28243ff Merge remote-tracking branch 'origin/master' into master-next 2017-01-03 14:22:59 -08:00
Joe Shajrawi
ee5ed7bdc6 [IRGen] Code Size Reduction: Outline Copy/Consume (Loadable) Enum 2016-12-22 17:08:15 -08:00
practicalswift
44cd889924 [gardening] Fix recently introduced headers. 2016-12-21 21:19:10 +01:00
Erik Eckstein
947996ceaf Mangling: encode an optional unique ID in the function specialization mangling, instead of appending _unique_suffix 2016-12-20 13:47:48 -08:00
swift-ci
eadb93a59b Merge pull request #6241 from hughbe/msvc-limit 2016-12-20 11:38:25 -08:00
practicalswift
e027aa6282 [gardening] Use correct header. 2016-12-20 10:08:35 +01:00
Michael Gottesman
6f3c1ee658 Add a new ArrayRefView like structure called TransformArrayRef.
The difference is that TransformArrayRef stores its function as an std::function
instead of using a template parameter. This is useful in situations where one
wants to define such a type in a header on forward declared pointers. If one had
to define the function to be used as a template parameter, one would have to
define the function or provide a forward declared version
2016-12-18 01:11:14 -08:00
practicalswift
16d6dce62e [gardening] Fix recently introduced typos. 2016-12-16 21:42:09 +01:00
Jordan Rose
dab6d49596 [ClangImporter] Don't crash on empty initial selector pieces. (#6284)
Yes, ':' is a valid selector, as are '::' and ':seriously:'.

rdar://problem/28448188
2016-12-15 14:41:19 -08:00
Erik Eckstein
eb9cadb501 Mangling: add a substitution for optional types (bound generic enum Swift.Optional) 2016-12-14 16:40:13 -08:00
Erik Eckstein
4a492fc5a7 Mangling: Change new mangling for bound generic types.
Putting the nominal type in the first place increases the changes for common prefixes (for the trie).
2016-12-14 16:39:00 -08:00
Erik Eckstein
86686a5ae4 Mangling: change new prefix to _T0
This is temporary until we finally change it to _S
2016-12-14 16:39:00 -08:00
Erik Eckstein
c34c0e4bbc Mangling: Don’t hardcode the mangling prefixes in symbols selected by SELECT_MANGLING 2016-12-14 16:39:00 -08:00
Erik Eckstein
62e32a1044 Mangling: support for mangling of partial specializations 2016-12-13 11:03:21 -08:00
Bob Wilson
deddf19aae Merge remote-tracking branch 'origin/master' into master-next 2016-12-13 10:23:03 -08:00
Hugh Bellamy
eca5b3da34 Change _MSC_VER conditions to _WIN32 conditions in stubs 2016-12-13 14:15:39 +00:00
Hugh Bellamy
0bba737b54 Limit MSVC workaround to MSVC, not clang-cl 2016-12-13 00:20:37 +00:00
Saleem Abdulrasool
ac6edab22e Merge pull request #6025 from hughbe/remote-msvc
Port swift/remote to Windows and MSVC
2016-12-10 12:54:35 -08:00
Hugh Bellamy
53744b9b5a Fix errors and warnings building swift/remote on Windows using MSVC 2016-12-10 16:05:01 +00:00
Erik Eckstein
7dbab5a54e Mangling: symbol macro for objc partial apply forwarder 2016-12-09 09:05:19 -08:00
Erik Eckstein
af24045941 Mangling: correct mangling of partial apply forwarders
Plus some refactoring in the demangler
2016-12-09 09:05:18 -08:00
Erik Eckstein
d94dd580f6 Mangling: de- and re-mangling of GenericTypeParamDecl
This is also missing in the old mangling
2016-12-09 09:05:17 -08:00
Erik Eckstein
11d8207d0e Mangling: Select the correct mangling scheme for the re-mangler in the compiler 2016-12-09 09:05:15 -08:00
Joe Groff
15a2432efb Merge pull request #6135 from jckarter/use-sil-box-field-accessors-4
Mangle SILBoxTypes with their layout.
2016-12-08 21:09:31 -08:00
Joe Groff
7429ffb228 Mangle SILBoxTypes with their layout.
Use a new mangling scheme that describes the layout of compound boxes. For compatibility with reflection-based clients, continue to use the legacy mangling for single-field boxes when emitting reflection TypeRefs until we fully support reflection for the new box implementation.
2016-12-08 20:02:44 -08:00
Michael Gottesman
0bfda96ace [sil-func-extractor] Teach sil-extract to extract a list of functions and the inverse of a list of functions. Also rename to sil-func-extractor to make it clearer what it is doing.
This will allow for modules to be split from the command line using a script.

The one thing that is missing from this still is that it does not handle shared
functions in IMO a satisfactory way. Given that we are splitting a module, my
feeling that the correct way to do this is to create a public shim for the
shared function in the module that the shared function gets put in and let all
other users use that entry point.

But I need to think about this a bit more.
2016-12-08 18:29:33 -08:00
practicalswift
3e31a3ade4 [gardening] Fix typos. 2016-12-06 21:42:01 +01:00
practicalswift
cfdaf9f14a [gardening] Fix invalid Swift URLs. 2016-12-06 20:12:20 +01:00
Erik Eckstein
280f908554 Mangling: fix symbol mangling macros 2016-12-05 12:34:25 -08:00
Saleem Abdulrasool
2f21735256 adjust for SVN r286524 and SVN r287369
Groups are required for Timers after SVN r286524.  SVN r287369 requires that
timers have short names and long descriptions.  Adjust the API usage
accordingly.  Reorder some words to make some more sense as a description.
2016-12-04 19:35:30 -08:00
Bob Wilson
13da3fa8b1 Merge remote-tracking branch 'origin/master' into master-next 2016-12-04 18:16:09 -08:00
Michael Gottesman
35edd1364a [gardening] Remove unneeded implementations of none_of/count_if/count.
These are now provided upstream by LLVM.
2016-12-04 03:50:00 -08:00
Erik Eckstein
684092d7d1 Mangling: mangler, demangler and remangler classes for the new mangling scheme.
Following classes provide symbol mangling for specific purposes:
*) Mangler: the base mangler class, just providing some basic utilities
*) ASTMangler: for mangling AST declarations
*) SpecializationMangler: to be used in the optimizer for mangling specialized function names
*) IRGenMangler: mangling all kind of symbols in IRGen

All those classes are not used yet, so it’s basically a NFC.

Another change is that some demangler node types are added (either because they were missing or the new demangler needs them).
Those new nodes also need to be handled in the old demangler, but this should also be a NFC as those nodes are not created by the old demangler.

My plan is to keep the old and new mangling implementation in parallel for some time. After that we can remove the old mangler.
Currently the new implementation is scoped in the NewMangling namespace. This namespace should be renamed after the old mangler is removed.
2016-12-02 15:55:30 -08:00
Erik Eckstein
76820edda9 Mangling: support for special encoding ASCII of characters which may not appear in symbol names.
Such characters (like ‘.’) can be punycode-encoded just like non-ASCII unicode characters.
2016-12-02 15:55:30 -08:00
Erik Eckstein
97f1fac11e Mangling: refactoring: use meta-programming for value witness mangling/demangling/remangling
Also add the missing DestructiveInjectEnumTag entry.
2016-12-02 15:55:30 -08:00
Erik Eckstein
f52f3559c8 Mangling: add a dumpNode function to make it easier from the debugger to dump a node tree 2016-12-02 15:55:30 -08:00
Hugh Bellamy
56dfb08727 Port swift/basic to Windows 2016-12-02 16:57:00 +00:00
Xi Ge
7a58f00b6d [utils] Modify writeEdit() to take multiple edits instead of a single one to help preserve the correct json format. NFC 2016-12-01 12:47:09 -08:00