Skip to content

Commit 10d60d9

Browse files
committed
---
yaml --- r: 346842 b: refs/heads/master c: 50a517d h: refs/heads/master
1 parent c915695 commit 10d60d9

File tree

16 files changed

+87
-136
lines changed

16 files changed

+87
-136
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 93184c549a7ab969f877dd112a98f2a09f855807
2+
refs/heads/master: 50a517dd6ba1020af4130cf1a62d30e751024121
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/docs/ABI/Mangling.rst

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,6 @@ Types
396396
any-generic-type ::= context decl-name 'V' // nominal struct type
397397
any-generic-type ::= context decl-name 'XY' // unknown nominal type
398398
any-generic-type ::= protocol 'P' // nominal protocol type
399-
any-generic-type ::= context decl-name 'a' // typealias type (used in DWARF and USRs)
400399

401400
any-generic-type ::= standard-substitutions
402401

@@ -604,6 +603,17 @@ The number of parameters and results must match with the number of
604603
``<FUNC-REPRESENTATION>``.
605604
The ``<generic-signature>`` is used if the function is polymorphic.
606605

606+
DWARF debug info and USRs also mangle sugared types, adding the following
607+
productions:
608+
609+
::
610+
611+
any-generic-type ::= context decl-name 'a' // typealias type
612+
type ::= base-type "XSq" // sugared Optional type
613+
type ::= base-type "XSa" // sugared Array type
614+
type ::= key-type value-type "XSD" // sugared Dictionary type
615+
type ::= base-type "XSp" // sugared Paren type
616+
607617
Generics
608618
~~~~~~~~
609619

trunk/include/swift/AST/ASTDemangler.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ class ASTBuilder {
6060

6161
GenericTypeDecl *createTypeDecl(StringRef mangledName, bool &typeAlias);
6262

63-
GenericTypeDecl *createTypeDecl(const Demangle::NodePointer &node,
63+
GenericTypeDecl *createTypeDecl(NodePointer node,
6464
bool &typeAlias);
6565

66-
ProtocolDecl *createProtocolDecl(const Demangle::NodePointer &node);
66+
ProtocolDecl *createProtocolDecl(NodePointer node);
6767

6868
Type createNominalType(GenericTypeDecl *decl);
6969

@@ -138,18 +138,18 @@ class ASTBuilder {
138138
bool validateParentType(TypeDecl *decl, Type parent);
139139
CanGenericSignature demangleGenericSignature(
140140
NominalTypeDecl *nominalDecl,
141-
const Demangle::NodePointer &node);
142-
DeclContext *findDeclContext(const Demangle::NodePointer &node);
143-
ModuleDecl *findModule(const Demangle::NodePointer &node);
144-
Demangle::NodePointer findModuleNode(const Demangle::NodePointer &node);
141+
NodePointer node);
142+
DeclContext *findDeclContext(NodePointer node);
143+
ModuleDecl *findModule(NodePointer node);
144+
Demangle::NodePointer findModuleNode(NodePointer node);
145145

146146
enum class ForeignModuleKind {
147147
Imported,
148148
SynthesizedByImporter
149149
};
150150

151151
Optional<ForeignModuleKind>
152-
getForeignModuleKind(const Demangle::NodePointer &node);
152+
getForeignModuleKind(NodePointer node);
153153

154154
GenericTypeDecl *findTypeDecl(DeclContext *dc,
155155
Identifier name,

trunk/include/swift/Demangling/Demangle.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ void mangleIdentifier(const char *data, size_t length,
473473
/// Remangle a demangled parse tree.
474474
///
475475
/// This should always round-trip perfectly with demangleSymbolAsNode.
476-
std::string mangleNode(const NodePointer &root);
476+
std::string mangleNode(NodePointer root);
477477

478478
using SymbolicResolver =
479479
llvm::function_ref<Demangle::NodePointer (SymbolicReferenceKind,
@@ -483,13 +483,13 @@ using SymbolicResolver =
483483
/// symbolic references.
484484
///
485485
/// This should always round-trip perfectly with demangleSymbolAsNode.
486-
std::string mangleNode(const NodePointer &root, SymbolicResolver resolver);
486+
std::string mangleNode(NodePointer root, SymbolicResolver resolver);
487487

488488
/// Remangle in the old mangling scheme.
489489
///
490490
/// This is only used for objc-runtime names and should be removed as soon as
491491
/// we switch to the new mangling for those names as well.
492-
std::string mangleNodeOld(const NodePointer &root);
492+
std::string mangleNodeOld(NodePointer root);
493493

494494
/// Transform the node structure to a string.
495495
///

trunk/include/swift/Demangling/TypeDecoder.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ class ImplFunctionTypeFlags {
223223
/// For a mangled node that refers to an Objective-C class or protocol,
224224
/// return the class or protocol name.
225225
static inline Optional<StringRef> getObjCClassOrProtocolName(
226-
const Demangle::NodePointer &node) {
226+
NodePointer node) {
227227
if (node->getKind() != Demangle::Node::Kind::Class &&
228228
node->getKind() != Demangle::Node::Kind::Protocol)
229229
return None;
@@ -262,7 +262,7 @@ class TypeDecoder {
262262
: Builder(Builder) {}
263263

264264
/// Given a demangle tree, attempt to turn it into a type.
265-
BuiltType decodeMangledType(const Demangle::NodePointer &Node) {
265+
BuiltType decodeMangledType(NodePointer Node) {
266266
if (!Node) return BuiltType();
267267

268268
using NodeKind = Demangle::Node::Kind;
@@ -922,7 +922,7 @@ class TypeDecoder {
922922
return true;
923923
};
924924

925-
auto decodeParam = [&](const Demangle::NodePointer &paramNode)
925+
auto decodeParam = [&](NodePointer paramNode)
926926
-> Optional<FunctionParam<BuiltType>> {
927927
if (paramNode->getKind() != NodeKind::TupleElement)
928928
return None;
@@ -979,7 +979,7 @@ class TypeDecoder {
979979
template<typename BuilderType>
980980
inline typename BuilderType::BuiltType
981981
decodeMangledType(BuilderType &Builder,
982-
const Demangle::NodePointer &Node) {
982+
NodePointer Node) {
983983
return TypeDecoder<BuilderType>(Builder).decodeMangledType(Node);
984984
}
985985

trunk/include/swift/Reflection/TypeRefBuilder.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
#include <vector>
3030
#include <unordered_map>
3131

32-
class NodePointer;
33-
3432
namespace swift {
3533
namespace reflection {
3634

@@ -211,12 +209,12 @@ class TypeRefBuilder {
211209
}
212210

213211
Optional<std::string>
214-
createTypeDecl(const Demangle::NodePointer &node, bool &typeAlias) {
212+
createTypeDecl(Node *node, bool &typeAlias) {
215213
return Demangle::mangleNode(node);
216214
}
217215

218216
BuiltProtocolDecl
219-
createProtocolDecl(const Demangle::NodePointer &node) {
217+
createProtocolDecl(Node *node) {
220218
return std::make_pair(Demangle::mangleNode(node), false);
221219
}
222220

@@ -460,7 +458,7 @@ class TypeRefBuilder {
460458
Dem.setSymbolicReferenceResolver(
461459
[this, &reader](SymbolicReferenceKind kind,
462460
Directness directness,
463-
int32_t offset, const void *base) -> Demangle::NodePointer {
461+
int32_t offset, const void *base) -> Demangle::Node * {
464462
// Resolve the reference to a remote address.
465463
auto remoteAddress = getRemoteAddrOfTypeRefPointer(base);
466464
if (remoteAddress == 0)

trunk/include/swift/Remote/MetadataReader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ class MetadataReader {
255255
}
256256

257257
/// Given a demangle tree, attempt to turn it into a type.
258-
BuiltType decodeMangledType(const Demangle::NodePointer &Node) {
258+
BuiltType decodeMangledType(NodePointer Node) {
259259
return swift::Demangle::decodeMangledType(Builder, Node);
260260
}
261261

trunk/lib/AST/ASTDemangler.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ GenericTypeDecl *ASTBuilder::createTypeDecl(StringRef mangledName,
7777
}
7878

7979
ProtocolDecl *
80-
ASTBuilder::createProtocolDecl(const Demangle::NodePointer &node) {
80+
ASTBuilder::createProtocolDecl(NodePointer node) {
8181
bool typeAlias;
8282
return dyn_cast_or_null<ProtocolDecl>(
8383
createTypeDecl(node, typeAlias));
@@ -645,7 +645,7 @@ DeclContext *ASTBuilder::getNotionalDC() {
645645
}
646646

647647
GenericTypeDecl *
648-
ASTBuilder::createTypeDecl(const Demangle::NodePointer &node,
648+
ASTBuilder::createTypeDecl(NodePointer node,
649649
bool &typeAlias) {
650650
auto DC = findDeclContext(node);
651651
if (!DC)
@@ -656,14 +656,14 @@ ASTBuilder::createTypeDecl(const Demangle::NodePointer &node,
656656
}
657657

658658
ModuleDecl *
659-
ASTBuilder::findModule(const Demangle::NodePointer &node) {
659+
ASTBuilder::findModule(NodePointer node) {
660660
assert(node->getKind() == Demangle::Node::Kind::Module);
661661
const auto &moduleName = node->getText();
662662
return Ctx.getModuleByName(moduleName);
663663
}
664664

665665
Demangle::NodePointer
666-
ASTBuilder::findModuleNode(const Demangle::NodePointer &node) {
666+
ASTBuilder::findModuleNode(NodePointer node) {
667667
auto child = node;
668668
while (child->hasChildren() &&
669669
child->getKind() != Demangle::Node::Kind::Module) {
@@ -677,7 +677,7 @@ ASTBuilder::findModuleNode(const Demangle::NodePointer &node) {
677677
}
678678

679679
Optional<ASTBuilder::ForeignModuleKind>
680-
ASTBuilder::getForeignModuleKind(const Demangle::NodePointer &node) {
680+
ASTBuilder::getForeignModuleKind(NodePointer node) {
681681
if (node->getKind() == Demangle::Node::Kind::DeclContext)
682682
return getForeignModuleKind(node->getFirstChild());
683683

@@ -693,7 +693,7 @@ ASTBuilder::getForeignModuleKind(const Demangle::NodePointer &node) {
693693

694694
CanGenericSignature ASTBuilder::demangleGenericSignature(
695695
NominalTypeDecl *nominalDecl,
696-
const Demangle::NodePointer &node) {
696+
NodePointer node) {
697697
GenericSignatureBuilder builder(Ctx);
698698
builder.addGenericSignature(nominalDecl->getGenericSignature());
699699

@@ -768,7 +768,7 @@ CanGenericSignature ASTBuilder::demangleGenericSignature(
768768
}
769769

770770
DeclContext *
771-
ASTBuilder::findDeclContext(const Demangle::NodePointer &node) {
771+
ASTBuilder::findDeclContext(NodePointer node) {
772772
switch (node->getKind()) {
773773
case Demangle::Node::Kind::DeclContext:
774774
case Demangle::Node::Kind::Type:

trunk/lib/Demangling/NodePrinter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class NodePrinter {
212212
NodePointer getFirstChildOfKind(NodePointer Node, Node::Kind kind) {
213213
if (!Node)
214214
return nullptr;
215-
for (NodePointer &child : *Node) {
215+
for (NodePointer child : *Node) {
216216
if (child && child->getKind() == kind)
217217
return child;
218218
}

trunk/lib/Demangling/OldRemangler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2277,7 +2277,7 @@ void Remangler::mangleSugaredParen(Node *node) {
22772277
}
22782278

22792279
/// The top-level interface to the remangler.
2280-
std::string Demangle::mangleNodeOld(const NodePointer &node) {
2280+
std::string Demangle::mangleNodeOld(NodePointer node) {
22812281
if (!node) return "";
22822282

22832283
DemanglerPrinter printer;

trunk/lib/Demangling/Remangler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2331,15 +2331,15 @@ void Remangler::mangleSugaredParen(Node *node) {
23312331
} // anonymous namespace
23322332

23332333
/// The top-level interface to the remangler.
2334-
std::string Demangle::mangleNode(const NodePointer &node) {
2334+
std::string Demangle::mangleNode(NodePointer node) {
23352335
return mangleNode(node, [](SymbolicReferenceKind, const void *) -> NodePointer {
23362336
unreachable("should not try to mangle a symbolic reference; "
23372337
"resolve it to a non-symbolic demangling tree instead");
23382338
});
23392339
}
23402340

23412341
std::string
2342-
Demangle::mangleNode(const NodePointer &node, SymbolicResolver resolver) {
2342+
Demangle::mangleNode(NodePointer node, SymbolicResolver resolver) {
23432343
if (!node) return "";
23442344

23452345
DemanglerPrinter printer;

trunk/lib/IRGen/DebugTypeInfo.cpp

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@
2424
using namespace swift;
2525
using namespace irgen;
2626

27-
DebugTypeInfo::DebugTypeInfo(DeclContext *DC, GenericEnvironment *GE,
28-
swift::Type Ty, llvm::Type *StorageTy, Size size,
27+
DebugTypeInfo::DebugTypeInfo(swift::Type Ty, llvm::Type *StorageTy, Size size,
2928
Alignment align, bool HasDefaultAlignment)
30-
: DeclCtx(DC), GenericEnv(GE), Type(Ty.getPointer()),
31-
StorageType(StorageTy), size(size), align(align),
29+
: Type(Ty.getPointer()), StorageType(StorageTy), size(size), align(align),
3230
DefaultAlignment(HasDefaultAlignment) {
3331
assert(StorageType && "StorageType is a nullptr");
3432
assert(align.getValue() != 0);
@@ -43,9 +41,7 @@ static bool hasDefaultAlignment(swift::Type Ty) {
4341
return true;
4442
}
4543

46-
DebugTypeInfo DebugTypeInfo::getFromTypeInfo(DeclContext *DC,
47-
GenericEnvironment *GE,
48-
swift::Type Ty,
44+
DebugTypeInfo DebugTypeInfo::getFromTypeInfo(swift::Type Ty,
4945
const TypeInfo &Info) {
5046
Size size;
5147
if (Info.isFixedSize()) {
@@ -56,13 +52,11 @@ DebugTypeInfo DebugTypeInfo::getFromTypeInfo(DeclContext *DC,
5652
// encounter one.
5753
size = Size(0);
5854
}
59-
return DebugTypeInfo(DC, GE, Ty.getPointer(), Info.getStorageType(), size,
55+
return DebugTypeInfo(Ty.getPointer(), Info.getStorageType(), size,
6056
Info.getBestKnownAlignment(), hasDefaultAlignment(Ty));
6157
}
6258

63-
DebugTypeInfo DebugTypeInfo::getLocalVariable(DeclContext *DC,
64-
GenericEnvironment *GE,
65-
VarDecl *Decl, swift::Type Ty,
59+
DebugTypeInfo DebugTypeInfo::getLocalVariable(VarDecl *Decl, swift::Type Ty,
6660
const TypeInfo &Info) {
6761

6862
auto DeclType = Decl->getInterfaceType();
@@ -77,12 +71,12 @@ DebugTypeInfo DebugTypeInfo::getLocalVariable(DeclContext *DC,
7771
// the type hasn't been mucked with by an optimization pass.
7872
auto *Type = Sugared->isEqual(RealType) ? DeclType.getPointer()
7973
: RealType.getPointer();
80-
return getFromTypeInfo(DC, GE, Type, Info);
74+
return getFromTypeInfo(Type, Info);
8175
}
8276

8377
DebugTypeInfo DebugTypeInfo::getMetadata(swift::Type Ty, llvm::Type *StorageTy,
8478
Size size, Alignment align) {
85-
DebugTypeInfo DbgTy(nullptr, nullptr, Ty.getPointer(), StorageTy, size,
79+
DebugTypeInfo DbgTy(Ty.getPointer(), StorageTy, size,
8680
align, true);
8781
assert(!DbgTy.isArchetype() && "type metadata cannot contain an archetype");
8882
return DbgTy;
@@ -93,18 +87,14 @@ DebugTypeInfo DebugTypeInfo::getGlobal(SILGlobalVariable *GV,
9387
Alignment align) {
9488
// Prefer the original, potentially sugared version of the type if
9589
// the type hasn't been mucked with by an optimization pass.
96-
DeclContext *DC = nullptr;
97-
GenericEnvironment *GE = nullptr;
9890
auto LowTy = GV->getLoweredType().getASTType();
9991
auto *Type = LowTy.getPointer();
10092
if (auto *Decl = GV->getDecl()) {
101-
DC = Decl->getDeclContext();
102-
GE = DC->getGenericEnvironmentOfContext();
10393
auto DeclType = Decl->getType();
10494
if (DeclType->isEqual(LowTy))
10595
Type = DeclType.getPointer();
10696
}
107-
DebugTypeInfo DbgTy(DC, GE, Type, StorageTy, size, align,
97+
DebugTypeInfo DbgTy(Type, StorageTy, size, align,
10898
hasDefaultAlignment(Type));
10999
assert(StorageTy && "StorageType is a nullptr");
110100
assert(!DbgTy.isArchetype() &&
@@ -116,8 +106,7 @@ DebugTypeInfo DebugTypeInfo::getGlobal(SILGlobalVariable *GV,
116106
DebugTypeInfo DebugTypeInfo::getObjCClass(ClassDecl *theClass,
117107
llvm::Type *StorageType, Size size,
118108
Alignment align) {
119-
DebugTypeInfo DbgTy(nullptr, nullptr,
120-
theClass->getInterfaceType().getPointer(), StorageType,
109+
DebugTypeInfo DbgTy(theClass->getInterfaceType().getPointer(), StorageType,
121110
size, align, true);
122111
assert(!DbgTy.isArchetype() && "type of objc class cannot be an archetype");
123112
return DbgTy;

0 commit comments

Comments
 (0)