Skip to content

Commit f8baffa

Browse files
authored
[NFC][AutoDiff] Pass AutoDiffConfig by const ref. (#37074)
1 parent c8c2fd5 commit f8baffa

File tree

22 files changed

+53
-51
lines changed

22 files changed

+53
-51
lines changed

include/swift/AST/ASTMangler.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class ASTMangler : public Mangler {
186186
std::string
187187
mangleAutoDiffDerivativeFunction(const AbstractFunctionDecl *originalAFD,
188188
AutoDiffDerivativeFunctionKind kind,
189-
AutoDiffConfig config,
189+
const AutoDiffConfig &config,
190190
bool isVTableThunk = false);
191191

192192
/// Mangle the linear map (differential/pullback) for the given:
@@ -196,7 +196,7 @@ class ASTMangler : public Mangler {
196196
/// derivative generic signature.
197197
std::string mangleAutoDiffLinearMap(const AbstractFunctionDecl *originalAFD,
198198
AutoDiffLinearMapKind kind,
199-
AutoDiffConfig config);
199+
const AutoDiffConfig &config);
200200

201201
/// Mangle the linear map self parameter reordering thunk the given:
202202
/// - Mangled original function declaration.
@@ -210,7 +210,7 @@ class ASTMangler : public Mangler {
210210
/// Mangle a SIL differentiability witness.
211211
std::string mangleSILDifferentiabilityWitness(StringRef originalName,
212212
DifferentiabilityKind kind,
213-
AutoDiffConfig config);
213+
const AutoDiffConfig &config);
214214

215215
/// Mangle the AutoDiff generated declaration for the given:
216216
/// - Generated declaration kind: linear map struct or branching trace enum.
@@ -223,7 +223,7 @@ class ASTMangler : public Mangler {
223223
mangleAutoDiffGeneratedDeclaration(AutoDiffGeneratedDeclarationKind declKind,
224224
StringRef origFnName, unsigned bbId,
225225
AutoDiffLinearMapKind linearMapKind,
226-
AutoDiffConfig config);
226+
const AutoDiffConfig &config);
227227

228228
std::string mangleKeyPathGetterThunkHelper(const AbstractStorageDecl *property,
229229
GenericSignature signature,
@@ -453,7 +453,7 @@ class ASTMangler : public Mangler {
453453
const AbstractFunctionDecl *afd);
454454
void appendAutoDiffFunctionParts(StringRef op,
455455
Demangle::AutoDiffFunctionKind kind,
456-
AutoDiffConfig config);
456+
const AutoDiffConfig &config);
457457
void appendIndexSubset(IndexSubset *indexSubset);
458458
};
459459

include/swift/AST/Decl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5718,7 +5718,7 @@ class AbstractFunctionDecl : public GenericContext, public ValueDecl {
57185718
ArrayRef<AutoDiffConfig> getDerivativeFunctionConfigurations();
57195719

57205720
/// Add the given derivative function configuration.
5721-
void addDerivativeFunctionConfiguration(AutoDiffConfig config);
5721+
void addDerivativeFunctionConfiguration(const AutoDiffConfig &config);
57225722

57235723
protected:
57245724
// If a function has a body at all, we have either a parsed body AST node or

include/swift/SILOptimizer/Analysis/DifferentiableActivityAnalysis.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ class DifferentiableActivityInfo {
207207
IndexSubset *resultIndices) const;
208208

209209
/// Returns true if the given value is active for the given config.
210-
bool isActive(SILValue value, AutoDiffConfig config) const {
210+
bool isActive(SILValue value, const AutoDiffConfig &config) const {
211211
return isActive(value, config.parameterIndices, config.resultIndices);
212212
}
213213

@@ -217,7 +217,7 @@ class DifferentiableActivityInfo {
217217
IndexSubset *resultIndices) const;
218218

219219
/// Returns the activity of the given value for the given config.
220-
Activity getActivity(SILValue value, AutoDiffConfig config) const {
220+
Activity getActivity(SILValue value, const AutoDiffConfig &config) const {
221221
return getActivity(value, config.parameterIndices, config.resultIndices);
222222
}
223223

@@ -227,7 +227,7 @@ class DifferentiableActivityInfo {
227227
llvm::raw_ostream &s = llvm::dbgs()) const;
228228

229229
/// Prints activity information for the config of the given value.
230-
void dump(SILValue value, AutoDiffConfig config,
230+
void dump(SILValue value, const AutoDiffConfig &config,
231231
llvm::raw_ostream &s = llvm::dbgs()) const {
232232
return dump(value, config.parameterIndices, config.resultIndices, s);
233233
}
@@ -238,7 +238,8 @@ class DifferentiableActivityInfo {
238238
llvm::raw_ostream &s = llvm::dbgs()) const;
239239

240240
/// Prints all activity information for the given config.
241-
void dump(AutoDiffConfig config, llvm::raw_ostream &s = llvm::dbgs()) const {
241+
void dump(const AutoDiffConfig &config,
242+
llvm::raw_ostream &s = llvm::dbgs()) const {
242243
return dump(config.parameterIndices, config.resultIndices, s);
243244
}
244245
};

include/swift/SILOptimizer/Differentiation/Common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ void collectAllActualResultsInTypeOrder(
121121
/// - The set of minimal parameter and result indices for differentiating the
122122
/// `apply` instruction.
123123
void collectMinimalIndicesForFunctionCall(
124-
ApplyInst *ai, AutoDiffConfig parentConfig,
124+
ApplyInst *ai, const AutoDiffConfig &parentConfig,
125125
const DifferentiableActivityInfo &activityInfo,
126126
SmallVectorImpl<SILValue> &results, SmallVectorImpl<unsigned> &paramIndices,
127127
SmallVectorImpl<unsigned> &resultIndices);

include/swift/SILOptimizer/Differentiation/LinearMapInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class LinearMapInfo {
149149

150150
explicit LinearMapInfo(ADContext &context, AutoDiffLinearMapKind kind,
151151
SILFunction *original, SILFunction *derivative,
152-
AutoDiffConfig config,
152+
const AutoDiffConfig &config,
153153
const DifferentiableActivityInfo &activityInfo,
154154
SILLoopInfo *loopInfo);
155155

include/swift/SILOptimizer/Differentiation/Thunk.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ SILValue reabstractFunction(
108108
std::pair<SILFunction *, SubstitutionMap>
109109
getOrCreateSubsetParametersThunkForDerivativeFunction(
110110
SILOptFunctionBuilder &fb, SILValue origFnOperand, SILValue derivativeFn,
111-
AutoDiffDerivativeFunctionKind kind, AutoDiffConfig desiredConfig,
112-
AutoDiffConfig actualConfig, ADContext &adContext);
111+
AutoDiffDerivativeFunctionKind kind, const AutoDiffConfig &desiredConfig,
112+
const AutoDiffConfig &actualConfig, ADContext &adContext);
113113

114114
/// Get or create a derivative function parameter index subset thunk from
115115
/// `actualIndices` to `desiredIndices` for the given associated function

include/swift/SILOptimizer/Differentiation/VJPCloner.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class VJPCloner final {
4949
SILFunction &getVJP() const;
5050
SILFunction &getPullback() const;
5151
SILDifferentiabilityWitness *getWitness() const;
52-
AutoDiffConfig getConfig() const;
52+
const AutoDiffConfig &getConfig() const;
5353
DifferentiationInvoker getInvoker() const;
5454
LinearMapInfo &getPullbackInfo() const;
5555
SILLoopInfo *getLoopInfo() const;

include/swift/SILOptimizer/Utils/DifferentiationMangler.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ class DifferentiationMangler : public ASTMangler {
2929
/// Returns the mangled name for a differentiation function of the given kind.
3030
std::string mangleAutoDiffFunction(StringRef originalName,
3131
Demangle::AutoDiffFunctionKind kind,
32-
AutoDiffConfig config);
32+
const AutoDiffConfig &config);
3333
/// Returns the mangled name for a derivative function of the given kind.
3434
std::string mangleDerivativeFunction(StringRef originalName,
3535
AutoDiffDerivativeFunctionKind kind,
36-
AutoDiffConfig config);
36+
const AutoDiffConfig &config);
3737
/// Returns the mangled name for a linear map of the given kind.
3838
std::string mangleLinearMap(StringRef originalName,
3939
AutoDiffLinearMapKind kind,
40-
AutoDiffConfig config);
40+
const AutoDiffConfig &config);
4141
/// Returns the mangled name for a derivative function subset parameters
4242
/// thunk.
4343
std::string mangleDerivativeFunctionSubsetParametersThunk(

lib/AST/ASTMangler.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ std::string ASTMangler::mangleObjCAsyncCompletionHandlerImpl(
424424
std::string ASTMangler::mangleAutoDiffDerivativeFunction(
425425
const AbstractFunctionDecl *originalAFD,
426426
AutoDiffDerivativeFunctionKind kind,
427-
AutoDiffConfig config,
427+
const AutoDiffConfig &config,
428428
bool isVTableThunk) {
429429
beginManglingWithAutoDiffOriginalFunction(originalAFD);
430430
appendAutoDiffFunctionParts(
@@ -434,7 +434,7 @@ std::string ASTMangler::mangleAutoDiffDerivativeFunction(
434434

435435
std::string ASTMangler::mangleAutoDiffLinearMap(
436436
const AbstractFunctionDecl *originalAFD, AutoDiffLinearMapKind kind,
437-
AutoDiffConfig config) {
437+
const AutoDiffConfig &config) {
438438
beginManglingWithAutoDiffOriginalFunction(originalAFD);
439439
appendAutoDiffFunctionParts("TJ", getAutoDiffFunctionKind(kind), config);
440440
return finalize();
@@ -456,7 +456,7 @@ void ASTMangler::beginManglingWithAutoDiffOriginalFunction(
456456

457457
void ASTMangler::appendAutoDiffFunctionParts(StringRef op,
458458
AutoDiffFunctionKind kind,
459-
AutoDiffConfig config) {
459+
const AutoDiffConfig &config) {
460460
if (auto sig = config.derivativeGenericSignature)
461461
appendGenericSignature(sig);
462462
auto kindCode = (char)kind;
@@ -486,8 +486,8 @@ void ASTMangler::appendIndexSubset(IndexSubset *indices) {
486486
}
487487

488488
static NodePointer mangleSILDifferentiabilityWitnessAsNode(
489-
StringRef originalName, DifferentiabilityKind kind, AutoDiffConfig config,
490-
Demangler &demangler) {
489+
StringRef originalName, DifferentiabilityKind kind,
490+
const AutoDiffConfig &config, Demangler &demangler) {
491491
auto *diffWitnessNode = demangler.createNode(
492492
Node::Kind::DifferentiabilityWitness);
493493
auto origNode = demangler.demangleSymbol(originalName);
@@ -518,8 +518,9 @@ static NodePointer mangleSILDifferentiabilityWitnessAsNode(
518518
return diffWitnessNode;
519519
}
520520

521-
std::string ASTMangler::mangleSILDifferentiabilityWitness(
522-
StringRef originalName, DifferentiabilityKind kind, AutoDiffConfig config) {
521+
std::string ASTMangler::mangleSILDifferentiabilityWitness(StringRef originalName,
522+
DifferentiabilityKind kind,
523+
const AutoDiffConfig &config) {
523524
// If the original name was a mangled name, differentiability witnesses must
524525
// be mangled as node because they contain generic signatures which may repeat
525526
// entities in the original function name. Mangling as node will make sure the
@@ -545,7 +546,8 @@ std::string ASTMangler::mangleSILDifferentiabilityWitness(
545546

546547
std::string ASTMangler::mangleAutoDiffGeneratedDeclaration(
547548
AutoDiffGeneratedDeclarationKind declKind, StringRef origFnName,
548-
unsigned bbId, AutoDiffLinearMapKind linearMapKind, AutoDiffConfig config) {
549+
unsigned bbId, AutoDiffLinearMapKind linearMapKind,
550+
const AutoDiffConfig &config) {
549551
beginManglingWithoutPrefix();
550552

551553
Buffer << "_AD__" << origFnName << "_bb" + std::to_string(bbId);

lib/AST/Decl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7378,7 +7378,7 @@ AbstractFunctionDecl::getDerivativeFunctionConfigurations() {
73787378
}
73797379

73807380
void AbstractFunctionDecl::addDerivativeFunctionConfiguration(
7381-
AutoDiffConfig config) {
7381+
const AutoDiffConfig &config) {
73827382
prepareDerivativeFunctionConfigurations();
73837383
DerivativeFunctionConfigs->insert(config);
73847384
}

lib/SILGen/SILGen.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class LLVM_LIBRARY_VISIBILITY SILGenModule : public ASTVisitor<SILGenModule> {
243243
/// - The last result in the returned pullback.
244244
SILFunction *getOrCreateCustomDerivativeThunk(
245245
AbstractFunctionDecl *originalAFD, SILFunction *originalFn,
246-
SILFunction *customDerivativeFn, AutoDiffConfig config,
246+
SILFunction *customDerivativeFn, const AutoDiffConfig &config,
247247
AutoDiffDerivativeFunctionKind kind);
248248

249249
/// Get or create a derivative function vtable entry thunk for the given

lib/SILGen/SILGenPoly.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3912,7 +3912,7 @@ ManagedValue SILGenFunction::getThunkedAutoDiffLinearMap(
39123912

39133913
SILFunction *SILGenModule::getOrCreateCustomDerivativeThunk(
39143914
AbstractFunctionDecl *originalAFD, SILFunction *originalFn,
3915-
SILFunction *customDerivativeFn, AutoDiffConfig config,
3915+
SILFunction *customDerivativeFn, const AutoDiffConfig &config,
39163916
AutoDiffDerivativeFunctionKind kind) {
39173917
auto customDerivativeFnTy = customDerivativeFn->getLoweredFunctionType();
39183918
auto *thunkGenericEnv = customDerivativeFnTy->getSubstGenericSignature()

lib/SILOptimizer/Differentiation/Common.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ void collectAllActualResultsInTypeOrder(
184184
}
185185

186186
void collectMinimalIndicesForFunctionCall(
187-
ApplyInst *ai, AutoDiffConfig parentConfig,
187+
ApplyInst *ai, const AutoDiffConfig &parentConfig,
188188
const DifferentiableActivityInfo &activityInfo,
189189
SmallVectorImpl<SILValue> &results, SmallVectorImpl<unsigned> &paramIndices,
190190
SmallVectorImpl<unsigned> &resultIndices) {
@@ -452,7 +452,7 @@ findMinimalDerivativeConfiguration(AbstractFunctionDecl *original,
452452
IndexSubset *&minimalASTParameterIndices) {
453453
Optional<AutoDiffConfig> minimalConfig = None;
454454
auto configs = original->getDerivativeFunctionConfigurations();
455-
for (auto config : configs) {
455+
for (auto &config : configs) {
456456
auto *silParameterIndices = autodiff::getLoweredParameterIndices(
457457
config.parameterIndices,
458458
original->getInterfaceType()->castTo<AnyFunctionType>());

lib/SILOptimizer/Differentiation/JVPCloner.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,7 +1216,7 @@ class JVPCloner::Implementation final
12161216
///
12171217
/// Original: y = apply f(x0, x1, ...)
12181218
/// Tangent: tan[y] = apply diff_f(tan[x0], tan[x1], ...)
1219-
void emitTangentForApplyInst(ApplyInst *ai, AutoDiffConfig applyConfig,
1219+
void emitTangentForApplyInst(ApplyInst *ai, const AutoDiffConfig &applyConfig,
12201220
CanSILFunctionType originalDifferentialType) {
12211221
assert(differentialInfo.shouldDifferentiateApplySite(ai));
12221222
auto *bb = ai->getParent();
@@ -1393,7 +1393,7 @@ static SubstitutionMap getSubstitutionMap(SILFunction *original,
13931393
/// and JVP generic signature.
13941394
static const DifferentiableActivityInfo &
13951395
getActivityInfo(ADContext &context, SILFunction *original,
1396-
AutoDiffConfig config, SILFunction *jvp) {
1396+
const AutoDiffConfig &config, SILFunction *jvp) {
13971397
// Get activity info of the original function.
13981398
auto &passManager = context.getPassManager();
13991399
auto *activityAnalysis =

lib/SILOptimizer/Differentiation/LinearMapInfo.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static GenericParamList *cloneGenericParameters(ASTContext &ctx,
5454

5555
LinearMapInfo::LinearMapInfo(ADContext &context, AutoDiffLinearMapKind kind,
5656
SILFunction *original, SILFunction *derivative,
57-
AutoDiffConfig config,
57+
const AutoDiffConfig &config,
5858
const DifferentiableActivityInfo &activityInfo,
5959
SILLoopInfo *loopInfo)
6060
: kind(kind), original(original), derivative(derivative),
@@ -313,8 +313,7 @@ void LinearMapInfo::addLinearMapToStruct(ADContext &context, ApplyInst *ai) {
313313
auto *results = IndexSubset::get(original->getASTContext(), numResults,
314314
activeResultIndices);
315315
// Create autodiff indices for the `apply` instruction.
316-
AutoDiffConfig
317-
applyConfig(parameters, results);
316+
AutoDiffConfig applyConfig(parameters, results);
318317

319318
// Check for non-differentiable original function type.
320319
auto checkNondifferentiableOriginalFunctionType = [&](CanSILFunctionType

lib/SILOptimizer/Differentiation/PullbackCloner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class PullbackCloner::Implementation final
149149
}
150150
DifferentiationInvoker getInvoker() const { return vjpCloner.getInvoker(); }
151151
LinearMapInfo &getPullbackInfo() const { return vjpCloner.getPullbackInfo(); }
152-
AutoDiffConfig getConfig() const { return vjpCloner.getConfig(); }
152+
const AutoDiffConfig &getConfig() const { return vjpCloner.getConfig(); }
153153
const DifferentiableActivityInfo &getActivityInfo() const {
154154
return vjpCloner.getActivityInfo();
155155
}

lib/SILOptimizer/Differentiation/Thunk.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -804,8 +804,8 @@ getOrCreateSubsetParametersThunkForLinearMap(
804804
std::pair<SILFunction *, SubstitutionMap>
805805
getOrCreateSubsetParametersThunkForDerivativeFunction(
806806
SILOptFunctionBuilder &fb, SILValue origFnOperand, SILValue derivativeFn,
807-
AutoDiffDerivativeFunctionKind kind, AutoDiffConfig desiredConfig,
808-
AutoDiffConfig actualConfig, ADContext &adContext) {
807+
AutoDiffDerivativeFunctionKind kind, const AutoDiffConfig &desiredConfig,
808+
const AutoDiffConfig &actualConfig, ADContext &adContext) {
809809
LLVM_DEBUG(getADDebugStream()
810810
<< "Getting a subset parameters thunk for derivative function "
811811
<< derivativeFn << " of the original function " << origFnOperand

lib/SILOptimizer/Differentiation/VJPCloner.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class VJPCloner::Implementation final
9494

9595
ASTContext &getASTContext() const { return vjp->getASTContext(); }
9696
SILModule &getModule() const { return vjp->getModule(); }
97-
AutoDiffConfig getConfig() const {
97+
const AutoDiffConfig &getConfig() const {
9898
return witness->getConfig();
9999
}
100100

@@ -757,7 +757,7 @@ static SubstitutionMap getSubstitutionMap(SILFunction *original,
757757
/// and VJP generic signature.
758758
static const DifferentiableActivityInfo &
759759
getActivityInfoHelper(ADContext &context, SILFunction *original,
760-
AutoDiffConfig config, SILFunction *vjp) {
760+
const AutoDiffConfig &config, SILFunction *vjp) {
761761
// Get activity info of the original function.
762762
auto &passManager = context.getPassManager();
763763
auto *activityAnalysis =
@@ -805,7 +805,7 @@ SILFunction &VJPCloner::getPullback() const { return *impl.pullback; }
805805
SILDifferentiabilityWitness *VJPCloner::getWitness() const {
806806
return impl.witness;
807807
}
808-
AutoDiffConfig VJPCloner::getConfig() const {
808+
const AutoDiffConfig &VJPCloner::getConfig() const {
809809
return impl.getConfig();
810810
}
811811
DifferentiationInvoker VJPCloner::getInvoker() const { return impl.invoker; }

lib/SILOptimizer/Mandatory/Differentiation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ static SILValue reapplyFunctionConversion(
466466
static Optional<std::pair<SILValue, AutoDiffConfig>>
467467
emitDerivativeFunctionReference(
468468
DifferentiationTransformer &transformer, SILBuilder &builder,
469-
AutoDiffConfig desiredConfig, AutoDiffDerivativeFunctionKind kind,
469+
const AutoDiffConfig &desiredConfig, AutoDiffDerivativeFunctionKind kind,
470470
SILValue original, DifferentiationInvoker invoker,
471471
SmallVectorImpl<AllocStackInst *> &newBuffersToDealloc) {
472472
ADContext &context = transformer.getContext();

lib/SILOptimizer/Utils/DifferentiationMangler.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ static NodePointer mangleGenericSignatureAsNode(GenericSignature sig,
4343

4444
static NodePointer mangleAutoDiffFunctionAsNode(
4545
StringRef originalName, Demangle::AutoDiffFunctionKind kind,
46-
AutoDiffConfig config, Demangler &demangler) {
46+
const AutoDiffConfig &config, Demangler &demangler) {
4747
assert(isMangledName(originalName));
4848
auto demangledOrig = demangler.demangleSymbol(originalName);
4949
assert(demangledOrig && "Should only be called when the original "
@@ -75,7 +75,7 @@ static NodePointer mangleAutoDiffFunctionAsNode(
7575

7676
std::string DifferentiationMangler::mangleAutoDiffFunction(
7777
StringRef originalName, Demangle::AutoDiffFunctionKind kind,
78-
AutoDiffConfig config) {
78+
const AutoDiffConfig &config) {
7979
// If the original function is mangled, mangle the tree.
8080
if (isMangledName(originalName)) {
8181
Demangler demangler;
@@ -94,15 +94,15 @@ std::string DifferentiationMangler::mangleAutoDiffFunction(
9494
// Returns the mangled name for a derivative function of the given kind.
9595
std::string DifferentiationMangler::mangleDerivativeFunction(
9696
StringRef originalName, AutoDiffDerivativeFunctionKind kind,
97-
AutoDiffConfig config) {
97+
const AutoDiffConfig &config) {
9898
return mangleAutoDiffFunction(
9999
originalName, getAutoDiffFunctionKind(kind), config);
100100
}
101101

102102
// Returns the mangled name for a derivative function of the given kind.
103103
std::string DifferentiationMangler::mangleLinearMap(
104104
StringRef originalName, AutoDiffLinearMapKind kind,
105-
AutoDiffConfig config) {
105+
const AutoDiffConfig &config) {
106106
return mangleAutoDiffFunction(
107107
originalName, getAutoDiffFunctionKind(kind), config);
108108
}

0 commit comments

Comments
 (0)