mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
As there are no instructions left which produce multiple result values, this is a NFC regarding the generated SIL and generated code. Although this commit is large, most changes are straightforward adoptions to the changes in the ValueBase and SILValue classes.
43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
//===--- SILUndef.h - SIL Undef Value Representation ------------*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See http://swift.org/LICENSE.txt for license information
|
|
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_SIL_UNDEF_H
|
|
#define SWIFT_SIL_UNDEF_H
|
|
|
|
#include "swift/SIL/SILValue.h"
|
|
|
|
namespace swift {
|
|
class SILModule;
|
|
|
|
class SILUndef : public ValueBase {
|
|
void operator=(const SILArgument &) = delete;
|
|
void operator delete(void *Ptr, size_t) = delete;
|
|
|
|
SILUndef(SILType Ty) : ValueBase(ValueKind::SILUndef, Ty) {}
|
|
public:
|
|
|
|
static SILUndef *get(SILType Ty, SILModule *M);
|
|
static SILUndef *get(SILType Ty, SILModule &M) { return get(Ty, &M); }
|
|
|
|
template<class OwnerTy>
|
|
static SILUndef *getSentinelValue(SILType Ty, OwnerTy Owner) { return new (*Owner) SILUndef(Ty); }
|
|
|
|
static bool classof(const ValueBase *V) {
|
|
return V->getKind() == ValueKind::SILUndef;
|
|
}
|
|
};
|
|
|
|
} // end swift namespace
|
|
|
|
#endif
|
|
|