Skip to content

Commit c21218d

Browse files
committed
AutoDiff: Use AbstractGenericSignatureRequest instead of GenericSignatureBuilder
1 parent 5d0bfee commit c21218d

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

lib/SILOptimizer/Differentiation/Thunk.cpp

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
#include "swift/SILOptimizer/Differentiation/Common.h"
2121

2222
#include "swift/AST/AnyFunctionRef.h"
23-
#include "swift/AST/GenericSignatureBuilder.h"
2423
#include "swift/AST/Requirement.h"
2524
#include "swift/AST/SubstitutionMap.h"
25+
#include "swift/AST/TypeCheckRequests.h"
2626
#include "swift/SILOptimizer/Utils/SILOptFunctionBuilder.h"
2727
#include "swift/SILOptimizer/Utils/DifferentiationMangler.h"
2828

@@ -53,30 +53,26 @@ CanGenericSignature buildThunkSignature(SILFunction *fn, bool inheritGenericSig,
5353
}
5454

5555
auto &ctx = fn->getASTContext();
56-
GenericSignatureBuilder builder(ctx);
5756

5857
// Add the existing generic signature.
58+
GenericSignature baseGenericSig;
5959
int depth = 0;
6060
if (inheritGenericSig) {
61-
if (auto genericSig =
62-
fn->getLoweredFunctionType()->getSubstGenericSignature()) {
63-
builder.addGenericSignature(genericSig);
64-
depth = genericSig.getGenericParams().back()->getDepth() + 1;
65-
}
61+
baseGenericSig = fn->getLoweredFunctionType()->getSubstGenericSignature();
62+
if (baseGenericSig)
63+
depth = baseGenericSig.getGenericParams().back()->getDepth() + 1;
6664
}
6765

6866
// Add a new generic parameter to replace the opened existential.
6967
auto *newGenericParam = GenericTypeParamType::get(depth, 0, ctx);
70-
71-
builder.addGenericParameter(newGenericParam);
7268
Requirement newRequirement(RequirementKind::Conformance, newGenericParam,
7369
openedExistential->getOpenedExistentialType());
74-
auto source =
75-
GenericSignatureBuilder::FloatingRequirementSource::forAbstract();
76-
builder.addRequirement(newRequirement, source, nullptr);
7770

78-
auto genericSig = std::move(builder).computeGenericSignature(
79-
/*allowConcreteGenericParams=*/true);
71+
auto genericSig = evaluateOrDefault(
72+
ctx.evaluator,
73+
AbstractGenericSignatureRequest{
74+
baseGenericSig.getPointer(), { newGenericParam }, { newRequirement }},
75+
GenericSignature());
8076
genericEnv = genericSig.getGenericEnvironment();
8177

8278
newArchetype =

0 commit comments

Comments
 (0)