Skip to content

Commit 0736447

Browse files
committed
[ownership] Eliminate a few instructions where the operand ownership checker was checking type related things when it should just be checking ownership properties.
NFCI.
1 parent bf82884 commit 0736447

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
@@ -266,49 +266,29 @@ ACCEPTS_ANY_OWNERSHIP_INST(ValueMetatype)
266266
ACCEPTS_ANY_OWNERSHIP_INST(UncheckedOwnershipConversion)
267267
ACCEPTS_ANY_OWNERSHIP_INST(ValueToBridgeObject)
268268
ACCEPTS_ANY_OWNERSHIP_INST(IsEscapingClosure)
269-
#undef ACCEPTS_ANY_OWNERSHIP_INST
270-
271-
// Trivial if trivial typed, otherwise must accept owned?
272-
#define ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(USE_LIFETIME_CONSTRAINT, \
273-
INST) \
274-
OperandOwnershipKindMap OperandOwnershipKindClassifier::visit##INST##Inst( \
275-
INST##Inst *i) { \
276-
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
277-
return Map::allLive(); \
278-
}
279-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ClassMethod)
280-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ObjCMethod)
281-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ObjCSuperMethod)
282-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, SuperMethod)
283-
#undef ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE
284-
285-
// Trivial if trivial typed, otherwise must accept owned?
286-
#define ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(USE_LIFETIME_CONSTRAINT, INST) \
287-
OperandOwnershipKindMap OperandOwnershipKindClassifier::visit##INST##Inst( \
288-
INST##Inst *i) { \
289-
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
290-
return Map::allLive(); \
291-
}
292-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, BridgeObjectToWord)
293-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ClassifyBridgeObject)
294-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, CopyBlock)
295-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, OpenExistentialBox)
296-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefTailAddr)
297-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefToRawPointer)
298-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, SetDeallocating)
299-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ProjectExistentialBox)
300-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, UnmanagedRetainValue)
301-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, UnmanagedReleaseValue)
302-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, UnmanagedAutoreleaseValue)
303-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ConvertEscapeToNoEscape)
269+
ACCEPTS_ANY_OWNERSHIP_INST(ClassMethod)
270+
ACCEPTS_ANY_OWNERSHIP_INST(ObjCMethod)
271+
ACCEPTS_ANY_OWNERSHIP_INST(ObjCSuperMethod)
272+
ACCEPTS_ANY_OWNERSHIP_INST(SuperMethod)
273+
ACCEPTS_ANY_OWNERSHIP_INST(BridgeObjectToWord)
274+
ACCEPTS_ANY_OWNERSHIP_INST(ClassifyBridgeObject)
275+
ACCEPTS_ANY_OWNERSHIP_INST(CopyBlock)
276+
ACCEPTS_ANY_OWNERSHIP_INST(OpenExistentialBox)
277+
ACCEPTS_ANY_OWNERSHIP_INST(RefTailAddr)
278+
ACCEPTS_ANY_OWNERSHIP_INST(RefToRawPointer)
279+
ACCEPTS_ANY_OWNERSHIP_INST(SetDeallocating)
280+
ACCEPTS_ANY_OWNERSHIP_INST(ProjectExistentialBox)
281+
ACCEPTS_ANY_OWNERSHIP_INST(UnmanagedRetainValue)
282+
ACCEPTS_ANY_OWNERSHIP_INST(UnmanagedReleaseValue)
283+
ACCEPTS_ANY_OWNERSHIP_INST(UnmanagedAutoreleaseValue)
284+
ACCEPTS_ANY_OWNERSHIP_INST(ConvertEscapeToNoEscape)
304285
#define ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, ...) \
305-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefTo##Name) \
306-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, Name##ToRef) \
307-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, Copy##Name##Value)
308-
#define UNCHECKED_REF_STORAGE(Name, ...) \
309-
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, RefTo##Name)
286+
ACCEPTS_ANY_OWNERSHIP_INST(RefTo##Name) \
287+
ACCEPTS_ANY_OWNERSHIP_INST(Name##ToRef) \
288+
ACCEPTS_ANY_OWNERSHIP_INST(Copy##Name##Value)
289+
#define UNCHECKED_REF_STORAGE(Name, ...) ACCEPTS_ANY_OWNERSHIP_INST(RefTo##Name)
310290
#include "swift/AST/ReferenceStorage.def"
311-
#undef ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP
291+
#undef ACCEPTS_ANY_OWNERSHIP_INST
312292

313293
OperandOwnershipKindMap
314294
OperandOwnershipKindClassifier::visitForwardingInst(SILInstruction *i,

0 commit comments

Comments
 (0)