blob: 6c162438001fab19dd99e3ffd00621d8cba8812e [file] [log] [blame]
//===--- ValueOwnershipKindClassifier.h -------------------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_SIL_VALUEOWNERSHIPKINDCLASSIFIER_H
#define SWIFT_SIL_VALUEOWNERSHIPKINDCLASSIFIER_H
#include "swift/SIL/SILVisitor.h"
namespace swift {
namespace sil {
class ValueOwnershipKindClassifier
: public SILVisitor<ValueOwnershipKindClassifier, ValueOwnershipKind> {
public:
ValueOwnershipKindClassifier() = default;
~ValueOwnershipKindClassifier() = default;
ValueOwnershipKindClassifier(const ValueOwnershipKindClassifier &) = delete;
ValueOwnershipKindClassifier(ValueOwnershipKindClassifier &&) = delete;
ValueOwnershipKind visitForwardingInst(SILInstruction *I,
ArrayRef<Operand> Ops);
ValueOwnershipKind visitForwardingInst(SILInstruction *I) {
return visitForwardingInst(I, I->getAllOperands());
}
ValueOwnershipKind visitValueBase(ValueBase *V) {
llvm_unreachable("unimplemented method on ValueBaseOwnershipVisitor");
}
#define VALUE(Id, Parent) ValueOwnershipKind visit##Id(Id *ID);
#include "swift/SIL/SILNodes.def"
};
} // end namespace sil
} // end namespace swift
#endif