Skip to content

Commit a0c4fa3

Browse files
authored
Merge pull request #1930 from slavapestov/sil-module-change
[Swift] Update for SILModule API change apple-llvm-split-commit: 86d11a0b2ab34ee5670cae4fc71a3f13476ec900 apple-llvm-split-dir: lldb/
2 parents 24581ea + 710b5e5 commit a0c4fa3

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

lldb/include/lldb/Symbol/SwiftASTContext.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ namespace serialization {
5151
struct ValidationInfo;
5252
class ExtendedValidationInfo;
5353
}
54+
namespace Lowering {
55+
class TypeConverter;
56+
}
5457
}
5558

5659
class DWARFASTParser;
@@ -768,6 +771,8 @@ class SwiftASTContext : public TypeSystem {
768771

769772
swift::ModuleDecl *GetScratchModule();
770773

774+
swift::Lowering::TypeConverter *GetSILTypes();
775+
771776
swift::SILModule *GetSILModule();
772777

773778
swift::MemoryBufferSerializedModuleLoader *GetMemoryBufferModuleLoader();
@@ -808,6 +813,7 @@ class SwiftASTContext : public TypeSystem {
808813
/// should be printed by Process::PrintWarningCantLoadSwift().
809814
std::vector<std::string> m_module_import_warnings;
810815
swift::ModuleDecl *m_scratch_module = nullptr;
816+
std::unique_ptr<swift::Lowering::TypeConverter> m_sil_types_ap;
811817
std::unique_ptr<swift::SILModule> m_sil_module_ap;
812818
/// Owned by the AST.
813819
swift::MemoryBufferSerializedModuleLoader *m_memory_buffer_module_loader =

lldb/source/Plugins/ExpressionParser/Swift/SwiftExpressionParser.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
#include "swift/SIL/SILDebuggerClient.h"
7272
#include "swift/SIL/SILFunction.h"
7373
#include "swift/SIL/SILModule.h"
74+
#include "swift/SIL/TypeLowering.h"
7475
#include "swift/SILOptimizer/PassManager/Passes.h"
7576
#include "swift/Serialization/SerializedModuleLoader.h"
7677
#include "swift/Subsystems.h"
@@ -1633,8 +1634,14 @@ unsigned SwiftExpressionParser::Parse(DiagnosticManager &diagnostic_manager,
16331634
variable_map[name] = *var_info;
16341635
}
16351636

1637+
// FIXME: Should share TypeConverter instances
1638+
std::unique_ptr<swift::Lowering::TypeConverter> sil_types(
1639+
new swift::Lowering::TypeConverter(
1640+
*parsed_expr->source_file.getParentModule()));
1641+
16361642
std::unique_ptr<swift::SILModule> sil_module(swift::performSILGeneration(
1637-
parsed_expr->source_file, swift_ast_ctx->GetSILOptions()));
1643+
parsed_expr->source_file, *sil_types,
1644+
swift_ast_ctx->GetSILOptions()));
16381645

16391646
if (log) {
16401647
std::string s;

lldb/source/Plugins/ExpressionParser/Swift/SwiftSILManipulator.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ swift::SILValue SwiftSILManipulator::emitLValueForVariable(
8181
return swift::SILValue();
8282

8383
swift::ASTContext &ast_ctx = m_builder.getASTContext();
84-
swift::Lowering::TypeConverter converter(m_builder.getModule());
84+
85+
// FIXME: Creating a new TypeLowering every time is wasteful.
86+
swift::Lowering::TypeConverter converter(*m_builder.getModule().getSwiftModule());
8587

8688
swift::SILLocation null_loc((swift::Decl *)nullptr);
8789
swift::SILType raw_pointer_type = swift::SILType::getRawPointerType(ast_ctx);

lldb/source/Symbol/SwiftASTContext.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4758,11 +4758,21 @@ swift::ModuleDecl *SwiftASTContext::GetScratchModule() {
47584758
return m_scratch_module;
47594759
}
47604760

4761+
swift::Lowering::TypeConverter *SwiftASTContext::GetSILTypes() {
4762+
VALID_OR_RETURN(nullptr);
4763+
4764+
if (m_sil_types_ap.get() == NULL)
4765+
m_sil_types_ap.reset(new swift::Lowering::TypeConverter(*GetScratchModule()));
4766+
4767+
return m_sil_types_ap.get();
4768+
}
4769+
47614770
swift::SILModule *SwiftASTContext::GetSILModule() {
47624771
VALID_OR_RETURN(nullptr);
47634772

47644773
if (m_sil_module_ap.get() == NULL)
47654774
m_sil_module_ap = swift::SILModule::createEmptyModule(GetScratchModule(),
4775+
*GetSILTypes(),
47664776
GetSILOptions());
47674777
return m_sil_module_ap.get();
47684778
}

0 commit comments

Comments
 (0)