Skip to content

Commit 03109b4

Browse files
authored
Merge pull request swiftlang#26835 from gottesmm/pr-e21b27c8a94d8cfdb70bdd3d82fa51a9559e21ee
[ownership] Eliminate a few instructions where the operand ownership …
2 parents bdbfd7d + 0736447 commit 03109b4

File tree

1 file changed

+21
-41
lines changed

1 file changed

+21
-41
lines changed

lib/SIL/OperandOwnership.cpp

Lines changed: 21 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -264,49 +264,29 @@ ACCEPTS_ANY_OWNERSHIP_INST(ValueMetatype)
264264
ACCEPTS_ANY_OWNERSHIP_INST(UncheckedOwnershipConversion)
265265
ACCEPTS_ANY_OWNERSHIP_INST(ValueToBridgeObject)
266266
ACCEPTS_ANY_OWNERSHIP_INST(IsEscapingClosure)
267-
#undef ACCEPTS_ANY_OWNERSHIP_INST
268-
269-
// Trivial if trivial typed, otherwise must accept owned?
270-
#define ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(USE_LIFETIME_CONSTRAINT, \
271-
INST) \
272-
OperandOwnershipKindMap OperandOwnershipKindClassifier::visit##INST##Inst( \
273-
INST##Inst *i) { \
274-
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
275-
return Map::allLive(); \
276-
}
277-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ClassMethod)
278-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ObjCMethod)
279-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ObjCSuperMethod)
280-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, SuperMethod)
281-
#undef ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE
282-
283-
// Trivial if trivial typed, otherwise must accept owned?
284-
#define ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(USE_LIFETIME_CONSTRAINT, INST) \
285-
OperandOwnershipKindMap OperandOwnershipKindClassifier::visit##INST##Inst( \
286-
INST##Inst *i) { \
287-
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
288-
return Map::allLive(); \
289-
}
290-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, BridgeObjectToWord)
291-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ClassifyBridgeObject)
292-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, CopyBlock)
293-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, OpenExistentialBox)
294-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefTailAddr)
295-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefToRawPointer)
296-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, SetDeallocating)
297-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ProjectExistentialBox)
298-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, UnmanagedRetainValue)
299-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, UnmanagedReleaseValue)
300-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, UnmanagedAutoreleaseValue)
301-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ConvertEscapeToNoEscape)
267+
ACCEPTS_ANY_OWNERSHIP_INST(ClassMethod)
268+
ACCEPTS_ANY_OWNERSHIP_INST(ObjCMethod)
269+
ACCEPTS_ANY_OWNERSHIP_INST(ObjCSuperMethod)
270+
ACCEPTS_ANY_OWNERSHIP_INST(SuperMethod)
271+
ACCEPTS_ANY_OWNERSHIP_INST(BridgeObjectToWord)
272+
ACCEPTS_ANY_OWNERSHIP_INST(ClassifyBridgeObject)
273+
ACCEPTS_ANY_OWNERSHIP_INST(CopyBlock)
274+
ACCEPTS_ANY_OWNERSHIP_INST(OpenExistentialBox)
275+
ACCEPTS_ANY_OWNERSHIP_INST(RefTailAddr)
276+
ACCEPTS_ANY_OWNERSHIP_INST(RefToRawPointer)
277+
ACCEPTS_ANY_OWNERSHIP_INST(SetDeallocating)
278+
ACCEPTS_ANY_OWNERSHIP_INST(ProjectExistentialBox)
279+
ACCEPTS_ANY_OWNERSHIP_INST(UnmanagedRetainValue)
280+
ACCEPTS_ANY_OWNERSHIP_INST(UnmanagedReleaseValue)
281+
ACCEPTS_ANY_OWNERSHIP_INST(UnmanagedAutoreleaseValue)
282+
ACCEPTS_ANY_OWNERSHIP_INST(ConvertEscapeToNoEscape)
302283
#define ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, ...) \
303-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefTo##Name) \
304-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, Name##ToRef) \
305-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, Copy##Name##Value)
306-
#define UNCHECKED_REF_STORAGE(Name, ...) \
307-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefTo##Name)
284+
ACCEPTS_ANY_OWNERSHIP_INST(RefTo##Name) \
285+
ACCEPTS_ANY_OWNERSHIP_INST(Name##ToRef) \
286+
ACCEPTS_ANY_OWNERSHIP_INST(Copy##Name##Value)
287+
#define UNCHECKED_REF_STORAGE(Name, ...) ACCEPTS_ANY_OWNERSHIP_INST(RefTo##Name)
308288
#include "swift/AST/ReferenceStorage.def"
309-
#undef ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP
289+
#undef ACCEPTS_ANY_OWNERSHIP_INST
310290

311291
OperandOwnershipKindMap
312292
OperandOwnershipKindClassifier::visitForwardingInst(SILInstruction *i,

0 commit comments

Comments
 (0)