Skip to content

Commit 79689be

Browse files
committed
Change integer type mangling
Fix negative mangling
1 parent 82743d7 commit 79689be

File tree

6 files changed

+17
-9
lines changed

6 files changed

+17
-9
lines changed

docs/ABI/Mangling.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ Types
715715
type ::= 'Xe' // error or unresolved type
716716

717717
#if SWIFT_RUNTIME_VERSION >= 6.TBD
718-
type ::= '$' 'n'? NATURAL_ZERO // integer type
718+
type ::= '$' 'n'? INDEX // integer type
719719
#endif
720720

721721
bound-generic-type ::= type 'y' (type* '_')* type* retroactive-conformance* 'G' // one type-list per nesting level of type

lib/AST/ASTMangler.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,11 +1685,14 @@ void ASTMangler::appendType(Type type, GenericSignature sig,
16851685

16861686
appendOperator("$");
16871687

1688+
auto value = integer->getValue().getSExtValue();
1689+
16881690
if (integer->isNegative()) {
1689-
appendOperator("n");
1691+
appendOperator("n", Index(-value));
1692+
} else {
1693+
appendOperator("", Index(value));
16901694
}
16911695

1692-
appendOperator(integer->getDigitsText());
16931696
return;
16941697
}
16951698

lib/Demangling/Demangler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4450,11 +4450,11 @@ NodePointer Demangler::demangleIntegerType() {
44504450
switch (peekChar()) {
44514451
case 'n':
44524452
nextChar();
4453-
integer = createNode(Node::Kind::NegativeInteger, -demangleNatural());
4453+
integer = createNode(Node::Kind::NegativeInteger, -demangleIndex());
44544454
break;
44554455

44564456
default:
4457-
integer = createNode(Node::Kind::Integer, demangleNatural());
4457+
integer = createNode(Node::Kind::Integer, demangleIndex());
44584458
break;
44594459
}
44604460

lib/Demangling/Remangler.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3996,13 +3996,15 @@ mangleNonUniqueExtendedExistentialTypeShapeSymbolicReference(Node *node,
39963996
}
39973997

39983998
ManglingError Remangler::mangleInteger(Node *node, unsigned int depth) {
3999-
Buffer << "$" << node->getIndex();
3999+
Buffer << "$";
4000+
mangleIndex(node->getIndex());
40004001

40014002
return ManglingError::Success;
40024003
}
40034004

40044005
ManglingError Remangler::mangleNegativeInteger(Node *node, unsigned int depth) {
4005-
Buffer << "$n" << -node->getIndex();
4006+
Buffer << "$n";
4007+
mangleIndex(-node->getIndex());
40064008

40074009
return ManglingError::Success;
40084010
}

test/DebugInfo/value-generics.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ func genericBA<let N: Int, Element>(_: Builtin.FixedArray<N, Element>) {}
1414
// CHECK-DAG: !DICompositeType({{.*}}name: "$s4main6VectorVyxq_GD"
1515
func genericV<let N: Int, Element>(_: Vector<N, Element>) {}
1616

17-
// CHECK-DAG: !DICompositeType({{.*}}name: "Builtin.FixedArray", {{.*}}identifier: "$s$4SiBVD"
17+
// CHECK-DAG: !DICompositeType({{.*}}name: "Builtin.FixedArray", {{.*}}identifier: "$s$3_SiBVD"
1818
func concreteBA(_: Builtin.FixedArray<4, Int>) {}
1919

20-
// CHECK-DAG: !DICompositeType({{.*}}name: "$s4main6VectorVy$2SiGD"
20+
// CHECK-DAG: !DICompositeType({{.*}}name: "$s4main6VectorVy$1_SiGD"
2121
func concreteV(_: Vector<2, Int>) {}

test/Demangle/Inputs/manglings.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,3 +480,6 @@ $s2hi1SV1iSivy ---> hi.S.i.read2 : Swift.Int
480480
$s2hi1SVIetMIy_TC ---> coroutine continuation prototype for @escaping @convention(thin) @convention(method) @yield_once_2 (@unowned hi.S) -> ()
481481
$s4mainAAyyycAA1CCFTTI ---> identity thunk of main.main(main.C) -> () -> ()
482482
$s4mainAAyyycAA1CCFTTH ---> hop to main actor thunk of main.main(main.C) -> () -> ()
483+
484+
$s4main6VectorVy$1_SiG ---> main.Vector<2, Swift.Int>
485+
$s$n3_SSBV ---> Builtin.FixedArray<-4, Swift.String>

0 commit comments

Comments
 (0)