mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-12 03:32:10 +00:00
Reserve some constant values for the Swift calling convention.
Swift has a custom calling convention that also requires some new flags on arguments and one new attribute on alloca instructions. This patch does not include the implementation of that calling convention - that will be provided as part of the open-source release of Swift; this only reserves the bitcode constant values so that they are not used for other purposes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243379 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d9408bca26
commit
b25dcfd104
@ -407,7 +407,9 @@ namespace bitc {
|
|||||||
ATTR_KIND_DEREFERENCEABLE_OR_NULL = 42,
|
ATTR_KIND_DEREFERENCEABLE_OR_NULL = 42,
|
||||||
ATTR_KIND_CONVERGENT = 43,
|
ATTR_KIND_CONVERGENT = 43,
|
||||||
ATTR_KIND_SAFESTACK = 44,
|
ATTR_KIND_SAFESTACK = 44,
|
||||||
ATTR_KIND_ARGMEMONLY = 45
|
ATTR_KIND_ARGMEMONLY = 45,
|
||||||
|
ATTR_KIND_SWIFT_SELF = 46,
|
||||||
|
ATTR_KIND_SWIFT_ERROR = 47
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ComdatSelectionKindCodes {
|
enum ComdatSelectionKindCodes {
|
||||||
|
@ -69,6 +69,9 @@ namespace CallingConv {
|
|||||||
// (almost) all registers.
|
// (almost) all registers.
|
||||||
PreserveAll = 15,
|
PreserveAll = 15,
|
||||||
|
|
||||||
|
// Swift - Calling convention for Swift.
|
||||||
|
Swift = 16,
|
||||||
|
|
||||||
// Target - This is the start of the target-specific calling conventions,
|
// Target - This is the start of the target-specific calling conventions,
|
||||||
// e.g. fastcall and thiscall on X86.
|
// e.g. fastcall and thiscall on X86.
|
||||||
FirstTargetCC = 64,
|
FirstTargetCC = 64,
|
||||||
|
@ -4081,6 +4081,8 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) {
|
|||||||
uint64_t AlignRecord = Record[3];
|
uint64_t AlignRecord = Record[3];
|
||||||
const uint64_t InAllocaMask = uint64_t(1) << 5;
|
const uint64_t InAllocaMask = uint64_t(1) << 5;
|
||||||
const uint64_t ExplicitTypeMask = uint64_t(1) << 6;
|
const uint64_t ExplicitTypeMask = uint64_t(1) << 6;
|
||||||
|
// Reserve bit 7 for SwiftError flag.
|
||||||
|
// const uint64_t SwiftErrorMask = uint64_t(1) << 7;
|
||||||
const uint64_t FlagMask = InAllocaMask | ExplicitTypeMask;
|
const uint64_t FlagMask = InAllocaMask | ExplicitTypeMask;
|
||||||
bool InAlloca = AlignRecord & InAllocaMask;
|
bool InAlloca = AlignRecord & InAllocaMask;
|
||||||
Type *Ty = getTypeByID(Record[0]);
|
Type *Ty = getTypeByID(Record[0]);
|
||||||
|
@ -1902,6 +1902,8 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
|
|||||||
assert(AlignRecord < 1 << 5 && "alignment greater than 1 << 64");
|
assert(AlignRecord < 1 << 5 && "alignment greater than 1 << 64");
|
||||||
AlignRecord |= AI.isUsedWithInAlloca() << 5;
|
AlignRecord |= AI.isUsedWithInAlloca() << 5;
|
||||||
AlignRecord |= 1 << 6;
|
AlignRecord |= 1 << 6;
|
||||||
|
// Reserve bit 7 for SwiftError flag.
|
||||||
|
// AlignRecord |= AI.isSwiftError() << 7;
|
||||||
Vals.push_back(AlignRecord);
|
Vals.push_back(AlignRecord);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user