Commit Graph

254 Commits

Author SHA1 Message Date
Franklin Schrans
d3e96590d9 Merge pull request #61637 from theMomax/extension-block-symbols-deactivation-flag
Make emission of extension block symbols a formal feature
2022-12-01 08:18:24 +01:00
Artem Chikin
a69ba3a03c [Autolink Extract] Filter out StringProcessing library from being linked more than once.
We cannot filter all libraries because duplicate -l flags have a semantic meaning based on their order, but filtering out just the common Swift libraries should yield a good size improvement already and is safe.
2022-11-29 15:44:29 -08:00
Erik Eckstein
ab1b343dad use new llvm::Optional API
`getValue` -> `value`
`getValueOr` -> `value_or`
`hasValue` -> `has_value`
`map` -> `transform`

The old API will be deprecated in the rebranch.
To avoid merge conflicts, use the new API already in the main branch.

rdar://102362022
2022-11-21 19:44:24 +01:00
Max Obermeier
504fe3c3a4 Make emission of extension block symbols formal feature
- add name to lib/Option/features.json
 - add flag for explicitly disabling extension block symbols feature
2022-10-19 19:13:11 +02:00
swift-ci
ea21d79285 Merge pull request #61209 from keith/ks/handle-driver-mode-when-using-new-driver
Handle --driver-mode= when using new driver
2022-09-28 12:45:15 -07:00
Keith Smiley
eed76b416e Handle --driver-mode= when using new driver
Previously the driver mode was always set based on the executable name,
ignoring any manually passed flag, now this flag is preferred if it
exists.

Fixes https://github.com/apple/swift/issues/60600
2022-09-20 13:06:24 -07:00
Max Obermeier
453fd2231b Allow for emission of swift.extension symbols for extensions to external types in swiftSymbolGraphGen (#59047)
This includes:
 - bumping the SWIFT_SYMBOLGRAPH_FORMAT_MINOR version
 - introduction of the "swift.extension" symbol and "extensionTo" relationship
 - adding support for ExtensionDecl to the Symbol class
 - adding a "typeKind" field to the symbol's extension mixin which indicates what kind
   of symbol was extended
 - intoduction of the -emit-extension-block-symbols flag, which enables the behavior
   outlined below
 - adaptions to SymbolGraphASTWalker that ensure a swift.extension symbol is emitted
   for each extension to a type that does not exist in the local symbol graph
 - adaptions to SymbolGraph and SymbolGraphASTWalker that ensure member and conformance
   relationships are correctly associated with the swift.extension symbol instead of
   the original type declaration's (extended nominal's) symbol where applicable
 - adaptions to SymbolGraphASTWalker that ensure swift.extension symbols are connected
   to their respective extended nominal's symbol using an extensionTo relationship

Testing:
- adds SymbolGraph tests that test behavior only relevant in
  -emit-extension-block-symbols mode
- adapts some SymbolGraph tests to additionally test similar behavior for
  extensions to external types in -emit-extension-block-symbols mode
- adapts some SymbolGraph tests to (additionally or exclusively) test the
  behavior with -emit-extension-block-symbols mode enabled

Bugfixes:
- fixes a bug where some conformsTo relationships implicated by the conformances
  declared on an extension to an external type were not emitted
  (see test/SymbolGraph/Relationships/ConformsTo/Indirect.swift)

Further changes:
- documents the strategy for naming and associating children declared in extensions
  to typealiases (see test/SymbolGraph/Relationships/MemberOf/Typealias.swift,
  test/SymbolGraph/Symbols/Names.swift)
2022-09-16 12:02:40 -06:00
Robert Widmann
18b79ffcfd Resolve a Layering Violation in libBasic
Basic should not be allowed to link Parse, yet it was doing so
to allow Version to provide a constructor that would conveniently
parse a StringRef. This entrypoint also emitted diagnostics, so it
pulled in libAST.

Sink the version parser entrypoint down into Parse where it belongs
and point all the clients to the right place.
2022-09-09 00:21:30 -07:00
Xi Ge
9ea86830ff ABI checker: we should also print ABI breakages when diagnostics are serialized
This ensures users can review ABI checker failures from build logs alone.

rdar://98624267
2022-08-29 13:26:17 -07:00
Artem Chikin
720098df0b Merge pull request #42619 from stevapple/driver-search
[Driver] More robust tool searching logic
2022-08-23 08:14:21 -07:00
Xi Ge
3b522c747d ABIChecker: removing the importation of SwiftOnoneSupport shouldn't be flagged as breakage
SwiftOnoneSupport is automatically imported in the debug mode. When diffing the release build with
a baseline genearted in the debug build, we may hit this false positive.
2022-08-15 12:00:48 -07:00
Xi Ge
227c2ba9a1 ABI checker: adding protocol requirement with default implementation should not be flagged as breakage
rdar://98583968
2022-08-15 11:47:33 -07:00
Ben Barham
6de34f37e5 [NFC] Revert SmallVector<T> -> SmallVector<T, N> fixes
With the change to include `SmallVector.h` directly in `LLVM.h` rather
than forward declaring in the only case it matters (ie. Clang <= 5),
these fixes are no longer needed. Since defaulted version is preferred
when there's no better choice (which is presumably the case if that's
how they were originally added), use it instead. Some uses were instead
changed to add `llvm::` so remove that too.
2022-08-05 21:25:55 -07:00
Xi Ge
2fba124779 ABIChecker: diagnose removal of deprecated symbols by default
rdar://95385661
2022-06-17 10:37:28 -07:00
Xi Ge
dfb53212d8 ABIChecker: add an option to avoid diagnosing about certain given SPI groups
rdar://92032848
2022-06-04 22:28:37 -07:00
Artem Chikin
3d30527529 [Autolink Extract] Filter out common Swift libraries from being linked more than once
A partial solution to #58380
2022-05-25 15:18:37 -07:00
Artem Chikin
3e8a115195 Revert "[Autolink Extract] Keep a set of linker flags instead of vector" 2022-05-23 16:03:09 -07:00
Artem Chikin
10a187d2ad [Autolink Extract] Keep a set of linker flags instead of vector
Otherwise we can duplicate linker flags across input binaries, which can result in very large linkerr invocation commands.

Resolves https://github.com/apple/swift/issues/58380
2022-05-20 15:18:43 -07:00
Erik Eckstein
45acb912a9 Revert "Add a mechanism to let cross-module-optimization add additional TBD symbols."
This reverts commit c55f040308.

It's not needed anymore because CMO does not introduce public symbols when a TBD file is emitted.
2022-04-29 18:22:55 +02:00
YR Chen
a1df4bad6d [Driver] More robust way of finding subcommand path 2022-04-24 15:11:46 +08:00
YR Chen
029f0bc5c0 [Driver] Fix searching for SwiftDriver on Windows 2022-04-24 15:10:14 +08:00
Josh Soref
66d267e6ff Spelling driver (#42516)
* spelling: associated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: change

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: declaration

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dependents

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: deterministically

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: embedded

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exclude

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: filesystem

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: given

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: grained

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: incrementality

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: invoke

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: locals

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: preexisting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: should

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: supplementary

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: suppress

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
2022-04-22 09:10:43 -07:00
QuietMisdreavus
66b341f2a5 allow swift-symbolgraph-extract to be called on non-swift modules (#42399)
rdar://90842354
2022-04-19 09:56:40 -06:00
Ben Barham
e52ccf4c0d [SymbolGraph] Initialize newly added IncludeClangDocs field
This was added recently but not initialized in symbolgraph-extract.
We never output Clang imported symbols from this tool, so always passing
false is fine for now.
2022-04-14 13:14:03 -07:00
Ashley Garland
8b916585e5 [Frontend] Forward intent to launch REPL to new driver
Now that the new driver no longer runs the REPL by default
when there are no arguments, the frontend needs to update
its assumption as it is still used to launch the new driver.

rdar://88595293
2022-02-17 12:22:00 -08:00
Tony Allevato
de8a724fe6 Merge pull request #39493 from allevato/fix-new-driver-response-file
Propagate response files correctly to the new driver.
2022-02-08 08:01:20 -08:00
Tony Allevato
4c298581e6 Propagate response files correctly to the new driver.
If a response file is being passed to the legacy driver
because it is too large to fit on the system's command line,
then it should also be passed when spawning the new driver.
Currently, however, the legacy driver attempts to pass the
*expanded* arguments to the new driver, which can cause the
invocation to fail, requiring the new driver to be disabled
in order to compile.

This change passes the original arguments into `run_driver`
as well as the expanded ones, so that the branch that spawns
the new driver can use the original arguments instead.
2022-02-04 15:33:40 -08:00
swift-ci
da1ab99326 Merge remote-tracking branch 'origin/main' into rebranch 2021-12-22 05:56:01 -08:00
Erik Eckstein
3540c01125 rename initializeLibSwift -> InitializeSwiftModules
and some updates in comments.
2021-12-22 11:31:52 +01:00
swift-ci
a7f9d15c2e Merge remote-tracking branch 'origin/main' into rebranch 2021-12-20 06:35:32 -08:00
Erik Eckstein
c55f040308 Add a mechanism to let cross-module-optimization add additional TBD symbols.
PublicCMOSymbols stores symbols which are made public by cross-module-optimizations.
Those symbols are primarily stored in SILModule and eventually used by TBD generation and validation.
2021-12-20 11:33:02 +01:00
swift-ci
7ff906d730 Merge remote-tracking branch 'origin/main' into rebranch 2021-12-14 04:53:37 -08:00
Alex Hoppen
63c31033fc [Frontend] Load standard libarary in CompilerInstance::setup
Instead of checking that the stdlib can be loaded in a variety of places, check it when setting up the compiler instance. This required a couple more checks to avoid loading the stdlib in cases where it’s not needed.

To be able to differentiate stdlib loading failures from other setup errors, make `CompilerInstance::setup` return an error message on failure via an inout parameter. Consume that error on the call side, replacing a previous, more generic error message, adding error handling where appropriate or ignoring the error message, depending on the context.
2021-12-13 15:32:08 +01:00
swift_jenkins
79704679c3 Merge remote-tracking branch 'origin/main' into next 2021-10-20 16:57:52 -07:00
Xi Ge
819e53e94f ABI checker: removing deprecated APIs should be considered acceptable 2021-10-20 13:16:52 -07:00
Ben Barham
624337148b [NFC] Formatting cleanup to help with next conflicts 2021-10-15 17:15:51 +10:00
swift-ci
3f8fea8508 Merge remote-tracking branch 'origin/main' into rebranch 2021-10-06 10:17:29 -07:00
swift_jenkins
49f1a834a0 Merge remote-tracking branch 'origin/main' into next 2021-10-04 18:47:58 -07:00
Meghana Gupta
f458d9b490 Fix unnecessary one-time recompile of stdlib with -enable-ossa-flag (#39516)
* Fix unnecessary one-time recompile of stdlib with -enable-ossa-flag

This includes a bit in the module format to represent if the module was
compiled with -enable-ossa-modules flag. When compiling a client module
with -enable-ossa-modules flag, all dependent modules are checked for this bit,
if not on, recompilation is triggered with -enable-ossa-modules.

* Updated tests
2021-10-04 18:46:40 -07:00
swift-ci
c51550f30e Merge remote-tracking branch 'origin/main' into rebranch 2021-09-30 15:11:41 -07:00
swift_jenkins
93ecd0d84e Merge remote-tracking branch 'origin/main' into next 2021-09-29 09:15:27 -07:00
Max Desiatov
c52f37c500 DriverTool: add support for WebAssembly autolink entries (#39502)
This change adds support for `.swift1_autolink_entries` in WebAssembly object files to `lib/DriverTool/autolink_extract_main.cpp`. This is implemented in a similar way to existing ELF autolink entries handling.
2021-09-29 16:39:34 +01:00
swift_jenkins
387692a5be Merge remote-tracking branch 'origin/main' into next 2021-08-20 09:21:08 -07:00
swift-ci
13a25aa85b Merge remote-tracking branch 'origin/main' into rebranch 2021-08-20 09:13:20 -07:00
Xi Ge
35cb97b8ad ABIChecker: minor refactoring to move code to APIDigester lib. NFC 2021-08-19 22:27:14 -07:00
swift_jenkins
b4041fd7a9 Merge remote-tracking branch 'origin/main' into next 2021-08-19 19:41:11 -07:00
swift-ci
ea513883e4 Merge remote-tracking branch 'origin/main' into rebranch 2021-08-19 19:34:03 -07:00
Xi Ge
3d8fcf20f3 ABIChecker: include import decls in the intermediate JSON file
Removing an import statement can be potentially source-breaking. We should
prepare for diagnosing such case.
2021-08-18 15:55:00 -07:00
Evan Wilde
3876dbd610 Add number of elements to overlays
This patch adds a number of stack elements to the number of overlays in
the swift_symbolgraph_extract tool. We don't get the defaults from the
llvm type on Linux so it needs to be manually specified.

I never saw the number of overlays go above zero when dumping while
running the test suite, so I don't know what a "reasonable" number looks
like here. 8 seemed like a good number at the time.
2021-08-09 14:22:55 -07:00
Arnold Schwaighofer
a202c8fc72 Fix swift_symbolgraph_extract_main.cpp SmallVector 2021-08-05 12:15:23 -07:00