@@ -462,10 +462,12 @@ class FunctionTypeRef final : public TypeRef {
462462 const TypeRef *Result;
463463 FunctionTypeFlags Flags;
464464 FunctionMetadataDifferentiabilityKind DifferentiabilityKind;
465+ const TypeRef *GlobalActor;
465466
466467 static TypeRefID Profile (const std::vector<Param> &Parameters,
467468 const TypeRef *Result, FunctionTypeFlags Flags,
468- FunctionMetadataDifferentiabilityKind DiffKind) {
469+ FunctionMetadataDifferentiabilityKind DiffKind,
470+ const TypeRef *GlobalActor) {
469471 TypeRefID ID;
470472 for (const auto &Param : Parameters) {
471473 ID.addString (Param.getLabel ().str ());
@@ -475,21 +477,27 @@ class FunctionTypeRef final : public TypeRef {
475477 ID.addPointer (Result);
476478 ID.addInteger (static_cast <uint64_t >(Flags.getIntValue ()));
477479 ID.addInteger (static_cast <uint64_t >(DiffKind.getIntValue ()));
480+ ID.addPointer (GlobalActor);
481+
478482 return ID;
479483 }
480484
481485public:
482486 FunctionTypeRef (std::vector<Param> Params, const TypeRef *Result,
483487 FunctionTypeFlags Flags,
484- FunctionMetadataDifferentiabilityKind DiffKind)
488+ FunctionMetadataDifferentiabilityKind DiffKind,
489+ const TypeRef *GlobalActor)
485490 : TypeRef(TypeRefKind::Function), Parameters(Params), Result(Result),
486- Flags (Flags), DifferentiabilityKind(DiffKind) {}
491+ Flags (Flags), DifferentiabilityKind(DiffKind),
492+ GlobalActor(GlobalActor) {}
487493
488494 template <typename Allocator>
489495 static const FunctionTypeRef *create (
490496 Allocator &A, std::vector<Param> Params, const TypeRef *Result,
491- FunctionTypeFlags Flags, FunctionMetadataDifferentiabilityKind DiffKind) {
492- FIND_OR_CREATE_TYPEREF (A, FunctionTypeRef, Params, Result, Flags, DiffKind);
497+ FunctionTypeFlags Flags, FunctionMetadataDifferentiabilityKind DiffKind,
498+ const TypeRef *GlobalActor) {
499+ FIND_OR_CREATE_TYPEREF (
500+ A, FunctionTypeRef, Params, Result, Flags, DiffKind, GlobalActor);
493501 }
494502
495503 const std::vector<Param> &getParameters () const { return Parameters; };
@@ -506,6 +514,10 @@ class FunctionTypeRef final : public TypeRef {
506514 return DifferentiabilityKind;
507515 }
508516
517+ const TypeRef *getGlobalActor () const {
518+ return GlobalActor;
519+ }
520+
509521 static bool classof (const TypeRef *TR) {
510522 return TR->getKind () == TypeRefKind::Function;
511523 }
0 commit comments