[rebranch] Get Swift almost building with stable/20250601#82243
[rebranch] Get Swift almost building with stable/20250601#82243AnthonyLatsis merged 14 commits intoswiftlang:rebranchfrom
Conversation
lib/ClangImporter/ClangImporter.cpp
Outdated
There was a problem hiding this comment.
This is probably the only change that I feel needs a review. @Xazax-hun Could you take a look?
There was a problem hiding this comment.
Took a look, apart from a nit looks good to me. But just to double check, is this helper function that we used to use gone without any replacement? Although now at least we have a diagnostic for the failure case, which is great.
There was a problem hiding this comment.
Yeah, it was refactored to accept an array of pairs. The splitting for compatibility with the old option is now done inline in the driver.
|
@swift-ci please smoke test macOS |
lib/ClangImporter/ClangImporter.cpp
Outdated
There was a problem hiding this comment.
Took a look, apart from a nit looks good to me. But just to double check, is this helper function that we used to use gone without any replacement? Although now at least we have a diagnostic for the failure case, which is great.
lib/ClangImporter/ClangImporter.cpp
Outdated
There was a problem hiding this comment.
Can we find this out rather than add a fixme? Or add an issue and point to that instead. Otherwise this will just sit here forever more 😅 CC @benlangmuir
…to... ...`clang::tooling::dependencies::DepscanPrefixMapping::configurePrefixMapper` See swiftlang/llvm-project#10723
…er,Writer}` subclasses See llvm/llvm-project#134142
…r rebranch Upstream LLVM in llvm/llvm-project#139584 changed `DiagnosticOptions` from being a referenced counted object to just be a reference, not owned by the `clang::DiagnosticEngine`. In 0981b71 (part of swiftlang#82243), the usages of the Swift repository were adapted to the new memory model, but it introduced at least one use-after-free and a potential one around the usage of Clang in the Clang Importer. This commit tries to fix the use-after-free in both cases, by returning a `unique_ptr` to the `clang::DiagnosticOptions`, which makes the lifetime of the `DiagnosticOptions` match the lifetime of the variable that uses it (normally a `CompilerInvocation`). Other cases in 0981b71 should be safe because the lifetime of the `DiagnosticOptions` do not seem to propagate beyond the scope of the functions where they live (but I am not fully sure about the one in `IDETool/CompilerInvocation.cpp` completely). This was causing compiler crashes during the test `Interop/Cxx/stdlib/unsupported-stdlib.swift` which eventually uses `createClangDriver` and tries to emit a diagnostic, which in some cases was reading the memory from `DiagnosticOptions` when it was already out of scope.
…r rebranch (#85445) Upstream LLVM in llvm/llvm-project#139584 changed `DiagnosticOptions` from being a referenced counted object to just be a reference, not owned by the `clang::DiagnosticEngine`. In 0981b71 (part of #82243), the usages of the Swift repository were adapted to the new memory model, but it introduced at least one use-after-free and a potential one around the usage of Clang in the Clang Importer. This commit tries to fix the use-after-free in both cases, by returning a `unique_ptr` to the `clang::DiagnosticOptions`, which makes the lifetime of the `DiagnosticOptions` match the lifetime of the variable that uses it (normally a `CompilerInvocation`). Other cases in 0981b71 should be safe because the lifetime of the `DiagnosticOptions` do not seem to propagate beyond the scope of the functions where they live (but I am not fully sure about the one in `IDETool/CompilerInvocation.cpp` completely). This was causing compiler crashes during the test `Interop/Cxx/stdlib/unsupported-stdlib.swift` which eventually uses `createClangDriver` and tries to emit a diagnostic, which in some cases was reading the memory from `DiagnosticOptions` when it was already out of scope.
No description provided.