Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses.  This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.

This fixes PR 759.

llvm-svn: 28074
diff --git a/llvm/lib/Target/Alpha/AlphaTargetMachine.h b/llvm/lib/Target/Alpha/AlphaTargetMachine.h
index 8f6caeb..6e23868 100644
--- a/llvm/lib/Target/Alpha/AlphaTargetMachine.h
+++ b/llvm/lib/Target/Alpha/AlphaTargetMachine.h
@@ -26,11 +26,12 @@
 class GlobalValue;
 
 class AlphaTargetMachine : public TargetMachine {
+  const TargetData DataLayout;       // Calculates type size & alignment
   AlphaInstrInfo InstrInfo;
   TargetFrameInfo FrameInfo;
   AlphaJITInfo JITInfo;
   AlphaSubtarget Subtarget;
-
+  
 public:
   AlphaTargetMachine(const Module &M, const std::string &FS);
 
@@ -40,6 +41,7 @@
   virtual const MRegisterInfo *getRegisterInfo() const {
     return &InstrInfo.getRegisterInfo();
   }
+  virtual const TargetData       *getTargetData() const { return &DataLayout; }
   virtual TargetJITInfo* getJITInfo() {
     return &JITInfo;
   }