[AutoDiff] Serialize and print @derivative and @transpose accessor kind. (#32839)

Serialize and print the optional accessor kind in `@derivative` and `@transpose`
attributes.

Resolves TF-1293.
This commit is contained in:
Dan Zheng
2020-07-12 15:04:49 -07:00
committed by GitHub
parent bfcf12bac6
commit bf47403162
8 changed files with 99 additions and 18 deletions

View File

@@ -4371,16 +4371,26 @@ llvm::Error DeclDeserializer::deserializeDeclAttributes() {
case decls_block::Derivative_DECL_ATTR: {
bool isImplicit;
uint64_t origNameId;
bool hasAccessorKind;
uint64_t rawAccessorKind;
DeclID origDeclId;
uint64_t rawDerivativeKind;
ArrayRef<uint64_t> parameters;
serialization::decls_block::DerivativeDeclAttrLayout::readRecord(
scratch, isImplicit, origNameId, origDeclId, rawDerivativeKind,
parameters);
scratch, isImplicit, origNameId, hasAccessorKind, rawAccessorKind,
origDeclId, rawDerivativeKind, parameters);
Optional<AccessorKind> accessorKind = None;
if (hasAccessorKind) {
auto maybeAccessorKind = getActualAccessorKind(rawAccessorKind);
if (!maybeAccessorKind)
MF.fatal();
accessorKind = *maybeAccessorKind;
}
DeclNameRefWithLoc origName{DeclNameRef(MF.getDeclBaseName(origNameId)),
DeclNameLoc(), None};
DeclNameLoc(), accessorKind};
auto derivativeKind =
getActualAutoDiffDerivativeFunctionKind(rawDerivativeKind);
if (!derivativeKind)