Introduce TargetType's ELF and Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33363 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2007-01-19 19:22:40 +00:00
parent 8e1185bd5c
commit 1a3771e30e
2 changed files with 17 additions and 8 deletions

View File

@ -22,8 +22,12 @@ static cl::opt<bool> Thumb("enable-thumb",
cl::desc("Switch to thumb mode in ARM backend"));
ARMSubtarget::ARMSubtarget(const Module &M, const std::string &FS)
: ARMArchVersion(V4T), HasVFP2(false), IsDarwin(false),
UseThumbBacktraces(false), IsR9Reserved(false), stackAlignment(8) {
: ARMArchVersion(V4T)
, HasVFP2(false)
, UseThumbBacktraces(false)
, IsR9Reserved(false)
, stackAlignment(8)
, TargetType(isELF) { // Default to ELF unless otherwise specified.
// Determine default and user specified characteristics
std::string CPU = "generic";
@ -37,14 +41,15 @@ ARMSubtarget::ARMSubtarget(const Module &M, const std::string &FS)
// if one cannot be determined, to true.
const std::string& TT = M.getTargetTriple();
if (TT.length() > 5) {
IsDarwin = TT.find("-darwin") != std::string::npos;
if (TT.find("-darwin") != std::string::npos)
TargetType = isDarwin;
} else if (TT.empty()) {
#if defined(__APPLE__)
IsDarwin = true;
TargetType = isDarwin;
#endif
}
if (IsDarwin) {
if (isTargetDarwin()) {
UseThumbBacktraces = true;
IsR9Reserved = true;
stackAlignment = 4;

View File

@ -37,8 +37,6 @@ protected:
/// IsThumb - True if we are in thumb mode, false if in ARM mode.
bool IsThumb;
bool IsDarwin;
/// UseThumbBacktraces - True if we use thumb style backtraces.
bool UseThumbBacktraces;
@ -50,6 +48,10 @@ protected:
unsigned stackAlignment;
public:
enum {
isELF, isDarwin
} TargetType;
/// This constructor initializes the data members to match that
/// of the specified module.
///
@ -66,7 +68,9 @@ protected:
bool hasVFP2() const { return HasVFP2; }
bool isDarwin() const { return IsDarwin; }
bool isTargetDarwin() const { return TargetType == isDarwin; }
bool isTargetELF() const { return TargetType == isELF; }
bool isThumb() const { return IsThumb; }
bool useThumbBacktraces() const { return UseThumbBacktraces; }