mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Remove ctor with each piece specifyable (which causes overload ambiguities),
add a new init method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28828 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a827953c32
commit
acbc07aa22
@ -45,20 +45,16 @@ class TargetData : public ImmutablePass {
|
|||||||
unsigned char PointerAlignment; // Defaults to 8 bytes
|
unsigned char PointerAlignment; // Defaults to 8 bytes
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TargetData(const std::string &TargetName = "",
|
|
||||||
bool LittleEndian = false,
|
|
||||||
unsigned char PtrSize = 8,
|
|
||||||
unsigned char PtrAl = 8, unsigned char DoubleAl = 8,
|
|
||||||
unsigned char FloatAl = 4, unsigned char LongAl = 8,
|
|
||||||
unsigned char IntAl = 4, unsigned char ShortAl = 2,
|
|
||||||
unsigned char ByteAl = 1, unsigned char BoolAl = 1);
|
|
||||||
|
|
||||||
/// Constructs a TargetData from a string of the following format:
|
/// Constructs a TargetData from a string of the following format:
|
||||||
/// "E-p:64:64-d:64-f:32-l:64-i:32-s:16-b:8-B:8"
|
/// "E-p:64:64-d:64-f:32-l:64-i:32-s:16-b:8-B:8"
|
||||||
/// The above string is considered the default, and any values not specified
|
/// The above string is considered the default, and any values not specified
|
||||||
/// in the string will be assumed to be as above.
|
/// in the string will be assumed to be as above.
|
||||||
TargetData(const std::string &TargetName,
|
TargetData(const std::string &TargetName = "",
|
||||||
const std::string &TargetDescription);
|
const std::string &TargetDescription = "") {
|
||||||
|
assert(!TargetName.empty() &&
|
||||||
|
"ERROR: Tool did not specify a target data to use!");
|
||||||
|
init(TargetDescription);
|
||||||
|
}
|
||||||
|
|
||||||
// Copy constructor
|
// Copy constructor
|
||||||
TargetData (const TargetData &TD) :
|
TargetData (const TargetData &TD) :
|
||||||
@ -78,6 +74,11 @@ public:
|
|||||||
TargetData(const std::string &ToolName, const Module *M);
|
TargetData(const std::string &ToolName, const Module *M);
|
||||||
~TargetData(); // Not virtual, do not subclass this class
|
~TargetData(); // Not virtual, do not subclass this class
|
||||||
|
|
||||||
|
/// init - Specify configuration if not available at ctor time.
|
||||||
|
///
|
||||||
|
void init(const std::string &TargetDescription);
|
||||||
|
|
||||||
|
|
||||||
/// Target endianness...
|
/// Target endianness...
|
||||||
bool isLittleEndian() const { return LittleEndian; }
|
bool isLittleEndian() const { return LittleEndian; }
|
||||||
bool isBigEndian() const { return !LittleEndian; }
|
bool isBigEndian() const { return !LittleEndian; }
|
||||||
|
@ -95,38 +95,7 @@ unsigned StructLayout::getElementContainingOffset(uint64_t Offset) const {
|
|||||||
// TargetData Class Implementation
|
// TargetData Class Implementation
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
TargetData::TargetData(const std::string &TargetName,
|
void TargetData::init(const std::string &TargetDescription) {
|
||||||
bool isLittleEndian, unsigned char PtrSize,
|
|
||||||
unsigned char PtrAl, unsigned char DoubleAl,
|
|
||||||
unsigned char FloatAl, unsigned char LongAl,
|
|
||||||
unsigned char IntAl, unsigned char ShortAl,
|
|
||||||
unsigned char ByteAl, unsigned char BoolAl) {
|
|
||||||
|
|
||||||
// If this assert triggers, a pass "required" TargetData information, but the
|
|
||||||
// top level tool did not provide one for it. We do not want to default
|
|
||||||
// construct, or else we might end up using a bad endianness or pointer size!
|
|
||||||
//
|
|
||||||
assert(!TargetName.empty() &&
|
|
||||||
"ERROR: Tool did not specify a target data to use!");
|
|
||||||
|
|
||||||
LittleEndian = isLittleEndian;
|
|
||||||
PointerSize = PtrSize;
|
|
||||||
PointerAlignment = PtrAl;
|
|
||||||
DoubleAlignment = DoubleAl;
|
|
||||||
FloatAlignment = FloatAl;
|
|
||||||
LongAlignment = LongAl;
|
|
||||||
IntAlignment = IntAl;
|
|
||||||
ShortAlignment = ShortAl;
|
|
||||||
ByteAlignment = ByteAl;
|
|
||||||
BoolAlignment = BoolAl;
|
|
||||||
}
|
|
||||||
|
|
||||||
TargetData::TargetData(const std::string &TargetName,
|
|
||||||
const std::string &TargetDescription) {
|
|
||||||
assert(!TargetName.empty() &&
|
|
||||||
"ERROR: Tool did not specify a target data to use!");
|
|
||||||
|
|
||||||
|
|
||||||
std::string temp = TargetDescription;
|
std::string temp = TargetDescription;
|
||||||
|
|
||||||
LittleEndian = false;
|
LittleEndian = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user