class TargetData : public ImmutablePass {
bool LittleEndian; // Defaults to false
- unsigned char SubWordDataSize; // Defaults to 1 byte (no rounding up)
unsigned char ByteAlignment; // Defaults to 1 bytes
unsigned char ShortAlignment; // Defaults to 2 bytes
unsigned char IntAlignment; // Defaults to 4 bytes
unsigned char FloatAlignment; // Defaults to 4 bytes
unsigned char DoubleAlignment; // Defaults to 8 bytes
unsigned char PointerSize; // Defaults to 8 bytes
- unsigned char IntegerRegSize; // Defaults to PointerSize = 8 bytes
unsigned char PointerAlignment; // Defaults to 8 bytes
AnnotationID AID; // AID for structure layout annotation
public:
TargetData(const std::string &TargetName = "",
bool LittleEndian = false,
- unsigned char SubWordDataSize = 1,
- unsigned char IntRegSize = 8,
unsigned char PtrSize = 8,
unsigned char PtrAl = 8, unsigned char DoubleAl = 8,
unsigned char FloatAl = 4, unsigned char LongAl = 8,
bool isBigEndian() const { return !LittleEndian; }
/// Target alignment constraints
- unsigned char getSubWordDataSize() const { return SubWordDataSize; }
unsigned char getByteAlignment() const { return ByteAlignment; }
unsigned char getShortAlignment() const { return ShortAlignment; }
unsigned char getIntAlignment() const { return IntAlignment; }
unsigned char getDoubleAlignment() const { return DoubleAlignment; }
unsigned char getPointerAlignment() const { return PointerAlignment; }
unsigned char getPointerSize() const { return PointerSize; }
- unsigned char getIntegerRegSize() const { return IntegerRegSize; }
AnnotationID getStructLayoutAID() const { return AID; }
// getTypeSize - Return the number of bytes neccesary to hold the specified
protected:
TargetMachine(const std::string &name, // Can only create subclasses...
bool LittleEndian = false,
- unsigned char SubWordSize = 1, unsigned char IntRegSize = 8,
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)
- : Name(name), DataLayout(name, LittleEndian, SubWordSize, IntRegSize,
+ : Name(name), DataLayout(name, LittleEndian,
PtrSize, PtrAl, DoubleAl, FloatAl, LongAl,
IntAl, ShortAl, ByteAl) {}
public:
bool DebugMode, bool TraceMode)
: ExecutionEngine(M), ExitCode(0), Debug(DebugMode), Trace(TraceMode),
CurFrame(-1), TD("lli", (Config & TM::EndianMask) == TM::LittleEndian,
- 1, 4,
(Config & TM::PtrSizeMask) == TM::PtrSize64 ? 8 : 4,
(Config & TM::PtrSizeMask) == TM::PtrSize64 ? 8 : 4,
(Config & TM::PtrSizeMask) == TM::PtrSize64 ? 8 : 4) {
//---------------------------------------------------------------------------
UltraSparc::UltraSparc()
- : TargetMachine("UltraSparc-Native", false, 4),
+ : TargetMachine("UltraSparc-Native", false),
schedInfo(*this),
regInfo(*this),
frameInfo(*this),
//===----------------------------------------------------------------------===//
TargetData::TargetData(const std::string &TargetName,
- bool isLittleEndian, unsigned char SubWordSize,
- unsigned char IntRegSize, unsigned char PtrSize,
+ bool isLittleEndian, unsigned char PtrSize,
unsigned char PtrAl, unsigned char DoubleAl,
unsigned char FloatAl, unsigned char LongAl,
unsigned char IntAl, unsigned char ShortAl,
"ERROR: Tool did not specify a target data to use!");
LittleEndian = isLittleEndian;
- SubWordDataSize = SubWordSize;
- IntegerRegSize = IntRegSize;
PointerSize = PtrSize;
PointerAlignment = PtrAl;
DoubleAlignment = DoubleAl;
AnnotationManager::registerAnnotationFactory(AID, TypeAnFactory, this);
LittleEndian = M->isLittleEndian();
- SubWordDataSize = 1;
- IntegerRegSize = 8;
PointerSize = M->has32BitPointers() ? 4 : 8;
PointerAlignment = PointerSize;
DoubleAlignment = PointerSize;
X86TargetMachine::X86TargetMachine(unsigned Config)
: TargetMachine("X86",
(Config & TM::EndianMask) == TM::LittleEndian,
- 1, 4,
(Config & TM::PtrSizeMask) == TM::PtrSize64 ? 8 : 4,
(Config & TM::PtrSizeMask) == TM::PtrSize64 ? 8 : 4,
(Config & TM::PtrSizeMask) == TM::PtrSize64 ? 8 : 4),
// Build up all of the passes that we want to do to the module...
PassManager Passes;
- Passes.add(new TargetData("llc", TD.isLittleEndian(), TD.getSubWordDataSize(),
- TD.getIntegerRegSize(), TD.getPointerSize(),
+ Passes.add(new TargetData("llc", TD.isLittleEndian(), TD.getPointerSize(),
TD.getPointerAlignment(), TD.getDoubleAlignment()));
// Create a new optimization pass for each one specified on the command line