Commit Graph

4649 Commits

Author SHA1 Message Date
Kavon Farvardin
2b01714fba PGO: new -profile-sample-use= frontend flag
This is meant to match clang's `-fprofile-sample-use=` and accepts a
file with the same format.

rdar://135443278
2024-11-01 11:59:54 -07:00
Steven Wu
05e50da01f [CAS] Add an utility action to swift-cache-tool to print cache key
Add an utility action to print information contained in the swift
compile cache key. This is useful to figure out why cache key is
different.
2024-11-01 09:57:34 -07:00
Michael Gottesman
9fed7159e9 Merge pull request #77327 from gottesmm/pr-e17f051658ed11baef6acc72f598fd5f952c0c26
Convert IRGen based FileCheck lines to SIL based test that is platform invariant
2024-11-01 07:02:15 -07:00
Michael Gottesman
4763251427 [sil] Add the ability for the frontend to dump LoweredSIL before IRGen.
This is something that I have wanted to add for a while and have never had the
need to. I need it now to fix a bug in the bots where I am forced to use IRGen
output to test ThunkLowering which causes platform level differences to show up
in the FileCheck output. With this, I can just emit the actual lowered SIL
output and just test it at that level. There are other cases like this where we
are unable to test lowered SIL so we use IRGen creating this brittleness.
Hopefully this stops this problem from showing up in the future.

rdar://138845396
2024-11-01 03:16:55 -07:00
Meghana Gupta
1985b6cceb [NFC] Add SerializationOptions to ASTContext 2024-10-31 13:40:56 -07:00
Steven Wu
2d204f839a [ScanDependency] Teach dependency scanner to use resolved macros option
Teach dependency scanner to construct build commands using resolved
plugin search path option. This ensures the modules that do not have
access to the macro plugins will not have a different variant due to
different plugin search path.

rdar://136682810
2024-10-31 10:56:21 -07:00
Steven Wu
47b3efdb6e [Macro] Add a new macro loading option that do not involve searching
Add flag `-load-resolved-plugin` to load macro plugin, which provides a
pre-resolved entry into PluginLoader so the plugins can be loaded based
on module name without searching the file system. The option is mainly
intended to be used by explicitly module build and the flag is supplied
by dependency scanner.
2024-10-31 10:56:21 -07:00
Meghana Gupta
10aebac25b Pass -enable-ossa-modules to the generic args while inheriting options for building the interface 2024-10-31 10:55:40 -07:00
Artem Chikin
0f50693aa5 [Dependency Scanning] Parallelize Clang module queries
This change refactors the top-level dependency scanning flow to follow the following procedure:

Scan():
1. From the source target under scan, query all imported module identifiers for a *Swift* module. Leave unresolved identifiers unresolved. Proceed transitively to build a *Swift* module dependency graph.
2. Take every unresolved import identifier in the graph from (1) and, assuming that it must be a Clang module, dispatch all of them to be queried in-parallel by the scanner's worker pool.
3. Resolve bridging header Clang module dpendencies
4. Resolve all Swift overlay dependencies, relying on all Clang modules collected in (2) and (3)
5. For the source target under scan, use all of the above discovered module dependencies to resolve all cross-import overlay dependencies
2024-10-30 11:10:10 -07:00
Arnold Schwaighofer
328b8695f3 Add a SILOption to control whether we should use an aggressive form of
keeping large values indirect
2024-10-30 08:43:22 -07:00
Pavel Yaskevich
9f7f999977 [ModuleInterface] NFC: Write -interface-compiler-version directly into the output
Instead of storing it in an ignorable attributes, let's emit the
option directly into the output stream to apeace ASAN checker.
2024-10-29 09:58:17 -07:00
Pavel Yaskevich
6cb4b59489 Merge pull request #77216 from xedin/add-swift-compiler-version
[Frontend/AST] Add `-interface-compiler-version` option to frontend/modules
2024-10-28 21:06:47 -07:00
Pavel Yaskevich
84a62fc170 [Frontend/Serialization] Narrow -swift-compiler-version to -interface-compiler-version
It might be unexpected to future users that `-swift-compiler-version`
would produce a version aligned to .swiftinterface instead of one used
to build the .swiftmodule file. To avoid this possible confusion, let's
scope down the version to `-interface-compiler-version` flag and
`SWIFT_INTERFACE_COMPILER_VERSION` option in the module.
2024-10-28 13:45:27 -07:00
Ben Barham
f59b2f19e6 Merge branch 'main' into 2024-rebranch-to-main 2024-10-28 13:03:35 -07:00
Pavel Yaskevich
83995f2ae0 [Frontend] Don't set "current" compiler version for modules built from swiftinterface
If swiftinterface doesn't have `-swift-compiler-version` flag
it means that it was generated with an older version of the
Swift compiler. In such cases it would be incorrect to use
"current" compiler version because the field is intended to
indicate the compiler the swiftinterface was built with.
2024-10-25 17:05:16 -07:00
Slava Pestov
9cd5b03466 Frontend: Fix crash when -stats-output-dir used with -typecheck-module-from-interface
There's no ASTContext in this case, so we just skip initializing stats if
the driver passes this flag down to us.
2024-10-25 16:25:44 -04:00
Pavel Yaskevich
2d8751badf [Frontend] Always print current compiler version in swiftinterface flags
Swiftinterface files are always built with "current" compiler version,
which means that `-swift-compiler-version` has no effect in this context.
2024-10-25 09:53:47 -07:00
Pavel Yaskevich
39fb638516 [Frontend/AST] Make it possible to determine Swift compiler version used to build a ModuleDecl 2024-10-24 17:06:15 -07:00
Pavel Yaskevich
3bd4853626 [Frontend] Add -swift-compiler-version option to frontend, module interfaces
This option is going to be used to indicate what compiler was used
to build swift interface/module which is required for SE-0438.
2024-10-24 17:06:14 -07:00
swift-ci
9a7afe7e79 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-22 16:37:30 -07:00
Daniel Rodríguez Troitiño
4e2fbe17c3 [swiftinterface] Handle target variants the same as targets (#77156)
Based on preliminary work from @rmaz.

The compilation arguments for a swiftinterface file are preprocessed to
modify the `-target` argument to match the preferred target (which comes
from the command line) in cases in which the sub-architecture differs,
but it is compatible (for example using `arm64e` when `arm64` is being
compiled), but this was not done for the target variant, which ended up
with mismatches on the sub-architecture used by the target and target
variant, which fails an assert in assert toolchains.
2024-10-22 16:34:19 -07:00
swift-ci
122be1d465 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-17 08:37:18 -07:00
Tim Kientzle
8144323413 Merge pull request #77036 from tbkka/tbkka-verifiers-are-assertions
Enable full SIL verification with `-compiler-assertions`
2024-10-17 08:23:46 -07:00
swift-ci
ffb7eef5ab Merge remote-tracking branch 'origin/main' into rebranch 2024-10-17 05:15:25 -07:00
Arnold Schwaighofer
4e931e7638 Merge pull request #76849 from aschwaighofer/prof_thunks
IRGen: Add the ability to mark certain generic entry points in back traces
2024-10-17 05:12:06 -07:00
Tim Kientzle
c93cd2097c Enable SIL verification in a more-appropriate way 2024-10-16 14:41:50 -07:00
swift-ci
7e7788993b Merge remote-tracking branch 'origin/main' into rebranch 2024-10-16 14:36:52 -07:00
Hamish Knight
2fb72bb212 Merge pull request #76958 from rjmansfield/stats-assert-test
Add -print-zero-stats to fix ensure_no_astgen.swift in release mode
2024-10-16 22:17:30 +01:00
swift-ci
f8ea214244 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-16 13:54:13 -07:00
Steven Wu
1eab3b585b [ModuleCache] Prefer module cache passed on the command-line for checker
When setting up the ModuleInterfaceChecker, prefer using the module
cache path from command-line invocation `-module-cache-path` before
falling back to clang options.

Usually those two yield the same result, except for LLDB under direct
cc1 argument mode and explicit module build. Under such mode, the cc1
option for module cache path will be stripped since the output PCMs are
explicit passed as output. When LLDB attempted to do an implicit module
compilation for the swift interface, it will not be able to locate the
module cache path from cc1 arguments. On the other hand, the module
cache option has already be inherited by the sub-instance so it can just
directly be located there.

rdar://137610484
2024-10-16 09:14:47 -07:00
Ryan Mansfield
1001f9eb41 Add -print-zero-stats option and use it in ensure_no_astgen.swift
to verify ExportedSourceFileRequest == 0.

In release mode only non-zero stats are printed by default now.

Fix diagnostic when compiler is built without statistics support.
2024-10-15 23:11:15 -04:00
Tim Kientzle
4e91aca623 Enable full SIL verification with -compiler-assertions 2024-10-15 15:46:12 -07:00
Arnold Schwaighofer
8ebb3ec473 IRGen: Add the ability to mark certain generic entry points in back traces
Mark generic function calls with concrete parameters, generic v-table calls and
generic witness table calls where self is generic.
2024-10-14 14:06:10 -07:00
swift-ci
de1ddb9c51 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-14 13:15:13 -07:00
Rintaro Ishizaki
82914d1979 Merge pull request #76986 from rintaro/newparservalidation-on-by-default
[build-script] Enable new parser validation by default
2024-10-14 12:55:46 -07:00
Rintaro Ishizaki
4616c77a33 [Parser] Enable new parser validation only in 'assertions' builds 2024-10-14 09:02:56 -07:00
swift-ci
da852e5db9 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-14 07:16:03 -07:00
Richard Howell
3aed0950aa Merge pull request #76964 from rmaz/relres
Don't serialize relative resource dir paths in swiftmodules
2024-10-14 07:13:19 -07:00
swift-ci
8a2edbc4c5 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-11 17:05:06 -07:00
Nate Chandler
49a2831d3f [CoroutineAccessors] Old ABI may be used via flag.
Add a setting to IRGenOptions and key off of it to emit yield_once_2
coroutines using either (1) the same code-path as yield_once coroutines
or (2) a new, not-yet implemented code-path.

Add flags to set the value in both directions.  During bringup, by
default, use the existing caller-allocated ABI.
2024-10-11 08:25:02 -07:00
Nate Chandler
9e45aa5975 [NFC] Frontend: IRGen arg parsing gets LangOpts.
Among other things, facilitates using features rather than bespoke
flags.
2024-10-10 18:08:27 -07:00
Richard Howell
7aa94723a6 Don't serialize relative resource dir module paths 2024-10-10 14:36:39 -07:00
swift-ci
ec2edb72f0 Merge remote-tracking branch 'origin/main' into rebranch 2024-10-09 14:44:21 -07:00
Steven Wu
1d402d2d62 [CachedDiagnostics] Optimize in case no diagnostics is emitted
When no diagnostics is emitted from the compilation, just use an empty
object as cached diagnostics. That is an optimization for storage to
avoid emitting some supporting file to recreate source manager when not
needed, also save a bit time from emitting YAML file.

rdar://128426132
2024-10-09 09:17:01 -07:00
swift-ci
9fd863f81e Merge remote-tracking branch 'origin/main' into rebranch 2024-10-08 10:50:24 -07:00
Steven Wu
5fa12d31ae Merge pull request #76738 from cachemeifyoucan/eng/PR-136787368
[CAS] Use IncludeTreeFileList instead of full CASFS for caching
2024-10-08 10:42:24 -07:00
Steven Wu
d7d385d083 Merge pull request #76787 from cachemeifyoucan/eng/PR-132250067
[CAS] Full support for make-style dependencies file caching hit
2024-10-08 10:41:55 -07:00
swift-ci
32d286280a Merge remote-tracking branch 'origin/main' into rebranch 2024-10-02 20:36:43 -07:00
nate-chandler
963e0d9528 Merge pull request #76803 from nate-chandler/bug/20241001/1
[Driver] Pass -emit-irgen thru to frontend.
2024-10-02 20:34:16 -07:00
swift-ci
546198141a Merge remote-tracking branch 'origin/main' into rebranch 2024-10-02 19:48:09 -07:00