mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Use the new TargetData class to factor out some of the shared code
between the static compilers and the interpreter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@379 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4647b1c3be
commit
fed72d5973
@ -12,6 +12,7 @@
|
|||||||
#ifndef LLVM_CODEGEN_TARGETMACHINE_H
|
#ifndef LLVM_CODEGEN_TARGETMACHINE_H
|
||||||
#define LLVM_CODEGEN_TARGETMACHINE_H
|
#define LLVM_CODEGEN_TARGETMACHINE_H
|
||||||
|
|
||||||
|
#include "llvm/CodeGen/TargetData.h"
|
||||||
#include "llvm/Support/NonCopyable.h"
|
#include "llvm/Support/NonCopyable.h"
|
||||||
#include "llvm/Support/DataTypes.h"
|
#include "llvm/Support/DataTypes.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -147,23 +148,29 @@ public:
|
|||||||
|
|
||||||
class TargetMachine : public NonCopyableV {
|
class TargetMachine : public NonCopyableV {
|
||||||
public:
|
public:
|
||||||
int optSizeForSubWordData;
|
const string TargetName;
|
||||||
int intSize;
|
const TargetData DataLayout; // Calculates type size & alignment
|
||||||
int longSize;
|
int optSizeForSubWordData;
|
||||||
int floatSize;
|
int minMemOpWordSize;
|
||||||
int doubleSize;
|
int maxAtomicMemOpWordSize;
|
||||||
int longDoubleSize;
|
|
||||||
int pointerSize;
|
|
||||||
int minMemOpWordSize;
|
|
||||||
int maxAtomicMemOpWordSize;
|
|
||||||
|
|
||||||
// Register information. This needs to be reorganized into a single class.
|
// Register information. This needs to be reorganized into a single class.
|
||||||
int zeroRegNum; // register that gives 0 if any (-1 if none)
|
int zeroRegNum; // register that gives 0 if any (-1 if none)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*ctor*/ TargetMachine (MachineInstrInfo* mii)
|
TargetMachine(const string &targetname, MachineInstrInfo* mii,
|
||||||
: machineInstrInfo(mii) {}
|
unsigned char PtrSize = 8, unsigned char PtrAl = 8,
|
||||||
/*dtor*/ virtual ~TargetMachine () {}
|
unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
|
||||||
|
unsigned char LongAl = 8, unsigned char IntAl = 4,
|
||||||
|
unsigned char ShortAl = 2, unsigned char ByteAl = 1)
|
||||||
|
: TargetName(targetname), DataLayout(targetname, PtrSize, PtrAl,
|
||||||
|
DoubleAl, FloatAl, LongAl, IntAl,
|
||||||
|
ShortAl, ByteAl),
|
||||||
|
machineInstrInfo(mii) {
|
||||||
|
}
|
||||||
|
virtual ~TargetMachine() {
|
||||||
|
delete machineInstrInfo;
|
||||||
|
}
|
||||||
|
|
||||||
const MachineInstrInfo& getInstrInfo () const { return *machineInstrInfo; }
|
const MachineInstrInfo& getInstrInfo () const { return *machineInstrInfo; }
|
||||||
|
|
||||||
@ -171,17 +178,11 @@ public:
|
|||||||
|
|
||||||
virtual unsigned int findOptimalStorageSize (const Type* ty) const;
|
virtual unsigned int findOptimalStorageSize (const Type* ty) const;
|
||||||
|
|
||||||
virtual unsigned int* findOptimalMemberOffsets(const StructType* stype)const;
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Description of machine instructions
|
// Description of machine instructions
|
||||||
// Protect so that subclass can control alloc/dealloc
|
// Protect so that subclass can control alloc/dealloc
|
||||||
MachineInstrInfo* machineInstrInfo;
|
MachineInstrInfo* machineInstrInfo;
|
||||||
// MachineSchedInfo* machineSchedInfo;
|
// MachineSchedInfo* machineSchedInfo;
|
||||||
|
|
||||||
private:
|
|
||||||
/*ctor*/ TargetMachine (); // disable
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user