diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-06-01 20:00:48 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-06-01 20:00:48 +0000 |
commit | 70459bef9ccd73b3a2a44fdd62f2509861112745 (patch) | |
tree | 871e3f51826389a9a05c51ef8b7ba70b56126893 /lib/Target | |
parent | 434dd4fd94f5f248492c675e4285e7d67342d4c4 (diff) | |
download | external_llvm-70459bef9ccd73b3a2a44fdd62f2509861112745.zip external_llvm-70459bef9ccd73b3a2a44fdd62f2509861112745.tar.gz external_llvm-70459bef9ccd73b3a2a44fdd62f2509861112745.tar.bz2 |
Implement review feedback. Make thumb2 'normal' subtarget feature
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72698 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/ARM/ARMSubtarget.cpp | 15 | ||||
-rw-r--r-- | lib/Target/ARM/ARMSubtarget.h | 10 |
2 files changed, 12 insertions, 13 deletions
diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp index 96daca8..ef78cd5 100644 --- a/lib/Target/ARM/ARMSubtarget.cpp +++ b/lib/Target/ARM/ARMSubtarget.cpp @@ -20,7 +20,8 @@ ARMSubtarget::ARMSubtarget(const Module &M, const std::string &FS, bool isThumb) : ARMArchVersion(V4T) , ARMFPUType(None) - , ThumbMode((isThumb ? Thumb1 : ThumbNone)) + , IsThumb(isThumb) + , ThumbMode(Thumb1) , UseThumbBacktraces(false) , IsR9Reserved(false) , stackAlignment(4) @@ -41,22 +42,18 @@ ARMSubtarget::ARMSubtarget(const Module &M, const std::string &FS, if (Len >= 5 && TT.substr(0, 4) == "armv") Idx = 4; else if (Len >= 6 && TT.substr(0, 6) == "thumb") { - isThumb = true; + IsThumb = true; if (Len >= 7 && TT[5] == 'v') Idx = 6; } if (Idx) { unsigned SubVer = TT[Idx]; if (SubVer > '4' && SubVer <= '9') { - if (SubVer >= '7') { + if (SubVer >= '7') ARMArchVersion = V7A; - if (isThumb) - ThumbMode = Thumb2; - } else if (SubVer == '6') { + else if (SubVer == '6') ARMArchVersion = V6; - if (isThumb && Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == '2') - ThumbMode = Thumb2; - } else if (SubVer == '5') { + else if (SubVer == '5') { ARMArchVersion = V5T; if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == 'e') ARMArchVersion = V5TE; diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h index 370817d..8b469cf 100644 --- a/lib/Target/ARM/ARMSubtarget.h +++ b/lib/Target/ARM/ARMSubtarget.h @@ -31,7 +31,6 @@ protected: }; enum ThumbTypeEnum { - ThumbNone, Thumb1, Thumb2 }; @@ -43,7 +42,10 @@ protected: /// ARMFPUType - Floating Point Unit type. ARMFPEnum ARMFPUType; - /// ThumbMode - ARM if in ARM mode, otherwise indicates Thumb version. + /// IsThumb - True if we are in thumb mode, false if in ARM mode. + bool IsThumb; + + /// ThumbMode - Indicates supported Thumb version. ThumbTypeEnum ThumbMode; /// UseThumbBacktraces - True if we use thumb style backtraces. @@ -102,8 +104,8 @@ protected: bool isAPCS_ABI() const { return TargetABI == ARM_ABI_APCS; } bool isAAPCS_ABI() const { return TargetABI == ARM_ABI_AAPCS; } - bool isThumb() const { return ThumbMode >= Thumb1; } - bool isThumb2() const { return ThumbMode >= Thumb2; } + bool isThumb() const { return IsThumb; } + bool isThumb2() const { return IsThumb && (ThumbMode >= Thumb2); } bool useThumbBacktraces() const { return UseThumbBacktraces; } bool isR9Reserved() const { return IsR9Reserved; } |