mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Liveness Analysis Pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197254 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -56,6 +56,7 @@ public:
|
||||
MO_GlobalAddress, ///< Address of a global value
|
||||
MO_BlockAddress, ///< Address of a basic block
|
||||
MO_RegisterMask, ///< Mask of preserved registers.
|
||||
MO_RegisterLiveOut, ///< Mask of live-out registers.
|
||||
MO_Metadata, ///< Metadata reference (for debug info)
|
||||
MO_MCSymbol ///< MCSymbol reference (for debug/eh info)
|
||||
};
|
||||
@ -153,7 +154,7 @@ private:
|
||||
const ConstantFP *CFP; // For MO_FPImmediate.
|
||||
const ConstantInt *CI; // For MO_CImmediate. Integers > 64bit.
|
||||
int64_t ImmVal; // For MO_Immediate.
|
||||
const uint32_t *RegMask; // For MO_RegisterMask.
|
||||
const uint32_t *RegMask; // For MO_RegisterMask and MO_RegisterLiveOut.
|
||||
const MDNode *MD; // For MO_Metadata.
|
||||
MCSymbol *Sym; // For MO_MCSymbol
|
||||
|
||||
@ -246,6 +247,8 @@ public:
|
||||
bool isBlockAddress() const { return OpKind == MO_BlockAddress; }
|
||||
/// isRegMask - Tests if this is a MO_RegisterMask operand.
|
||||
bool isRegMask() const { return OpKind == MO_RegisterMask; }
|
||||
/// isRegLiveOut - Tests if this is a MO_RegisterLiveOut operand.
|
||||
bool isRegLiveOut() const { return OpKind == MO_RegisterLiveOut; }
|
||||
/// isMetadata - Tests if this is a MO_Metadata operand.
|
||||
bool isMetadata() const { return OpKind == MO_Metadata; }
|
||||
bool isMCSymbol() const { return OpKind == MO_MCSymbol; }
|
||||
@ -476,6 +479,12 @@ public:
|
||||
return Contents.RegMask;
|
||||
}
|
||||
|
||||
/// getRegLiveOut - Returns a bit mask of live-out registers.
|
||||
const uint32_t *getRegLiveOut() const {
|
||||
assert(isRegLiveOut() && "Wrong MachineOperand accessor");
|
||||
return Contents.RegMask;
|
||||
}
|
||||
|
||||
const MDNode *getMetadata() const {
|
||||
assert(isMetadata() && "Wrong MachineOperand accessor");
|
||||
return Contents.MD;
|
||||
@ -659,6 +668,12 @@ public:
|
||||
Op.Contents.RegMask = Mask;
|
||||
return Op;
|
||||
}
|
||||
static MachineOperand CreateRegLiveOut(const uint32_t *Mask) {
|
||||
assert(Mask && "Missing live-out register mask");
|
||||
MachineOperand Op(MachineOperand::MO_RegisterLiveOut);
|
||||
Op.Contents.RegMask = Mask;
|
||||
return Op;
|
||||
}
|
||||
static MachineOperand CreateMetadata(const MDNode *Meta) {
|
||||
MachineOperand Op(MachineOperand::MO_Metadata);
|
||||
Op.Contents.MD = Meta;
|
||||
|
Reference in New Issue
Block a user