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
}

0 commit comments

Comments
 (0)