Skip to content

Conversation

brentleyjones
Copy link
Collaborator

@brentleyjones brentleyjones commented Oct 14, 2021

Uses the newer -experimental-skip-non-inlinable-function-bodies-without-types which was introduced here: swiftlang/swift#34612. This should improve LLDB usage in some cases.

When using WMO, it has two downsides in Swift 5.5, both introduced by swiftlang/swift#38939:

  • The swiftmodules will have swiftdeps info embedded in them, which is only needed for incremental compilation
  • Interface hashing is enabled, which again is only needed for incremental compilation

This is because the swift compiler only expects -experimental-skip-non-inlinable-function-bodies-without-types to be used with the new -emit-module-separately incremental build. In the same vein, in order to support split modules with incremental builds, we need to use this flag (though we could choose to use this version only with incremental + split modules, if we decide it's not worth the above regressions).

@google-cla google-cla bot added the cla: yes label Oct 14, 2021
@lyft-lint-bot
Copy link

Lyft integration job started: https://buildkite.com/lyft/rules-swift/builds/71 (must be Lyft employee to view)

@brentleyjones
Copy link
Collaborator Author

I'm not sure how to make the test differ based on Xcode version used.

@keith
Copy link
Member

keith commented Oct 22, 2021

do the embedded swiftdeps include all the normal things like timestamps?

@keith
Copy link
Member

keith commented Jul 5, 2025

🙏🏻

Uses the newer `-experimental-skip-non-inlinable-function-bodies-without-types` which was introduced here: swiftlang/swift#34612. This should improve LLDB usage in some cases.

When using WMO, it has two downsides in Swift 5.5, both introduced by swiftlang/swift#38939:
- The swiftmodules will have swiftdeps info embedded in them, which is only needed for incremental compilation
- Interface hashing is enabled, which again is only needed for incremental compilation

This is because the swift compiler only expects `-experimental-skip-non-inlinable-function-bodies-without-types` to be used with the new `emit-module-separately` incremental build.
@brentleyjones brentleyjones force-pushed the bj/use-newer-split-module-flag-with-swift-5.4 branch from fc0aca0 to 53ba099 Compare September 25, 2025 21:05
@brentleyjones
Copy link
Collaborator Author

Seems like the issues I raised are still there. will need to test if it's an issue having those extra things before deciding to take this.

@brentleyjones
Copy link
Collaborator Author

If it does have issues, it seems we should only use this flavor for incremental builds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants