projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
misched: handle on-the-fly regpressure queries better for 2-addr
[oota-llvm.git]
/
include
/
llvm
/
CodeGen
/
MachineOperand.h
diff --git
a/include/llvm/CodeGen/MachineOperand.h
b/include/llvm/CodeGen/MachineOperand.h
index 1d3d60bdb2252a4626217441998aefd05df60687..606833cd4081090f0bcff80d4b1583fa7a6bf64b 100644
(file)
--- a/
include/llvm/CodeGen/MachineOperand.h
+++ b/
include/llvm/CodeGen/MachineOperand.h
@@
-14,7
+14,6
@@
#ifndef LLVM_CODEGEN_MACHINEOPERAND_H
#define LLVM_CODEGEN_MACHINEOPERAND_H
#ifndef LLVM_CODEGEN_MACHINEOPERAND_H
#define LLVM_CODEGEN_MACHINEOPERAND_H
-#include "llvm/ADT/Hashing.h"
#include "llvm/Support/DataTypes.h"
#include <cassert>
#include "llvm/Support/DataTypes.h"
#include <cassert>
@@
-30,6
+29,7
@@
class MachineRegisterInfo;
class MDNode;
class TargetMachine;
class TargetRegisterInfo;
class MDNode;
class TargetMachine;
class TargetRegisterInfo;
+class hash_code;
class raw_ostream;
class MCSymbol;
class raw_ostream;
class MCSymbol;
@@
-70,6
+70,11
@@
private:
unsigned char TargetFlags;
};
unsigned char TargetFlags;
};
+ /// TiedTo - Non-zero when this register operand is tied to another register
+ /// operand. The encoding of this field is described in the block comment
+ /// before MachineInstr::tieOperands().
+ unsigned char TiedTo : 4;
+
/// IsDef/IsImp/IsKill/IsDead flags - These are only valid for MO_Register
/// operands.
/// IsDef/IsImp/IsKill/IsDead flags - These are only valid for MO_Register
/// operands.
@@
-299,6
+304,11
@@
public:
return IsEarlyClobber;
}
return IsEarlyClobber;
}
+ bool isTied() const {
+ assert(isReg() && "Wrong MachineOperand accessor");
+ return TiedTo;
+ }
+
bool isDebug() const {
assert(isReg() && "Wrong MachineOperand accessor");
return IsDebug;
bool isDebug() const {
assert(isReg() && "Wrong MachineOperand accessor");
return IsDebug;
@@
-559,6
+569,7
@@
public:
Op.IsUndef = isUndef;
Op.IsInternalRead = isInternalRead;
Op.IsEarlyClobber = isEarlyClobber;
Op.IsUndef = isUndef;
Op.IsInternalRead = isInternalRead;
Op.IsEarlyClobber = isEarlyClobber;
+ Op.TiedTo = 0;
Op.IsDebug = isDebug;
Op.SmallContents.RegNo = Reg;
Op.Contents.Reg.Prev = 0;
Op.IsDebug = isDebug;
Op.SmallContents.RegNo = Reg;
Op.Contents.Reg.Prev = 0;
@@
-617,11
+628,11
@@
public:
Op.setTargetFlags(TargetFlags);
return Op;
}
Op.setTargetFlags(TargetFlags);
return Op;
}
- static MachineOperand CreateBA(const BlockAddress *BA,
+ static MachineOperand CreateBA(const BlockAddress *BA,
int64_t Offset,
unsigned char TargetFlags = 0) {
MachineOperand Op(MachineOperand::MO_BlockAddress);
Op.Contents.OffsetedInfo.Val.BA = BA;
unsigned char TargetFlags = 0) {
MachineOperand Op(MachineOperand::MO_BlockAddress);
Op.Contents.OffsetedInfo.Val.BA = BA;
- Op.setOffset(
0); // Offset is always 0.
+ Op.setOffset(
Offset);
Op.setTargetFlags(TargetFlags);
return Op;
}
Op.setTargetFlags(TargetFlags);
return Op;
}
@@
-676,6
+687,9
@@
inline raw_ostream &operator<<(raw_ostream &OS, const MachineOperand& MO) {
return OS;
}
return OS;
}
+ // See friend declaration above. This additional declaration is required in
+ // order to compile LLVM with IBM xlC compiler.
+ hash_code hash_value(const MachineOperand &MO);
} // End llvm namespace
#endif
} // End llvm namespace
#endif