Skip to content

Commit a9ca9e2

Browse files
committed
[dsymutil] Deduplicate Swift modules by path before copying them (llvm#139342)
(cherry picked from commit 9eeae5a)
1 parent b0d6e64 commit a9ca9e2

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

llvm/test/tools/dsymutil/ARM/swiftmodule.test

+5
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#
1414
# CHECK-NOT: Skipping compiled textual Swift interface: {{.*}}/Inputs/Binary.swiftmodule
1515
# CHECK: Skipping compiled textual Swift interface: {{.*}}/Inputs/FromInterface.swiftmodule
16+
# CHECK-NOT: Skipping compiled textual Swift interface: {{.*}}/Inputs/FromInterface.swiftmodule
1617

1718
#
1819
---
@@ -26,4 +27,8 @@ objects:
2627
timestamp: 0
2728
type: 50
2829
symbols: []
30+
- filename: '../Inputs/FromInterface.swiftmodule'
31+
timestamp: 0
32+
type: 50
33+
symbols: []
2934
...

llvm/tools/dsymutil/DwarfLinkerForBinary.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/ADT/STLExtras.h"
2020
#include "llvm/ADT/SmallString.h"
2121
#include "llvm/ADT/StringRef.h"
22+
#include "llvm/ADT/StringSet.h"
2223
#include "llvm/ADT/Twine.h"
2324
#include "llvm/BinaryFormat/Dwarf.h"
2425
#include "llvm/BinaryFormat/MachO.h"
@@ -771,6 +772,7 @@ bool DwarfLinkerForBinary::linkImpl(
771772
MaxDWARFVersion = std::max(Unit.getVersion(), MaxDWARFVersion);
772773
};
773774

775+
llvm::StringSet<> SwiftModules;
774776
for (const auto &Obj : Map.objects()) {
775777
// N_AST objects (swiftmodule files) should get dumped directly into the
776778
// appropriate DWARF section.
@@ -779,6 +781,9 @@ bool DwarfLinkerForBinary::linkImpl(
779781
outs() << "DEBUG MAP OBJECT: " << Obj->getObjectFilename() << "\n";
780782

781783
StringRef File = Obj->getObjectFilename();
784+
if (!SwiftModules.insert(File).second)
785+
continue;
786+
782787
auto ErrorOrMem = MemoryBuffer::getFile(File);
783788
if (!ErrorOrMem) {
784789
reportWarning("Could not open '" + File + "'");

0 commit comments

Comments
 (0)