diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp index 35bb9accc35..27889c7818d 100644 --- a/lib/Target/ARM/ARMSubtarget.cpp +++ b/lib/Target/ARM/ARMSubtarget.cpp @@ -22,8 +22,12 @@ static cl::opt 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; diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h index d5c4b5eb039..33e440b0cf4 100644 --- a/lib/Target/ARM/ARMSubtarget.h +++ b/lib/Target/ARM/ARMSubtarget.h @@ -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; }