Finalize Swift debug info before running Clang codegen, because it may delete

the llvm module.

rdar://128309024
This commit is contained in:
Adrian Prantl
2024-06-12 09:46:35 -07:00
parent 5dbf31a5d3
commit bba8b921ab
3 changed files with 12 additions and 24 deletions

View File

@@ -1963,12 +1963,14 @@ bool IRGenModule::finalize() {
}
emitLazyPrivateDefinitions();
// Finalize clang IR-generation.
finalizeClangCodeGen();
// Finalize Swift debug info before running Clang codegen, because it may
// delete the llvm module.
if (DebugInfo)
DebugInfo->finalize();
// Finalize clang IR-generation.
finalizeClangCodeGen();
// If that failed, report failure up and skip the final clean-up.
if (!ClangCodeGen->GetModule())
return false;

View File

@@ -5,8 +5,6 @@
// CHECK: !DICompileUnit(language: DW_LANG_Swift
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},
// CHECK-SAME: splitDebugFilename: "{{.*}}.pch"
// CHECK-SAME: dwoId:
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}}{{.*}}splitDebugFilename: "{{.*}}.pch",{{.*}}dwoId:
Foo()

View File

@@ -16,29 +16,17 @@ import OtherClangModule.SubModule
let _ = someFunc(0)
// Check for Clang module breadcrumbs.
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}Swift
// CHECK-SAME: ClangModule
// CHECK-SAME: dwoId:
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}Swift{{.*}}ClangModule{{.*}}dwoId:
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}}, {{.*}} producer: "{{.*}}Swift
// CHECK-SAME: OtherClangModule
// CHECK-SAME: dwoId:
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}}, {{.*}} producer: "{{.*}}Swift{{.*}}OtherClangModule{{.*}}dwoId:
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}clang
// CHECK-SAME: ClangModule
// CHECK-SAME: dwoId:
// CHECK: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}clang{{.*}}ClangModule{{.*}}dwoId:
// NONE: DICompileUnit({{.*}}
// NONE-NOT: DICompileUnit({{.*}}ClangModule
// REMAP: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}Swift
// REMAP-SAME: PREFIX{{/|\\\\}}{{.*}}{{/|\\\\}}ClangModule
// REMAP-SAME: dwoId:
// REMAP: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}Swift{{.*}}PREFIX{{/|\\\\}}{{.*}}{{/|\\\\}}ClangModule{{.*}}dwoId:
// REMAP: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}Swift
// REMAP-SAME: PREFIX{{/|\\\\}}{{.*}}{{/|\\\\}}OtherClangModule
// REMAP-SAME: dwoId:
// REMAP: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}Swift{{.*}}PREFIX{{/|\\\\}}{{.*}}{{/|\\\\}}OtherClangModule{{.*}}dwoId:
// REMAP: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}clang
// REMAP-SAME: PREFIX{{/|\\\\}}{{.*}}{{/|\\\\}}ClangModule
// REMAP-SAME: dwoId:
// REMAP: !DICompileUnit(language: DW_LANG_{{ObjC|C99|C11}},{{.*}} producer: "{{.*}}clang{{.*}}PREFIX{{/|\\\\}}{{.*}}{{/|\\\\}}ClangModule{{.*}}dwoId: