mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Summary: The following two invocations of `swiftc` behave differently, despite their only difference being the `-g` option: ``` swiftc foo.swift bar.o baz.swiftmodule -o foo swiftc -g foo.swift bar.o baz.swiftmodule -o foo ``` The first invocation compiles `foo.swift`, links it with `bar.o`, and passes the AST information from `baz.swiftmodule` to the linker. The second invocation results in the following error: ``` <unknown>:0: error: cannot load module 'baz' as 'foo' ``` The source of the problem is that the driver determines whether to generate a module based on the debug info level that has been requested, and merges all .swiftmodule inputs if a module is being generated. Modify this behavior to instead pass .swiftmodule inputs directly to the linker if our output is to be linked. This results in both the `swiftc` and the `swiftc -g` invocations above succeeding. Test Plan: 1. `utils/build-script --test` passes. 2. After cloning https://github.com/modocache/SR-2660 and modifying its `build-driver.sh` to point at the local Swift source build directory, running `build-driver.sh` succeeds, and lldb is able to print descriptions with accurate debug info.
87 KiB
87 KiB