Give IA64 a TargetSubtarget subclass, so that it can

implement getSubtargetImpl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62369 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2009-01-16 22:49:36 +00:00
parent f7119393a9
commit 01bbc3e334
3 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,18 @@
//===-- IA64Subtarget.cpp - IA64 Subtarget Information ----------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file implements the IA64 specific subclass of TargetSubtarget.
//
//===----------------------------------------------------------------------===//
#define DEBUG_TYPE "subtarget"
#include "IA64Subtarget.h"
using namespace llvm;
IA64Subtarget::IA64Subtarget() {}

View File

@ -0,0 +1,28 @@
//====---- IA64Subtarget.h - Define Subtarget for the IA64 -----*- C++ -*--===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file declares the IA64 specific subclass of TargetSubtarget.
//
//===----------------------------------------------------------------------===//
#ifndef IA64SUBTARGET_H
#define IA64SUBTARGET_H
#include "llvm/Target/TargetSubtarget.h"
namespace llvm {
class IA64Subtarget : public TargetSubtarget {
public:
IA64Subtarget();
};
} // End llvm namespace
#endif

View File

@ -19,10 +19,12 @@
#include "llvm/Target/TargetFrameInfo.h" #include "llvm/Target/TargetFrameInfo.h"
#include "IA64InstrInfo.h" #include "IA64InstrInfo.h"
#include "IA64ISelLowering.h" #include "IA64ISelLowering.h"
#include "IA64Subtarget.h"
namespace llvm { namespace llvm {
class IA64TargetMachine : public LLVMTargetMachine { class IA64TargetMachine : public LLVMTargetMachine {
IA64Subtarget Subtarget;
const TargetData DataLayout; // Calculates type size & alignment const TargetData DataLayout; // Calculates type size & alignment
IA64InstrInfo InstrInfo; IA64InstrInfo InstrInfo;
TargetFrameInfo FrameInfo; TargetFrameInfo FrameInfo;
@ -37,6 +39,7 @@ public:
virtual const IA64InstrInfo *getInstrInfo() const { return &InstrInfo; } virtual const IA64InstrInfo *getInstrInfo() const { return &InstrInfo; }
virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; }
virtual const IA64Subtarget *getSubtargetImpl() const { return &Subtarget; }
virtual IA64TargetLowering *getTargetLowering() const { virtual IA64TargetLowering *getTargetLowering() const {
return const_cast<IA64TargetLowering*>(&TLInfo); return const_cast<IA64TargetLowering*>(&TLInfo);
} }