Commit Graph

4571 Commits

Author SHA1 Message Date
David Ungar
495aeeca3f Change enum ActionType to enum class ActionType. 2017-11-13 14:53:18 -08:00
Doug Gregor
5d5e6122f3 [GSB] Add verification of all generic signatures within a module.
Add a verification pass to ensure that all of the generic signatures in
a module are both minimal and canonical. The approach taken is quite
direct: for every (canonical) generic signature in the module, try
removing a single requirement and forming a new generic signature from
the result. If that new generic signature that provide the removed
requirement, then the original signature was not minimal.

Also canonicalize each resulting signature, to ensure that it meets the
requirements for a canonical signature.

Add a test to ensure that all of the generic signatures in the Swift
module are minimal and canonical, since they are ABI.
2017-11-07 15:20:38 -08:00
Xi Ge
6af5d3c0bf libSyntax: rename KeepTokensInSourceFile to KeepSyntaxInfoInSourceFile. 2017-11-03 18:39:01 -07:00
Arnold Schwaighofer
56a1663c98 Merge pull request #12658 from rajbarik/master
Improve Osize
2017-10-30 07:23:49 -07:00
swift-ci
dfbcccfb75 Merge pull request #12585 from anemet/save-opt-record 2017-10-27 11:09:50 -07:00
Raj Barik
c0b7cf0ff5 Expose UnrollThreshold and Inline_Benefit_reduction in the command line for automatic code size tuning 2017-10-27 10:30:23 -07:00
Adam Nemet
66085a8aef Save optimization remarks in an external YAML file
This brings the capability from clang to save remarks in an external YAML files.
YAML files can be viewed with tools like the opt-viewer.

Saving the remarks is activated with the new option -save-optimization-record.

Similarly to -emit-tbd, I've only added support for single-compile mode for now.
In this case the default filename is determined by
getOutputFilenameFromPathArgOrAsTopLevel, i.e. unless explicitly specified
with -save-optimization-record-path, the file is placed in the directory of the
main output file as <modulename>.opt.yaml.
2017-10-27 10:14:27 -07:00
Graydon Hoare
30b6fdce83 Merge pull request #12429 from graydon/named-lazy-member-loading
Named lazy member loading 1/N
2017-10-24 14:27:04 -07:00
Roman Levenstein
5047e1b475 Enable the serialization of sil_vtables by default and completely remove the -sil-serialize-vtables option
Only sil_vtables of public classes with fixed layout are serialized.
2017-10-21 11:36:12 -07:00
Roman Levenstein
f2e8e0a448 Merge pull request #12493 from swiftix/sil-serialization-before-optimizations5
Enable serialization of witness tables by default
2017-10-21 08:40:59 -07:00
Graydon Hoare
6bb5ce3d1e [NamedLazyMemberLoading] Add -enable-named-lazy-member-loading option 2017-10-20 22:48:42 -07:00
Roman Levenstein
48d9b99675 Remove -sil-serialize-witness-tables flag completely
The functionality is always enabled now and there is no need to have a dedicated flag for it.
2017-10-20 19:45:29 -07:00
Adam Nemet
9b9805420d Add optimization remarks
This allows reporting successful and unsuccessful optimizations similar to
clang/llvm.

This first patch adds support for the
options -Rpass=<pass-name-regex> -Rpass-missed=<pass-name-regex>.  These allow
reporting successful/unsuccessful optimization on the compiler output for passes
specified by the regex.  I've also added one missed and one passed remark type
to the inliner to test the infrastructure.

Clang also has the option of collecting these records in an external YAML data
file.  This will be added in a later patch.

A few notes:
* The goal is to use this facility for both user-lever "performance" warnings
and expert-level performance analysis.  There will probably be a flag in the
future differentiating the verbosity.

* The intent is match clang/llvm as much as it makes sense.  On the other hand I
did make some changes.  Unlike in llvm, the emitter is not a pass which
simplifies things.  Also the remark class hierarchy is greatly simplified since
we don't derive from DiagnosticInfo.  We also don't derive from Diagnostic to
support the streaming API for arbitrary named-value pairs.

* Currently function names are printed mangled which should be fixed.
2017-10-20 12:41:37 -07:00
Doug Gregor
29150045f9 Handle DK_Remark 2017-10-13 11:30:52 -07:00
David Ungar
7d637c856c Merge pull request #12335 from davidungar/primaryFilesMode-Inputs-rebased
NFC: First step (refactoring) towards speeding up compilation w/ >1 primary file
2017-10-10 12:55:55 -07:00
Saleem Abdulrasool
54f80d9f32 Frontend: simplify some flag logic (NFC)
Using the three parameter form of `hasFlag` makes it possible to fold
away the conditional code.  NFC.
2017-10-09 14:42:34 -07:00
David Ungar
47ee930a50 git-clang-format'ed 2017-10-08 23:56:03 -07:00
David Ungar
c1821755de NFC: First step (refactoring) towards speeding up compilation by having multiple primary files: Creates new class, FrontendInputs, to encapsulate InputFilenames, InputBuffers, and PrimaryInput, which were formerly in FrontendOptions. Add new instance variable, Inputs, to FrontendOptions in order to hold FrontendInputs.
Encapsulate uses of the variables in FrontendInputs with intention-describing functions. Move some code that sets these variables into FrontendInputs and FrontendOptions classes.

Create new FrontendInputs class to encapsulate InputFilenames, InputBuffers and PrimaryInput, which were formerly in Frontend.

Includes one change in SwiftEditor.cpp to resolve a merge conflict.
2017-10-08 10:20:37 -07:00
Roman Levenstein
5e67f755e0 Remove the -sil-serialize-all option 2017-10-04 14:20:53 -07:00
Roman Levenstein
e0d3175db4 Add a new option -sil-serialize-vtables
This option needs to be used if vtables should be serialized. The primary use-case for this option is when you build the standard library.
2017-10-02 14:34:14 -07:00
Vedant Kumar
1621facc6c [SwiftPGO] Add driver support for -profile-use=<path>
This option tells the compiler where to find a profdata file. The
information in this file enables PGO. For more information about the PGO
infrastructure, look for the -profile-generate option and for the
llvm-profdata tool [1].

[1] http://llvm.org/docs/CommandGuide/llvm-profdata.html
2017-09-26 10:52:08 -07:00
Graydon Hoare
85dda86130 Merge pull request #12071 from graydon/trace-stats-deltas
Trace stats deltas
2017-09-22 22:25:58 -07:00
David Ungar
d4cf2d4a24 Merge pull request #11656 from davidungar/addingTimers
Refactoring performSema in order to add timers
2017-09-22 20:31:06 -07:00
David Ungar
4ca60fe6d5 Back off the WholeModule change to CompilerInstance::createSILModule()
(May be needed in this form for sil-opt.)
2017-09-22 16:51:49 -07:00
Graydon Hoare
994ad7ad92 [stats] Add -trace-stats-events 2017-09-22 19:16:50 -04:00
David Ungar
097dd71ffe Simple fixes per Jordan's comments:
- Use isWholeModuleCompilation in CompilerInstance::createSILModule
- Remove some unneeded timers
- Improve the comment in CompilerInstance::parseAndCheckTypes
- Remove needless const ref to an llvm::function_ref parameter in forEachSourceFileIn
- Remove "OfFile" from "finishTypeCheckingOfFile"
2017-09-21 20:18:34 -07:00
David Ungar
edac126f93 git-clang-format 2017-09-19 17:00:04 -07:00
David Ungar
42b04a8a9b Merged checkTypesWhileParsingMain into its caller. 2017-09-19 16:57:45 -07:00
David Ungar
fef5551fdb Added consts to implicitImports refs & fixed dangling new in computeDelayedParsingCallback.
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-19 16:57:45 -07:00
David Ungar
3d2484af28 git-clang-format
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-18 14:02:50 -07:00
David Ungar
0df6ade475 Emission of error_doing_code_completion up to caller 2017-09-18 14:01:58 -07:00
David Ungar
673af9be21 Moved forEachSourceFile out of module to Frontend.cpp 2017-09-18 14:01:57 -07:00
David Ungar
4653c92e25 Renamed finishTypeCheckingMainModule to finishTypeChecking
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-18 14:01:57 -07:00
David Ungar
0787be754b Renamed finishTypeChecking to finishTypeCheckingOfSourceFile
To free up that name
2017-09-18 14:01:12 -07:00
Joe Groff
2ba8f57514 Remove staging flag for unimplemented key path components.
All the originally-planned component kinds are now implemented.
2017-09-15 11:55:35 -07:00
David Ungar
a75d0e8963 git-clang-format 2017-09-14 17:10:43 -07:00
David Ungar
83cbde8a8c Fix compilation bugs I introduced while rebasing 2017-09-14 17:08:23 -07:00
David Ungar
01c54fe13d git-clang-format 2017-09-14 16:58:06 -07:00
David Ungar
cb80010216 Jordan's comments
Use function_ref
Rename generateOutputForTheWholeModule
Constify createRELPFile
Rename typeCheckMainModule
Move shouldImportSwiftOnoneModule
Rename timer in performTypeChecking
2017-09-14 16:58:06 -07:00
David Ungar
ba536b1fc7 format 2017-09-14 16:58:06 -07:00
David Ungar
7b7c62917d Abstract forEachFileToTypeCheck
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:58:05 -07:00
David Ungar
8057dea43e Removed redundant predicate. 2017-09-14 16:56:32 -07:00
David Ungar
3839697201 format 2017-09-14 16:56:32 -07:00
David Ungar
da79632eaf Pull out parseAndCheckTypes
They were the only computations using PersistentState and DeclayedCB
2017-09-14 16:56:32 -07:00
David Ungar
7e2ae51f18 Discard redundant comment 2017-09-14 16:56:32 -07:00
David Ungar
e797092dbf Moved comment, removed & from a StringRef 2017-09-14 16:56:31 -07:00
David Ungar
51b4746271 Remove redundant early return. 2017-09-14 16:56:31 -07:00
David Ungar
37215e1bb0 Formatted 2017-09-14 16:56:31 -07:00
David Ungar
7ee32c2e09 Remove bogus comma 2017-09-14 16:56:31 -07:00
David Ungar
33aa6eb066 Change 'typeCheckEveryFileInMainModule' to 'typeCheckEveryFile'
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:56:31 -07:00