Skip to content

Commit 52f7203

Browse files
authored
Merge pull request #39906 from artemcm/RevertBreaqkingABIChange
Revert "ABI checker: use dedicated mangled name field to diagnose mangled name changes"
2 parents 7882319 + d2b062d commit 52f7203

File tree

7 files changed

+13
-45
lines changed

7 files changed

+13
-45
lines changed

include/swift/APIDigester/ModuleAnalyzerNodes.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,13 +360,12 @@ class SDKNodeDecl: public SDKNode {
360360
Optional<uint8_t> FixedBinaryOrder;
361361
PlatformIntroVersion introVersions;
362362
StringRef ObjCName;
363-
mutable Optional<StringRef> demangledName;
363+
364364
protected:
365365
SDKNodeDecl(SDKNodeInitInfo Info, SDKNodeKind Kind);
366366
virtual ~SDKNodeDecl() = default;
367367
public:
368368
StringRef getUsr() const { return Usr; }
369-
StringRef getDemangledName() const;
370369
StringRef getLocation() const { return Location; }
371370
StringRef getModuleName() const {return ModuleName;}
372371
StringRef getHeaderName() const;

include/swift/AST/USRGeneration.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,8 @@ bool printExtensionUSR(const ExtensionDecl *ED, raw_ostream &OS);
6363
/// \returns true if it failed, false on success.
6464
bool printDeclUSR(const Decl *D, raw_ostream &OS);
6565

66-
/// Get mangled name from a USR.
67-
std::string getMangledNameFromUSR(StringRef usr);
68-
69-
/// Demangle a mangled name to a human readable name.
70-
std::string demangleMangledName(StringRef mangled);
66+
/// Demangle a mangle-name-based USR to a human readable name.
67+
std::string demangleUSR(StringRef mangled);
7168

7269
} // namespace ide
7370
} // namespace swift

lib/APIDigester/ModuleAnalyzerNodes.cpp

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -817,19 +817,6 @@ static bool hasSameParameterFlags(const SDKNodeType *Left, const SDKNodeType *Ri
817817
return true;
818818
}
819819

820-
StringRef SDKNodeDecl::getDemangledName() const {
821-
if (demangledName.hasValue()) {
822-
return *demangledName;
823-
}
824-
std::string mangled = MangledName.str();
825-
if (mangled.empty()) {
826-
mangled = getMangledNameFromUSR(Usr);
827-
}
828-
demangledName = Ctx.buffer(demangleMangledName(mangled));
829-
assert(demangledName.hasValue());
830-
return *demangledName;
831-
}
832-
833820
static bool isSDKNodeEqual(SDKContext &Ctx, const SDKNode &L, const SDKNode &R) {
834821
auto *LeftAlias = dyn_cast<SDKNodeTypeAlias>(&L);
835822
auto *RightAlias = dyn_cast<SDKNodeTypeAlias>(&R);
@@ -961,7 +948,7 @@ static bool isSDKNodeEqual(SDKContext &Ctx, const SDKNode &L, const SDKNode &R)
961948
if (Left->getFixedBinaryOrder() != Right->getFixedBinaryOrder())
962949
return false;
963950
}
964-
if (Left->getDemangledName() != Right->getDemangledName())
951+
if (Left->getUsr() != Right->getUsr())
965952
return false;
966953
LLVM_FALLTHROUGH;
967954
}
@@ -2595,10 +2582,9 @@ void swift::ide::api::SDKNodeDecl::diagnose(SDKNode *Right) {
25952582
emitDiag(Loc, diag::decl_reorder, getFixedBinaryOrder(),
25962583
RD->getFixedBinaryOrder());
25972584
}
2598-
{
2599-
// diagnose mangled name change.
2600-
auto left = getDemangledName();
2601-
auto right = RD->getDemangledName();
2585+
if (getUsr() != RD->getUsr()) {
2586+
auto left = demangleUSR(getUsr());
2587+
auto right = demangleUSR(RD->getUsr());
26022588
if (left != right) {
26032589
emitDiag(Loc, diag::demangled_name_changed, left, right);
26042590
}

lib/AST/USRGeneration.cpp

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -256,23 +256,16 @@ swift::USRGenerationRequest::evaluate(Evaluator &evaluator,
256256
return NewMangler.mangleDeclAsUSR(D, getUSRSpacePrefix());
257257
}
258258

259-
std::string ide::getMangledNameFromUSR(StringRef usr) {
260-
if (usr.startswith(getUSRSpacePrefix())) {
261-
usr = usr.substr(getUSRSpacePrefix().size());
259+
std::string ide::demangleUSR(StringRef mangled) {
260+
if (mangled.startswith(getUSRSpacePrefix())) {
261+
mangled = mangled.substr(getUSRSpacePrefix().size());
262262
}
263263
SmallString<128> buffer;
264264
buffer += "$s";
265-
buffer += usr;
266-
return buffer.str().str();
267-
}
268-
269-
std::string ide::demangleMangledName(StringRef mangled) {
265+
buffer += mangled;
266+
mangled = buffer.str();
270267
Demangler Dem;
271-
std::string result = nodeToString(Dem.demangleSymbol(mangled));
272-
if (result.empty()) {
273-
return mangled.str();
274-
}
275-
return result;
268+
return nodeToString(Dem.demangleSymbol(mangled));
276269
}
277270

278271
std::string

test/api-digester/Inputs/cake_baseline/cake.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,3 @@ open class AddingNewDesignatedInit {
232232
print(foo)
233233
}
234234
}
235-
236-
@_silgen_name("sil_name_before")
237-
public func silGenNameGiven() {}

test/api-digester/Inputs/cake_current/cake.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,3 @@ public extension Float {
252252
}
253253

254254
infix operator <==> : AssignmentPrecedence
255-
256-
@_silgen_name("sil_name_after")
257-
public func silGenNameGiven() {}

test/api-digester/Outputs/Cake-abi.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ cake: Func S1.foo5(x:y:) has mangled name changing from 'cake.S1.foo5(x: Swift.I
1010
cake: Func Somestruct2.foo1(_:) has mangled name changing from 'static cake.Somestruct2.foo1(cake.C3) -> ()' to 'static cake.NSSomestruct2.foo1(cake.C1) -> ()'
1111
cake: Func ownershipChange(_:_:) has mangled name changing from 'cake.ownershipChange(inout Swift.Int, __shared Swift.Int) -> ()' to 'cake.ownershipChange(Swift.Int, __owned Swift.Int) -> ()'
1212
cake: Func returnFunctionTypeOwnershipChange() has mangled name changing from 'cake.returnFunctionTypeOwnershipChange() -> (cake.C1) -> ()' to 'cake.returnFunctionTypeOwnershipChange() -> (__owned cake.C1) -> ()'
13-
cake: Func silGenNameGiven() has mangled name changing from 'sil_name_before' to 'sil_name_after'
1413
cake: Protocol P3 has generic signature change from <Self : cake.P1, Self : cake.P2> to <Self : cake.P1, Self : cake.P4>
1514
cake: Struct Somestruct2 has mangled name changing from 'cake.Somestruct2' to 'cake.NSSomestruct2'
1615

0 commit comments

Comments
 (0)