#define CTARGETMACHINE_H
#include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetData.h"
namespace llvm {
-class IntrinsicLowering;
struct CTargetMachine : public TargetMachine {
- CTargetMachine(const Module &M, IntrinsicLowering *IL) :
- TargetMachine("CBackend", IL, M) {}
+ const TargetData DataLayout; // Calculates type size & alignment
+
+ CTargetMachine(const Module &M, const std::string &FS)
+ : TargetMachine("CBackend", M),
+ DataLayout("CBackend", &M) {}
// This is the only thing that actually does anything here.
virtual bool addPassesToEmitFile(PassManager &PM, std::ostream &Out,
- CodeGenFileType FileType);
+ CodeGenFileType FileType, bool Fast);
// This class always works, but shouldn't be the default in most cases.
static unsigned getModuleMatchQuality(const Module &M) { return 1; }
+
+ virtual const TargetData *getTargetData() const { return &DataLayout; }
};
} // End llvm namespace