Commit Graph

776 Commits

Author SHA1 Message Date
swift_jenkins
28cce4af82 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-18 10:54:41 -07:00
Xi Ge
9988911232 Frontend: add a new action -scan-clang-dependencies to scan a PCM's dependencies
For the issue mentioned in rdar://67079780, swift-driver needs to run clang dependencies
scanner multiple times with different target triples for a Swift target. This patch adds
a new scanning action to generate the JSON file for a given clang module to accommodate
this requirement.

Resolves: rdar://problem/67269210
2020-08-17 22:02:32 -07:00
swift_jenkins
9ab003bcf9 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-14 15:14:01 -07:00
Nathan Hawes
51beab6889 Manually merge remote-tracking branch 'upstream/master' into HEAD
Conflicts:
	test/DebugInfo/modulecache.swift
2020-08-13 11:16:33 -07:00
Hamish Knight
f6976d8620 Have TBDGenDescriptor take ownership of TBDGenOptions
This is necessary for caching TBD requests.
2020-08-13 10:21:37 -07:00
Varun Gandhi
ad4aba8b98 Merge pull request #33377 from varungandhi-apple/vg-fix-module-trace-cycle
[ModuleTrace] Handle cycle detection edge case in module trace emission.
2020-08-11 23:22:39 -07:00
Varun Gandhi
0ca8458189 [NFC] Remove caching for "isOverlay" computation when emitting a trace.
Based on measurements, it seemed to save about 0.2 ms - 0.4 ms for a module
with a large number of imports from the SDK. That's insignificant compared to
the compile time for a typical module, which usually takes somewhere between
a few seconds and a few minutes.
2020-08-08 01:02:40 -07:00
Varun Gandhi
99cefe707e [ModuleTrace] Handle cycle detection edge case in module trace emission.
Fixes rdar://66512316.
2020-08-07 18:07:29 -07:00
Brent Royal-Gordon
9bc787ef5f Add a “typecheck module interface” mode 2020-08-07 16:00:15 -07:00
Nathan Hawes
607e2b8822 Manually merge remote-tracking branch 'upstream/master' into HEAD 2020-08-04 13:47:48 -07:00
Dario Rexin
0850436d9f Properly compute resource folder when linking statically
- deduplicate the logic to compute the resource folder
- install headers and module files in shared and static resource folders
- forward -static flag when calling swiftc with -print-target-info
2020-07-30 15:07:03 -07:00
Nathan Hawes
498e767765 Manually merge remote-tracking branch 'upstream/master' into merge-m-to-mr 2020-07-27 22:41:53 -07:00
Hamish Knight
81d455d701 Merge pull request #33107 from hamishknight/tbd-two 2020-07-27 17:03:05 -07:00
Nathan Hawes
e3a2059393 [master-rebranch] Fix up missing include causing build failures. 2020-07-27 12:32:52 -07:00
Nathan Hawes
b0a2230860 Manually merge remote-tracking branch 'upstream/master' into merge-in-master 2020-07-27 09:25:01 -07:00
Varun Gandhi
1ddf4ff790 [Gardening] Use consistent style for referencing notes. 2020-07-25 23:36:17 -07:00
Hamish Knight
3ae136ce7d [Frontend] Fix error detection
Seperating out TBD file generation uncovered a bug
in the frontend where we could fail to notice that
we emitted an error during the end-of-pipeline
actions and returned a zero exit code. Tweak the
logic to detect this case.
2020-07-24 15:49:08 -07:00
Varun Gandhi
497e049401 Merge pull request #32738 from varungandhi-apple/vg-fix-indirect-dep
[ModuleTrace] Track direct dependencies through #import and @_exported import
2020-07-24 14:15:01 -07:00
Varun Gandhi
7e34fb040a [ModuleTrace] More precise dependency tracking through ObjC.
We need to traverse the module dependency graph and track which modules expose
which other modules' ABIs, while making sure that we don't hit a loop while
trawling through Clang (sub)modules.

Fixes rdar://64993153.
2020-07-23 19:25:02 -07:00
Nathan Hawes
9d4ed5f39c Manually merge remote-tracking branch 'upstream/master' into manually-merge-master-to-master-rebranch 2020-07-20 16:09:55 -07:00
Varun Gandhi
986f27f771 [NFC] Separate out trace import filtering into a separate function. 2020-07-18 01:22:42 -07:00
Robert Widmann
638977454b Remove SharedTimer Infrastructure
Teach the UnifiedStatsReporter to directly construct
llvm::NamedRegionTimer for itself.
2020-07-16 17:35:50 -07:00
Robert Widmann
2198d7174c Remove -debug-time-compilation
This flag no longer does anything now that the unified statistics
reporting infrastructure exists. It is better to use
-driver-time-compilation to see a bird's eye view of timing statistics
for frontend jobs, and -stats-output-dir to see a down-and-dirty view of
everything including performance counters.
2020-07-16 17:35:50 -07:00
Hamish Knight
9b2bcd13f9 [TBDGen] Return a vector of symbols instead of set
A couple of clients are iterating over the result,
so switch to a vector to ensure we don't
accidentally introduce any non-determinism.

(cherry picked from commit 56929fdaaa)
2020-07-15 18:41:57 -07:00
Hamish Knight
4daeb4fa3a Sink linker directive computation into IRGen
With an inverted pipeline, IRGen needs to be able
to compute the linker directives itself, so sink
it down such that it can be computed by the
`IRGenDescriptor`.

(cherry picked from commit c0a2ea7d0e)
2020-07-15 18:41:52 -07:00
Hamish Knight
e284d7e8e5 [TBDGen] Make enumeratePublicSymbols more functional
Instead of taking an out parameter, have it return
the set directly. Also coalesce the two overloads
into a single overload that takes a
`TBDGenDescriptor`.

(cherry picked from commit 0e97ecedd6)
2020-07-15 18:41:42 -07:00
Hamish Knight
f9d70661dd [IRGen] Hash compiler version instead of lang version
The LLVM passes we apply don't depend on the language
version, only the compiler version.
2020-07-15 16:46:41 -07:00
Hamish Knight
45f11c8615 [IRGen] Allow IRGenDescriptor to hold a FileUnit
This will allow it to better interact with the
SILGen descriptor.
2020-07-15 16:46:41 -07:00
Hamish Knight
c354b0faa1 [TBDGen] Return a vector of symbols instead of set
A couple of clients are iterating over the result,
so switch to a vector to ensure we don't
accidentally introduce any non-determinism.
2020-07-13 20:42:54 -07:00
Hamish Knight
db7fea4665 Sink linker directive computation into IRGen
With an inverted pipeline, IRGen needs to be able
to compute the linker directives itself, so sink
it down such that it can be computed by the
`IRGenDescriptor`.
2020-07-13 20:42:54 -07:00
Hamish Knight
b5f9e05255 [TBDGen] Make enumeratePublicSymbols more functional
Instead of taking an out parameter, have it return
the set directly. Also coalesce the two overloads
into a single overload that takes a
`TBDGenDescriptor`.
2020-07-13 20:42:53 -07:00
Varun Gandhi
e72629df92 Merge pull request #32771 from varungandhi-apple/vg-include-spi-deps-in-trace
Include SPI dependencies in module trace.
2020-07-10 13:48:31 -07:00
Varun Gandhi
7c366839b3 [FrontendTool] Include SPI dependencies in module trace. 2020-07-08 17:57:50 -07:00
Doug Gregor
618af0420f [Frontend] Add compatibility libraries to -print-target-info.
The driver and any other client that attempts to properly link Swift
code need to know which compatibility libraries should be linked on a
per-target basis. Vend that information as part of -print-target-info.
2020-07-07 23:57:10 -07:00
Doug Gregor
7bf676d335 [Frontend] Add compiler version information to -print-target-info output.
Clients that use -print-target-info can avoid an extra frontend
invocation by using this information.
2020-07-07 22:11:19 -07:00
swift_jenkins
465eae8559 Merge remote-tracking branch 'origin/master' into master-next 2020-06-30 08:58:09 -07:00
Hamish Knight
553dadd87e [Frontend] dumpAPI at the end of the pipeline
This allows us to remove another condition that
was previously preventing the ASTContext from being
freed before LLVM.
2020-06-29 15:26:28 -07:00
Hamish Knight
4ca67327fe [Frontend] NFC: Move dumpAPI up a bit 2020-06-29 15:26:27 -07:00
Hamish Knight
958bf8e3fd [Frontend] Move dependency verifier to end of pipeline
Allow the verification of dependencies before LLVM,
allowing the freeing of the ASTContext.
2020-06-29 15:26:27 -07:00
Hamish Knight
12ae72c808 [Frontend] Move mangling stats to end of pipeline 2020-06-29 15:26:27 -07:00
Hamish Knight
7bc5440d17 [Frontend] Internalize createDependencyTracker
Expand the FrontendOptions to allow the enabling
of the dependency tracker for non-system
dependencies, and switch the previous clients of
`createDependencyTracker` over to using this
option. This ensures that the dependency tracker
is now set only during `CompilerInstance::setup`.
2020-06-29 15:26:26 -07:00
Hamish Knight
bddcda6333 [Frontend] Factor out setupDependencyTrackerIfNeeded
And call from `CompilerInstance::setup`.
2020-06-29 15:26:26 -07:00
swift_jenkins
6bea8ff31e Merge remote-tracking branch 'origin/master' into master-next 2020-06-25 00:19:28 -07:00
Doug Gregor
46f9f2147c [Frontend] Add --version as a frontend flag.
The new driver will defer to the frontend to print version information,
rather than embedded the version information itself.
2020-06-24 21:35:35 -07:00
swift_jenkins
a9e0eef729 Merge remote-tracking branch 'origin/master' into master-next 2020-06-18 12:58:30 -07:00
Hamish Knight
61a9a0d0f5 Merge pull request #32403 from hamishknight/over-and-out 2020-06-18 12:52:32 -07:00
Hamish Knight
b0bb723181 [Frontend] Handle errors from performEndOfPipelineActions
The use of `SWIFT_DEFER` previously meant that we
may return `false` from `performCompile` even if
an error was produced from
`performEndOfPipelineActions`.

To remedy this, introduce a lambda that both calls
`performEndOfPipelineActions`, and checks to see
if there was an error. Then, enforce that all exit
paths call this lambda.
2020-06-18 08:58:30 -07:00
Hamish Knight
63c8044f26 [Frontend] Move more outputs to end of pipeline
Move both the loaded module trace output and
"additional whole module outputs" to the end of
the pipeline, ensuring to preserve the behaviour
where we skip them if we encountered an error.
2020-06-18 08:58:29 -07:00
Hamish Knight
1e8f24a1e2 [Frontend] Move parsing outputs to end of pipeline 2020-06-18 08:58:29 -07:00
Hamish Knight
6ed0a87d43 [Frontend] Move .d generation to end of pipeline 2020-06-18 08:58:29 -07:00