diff options
author | Simon Atanasyan <satanasyan@mips.com> | 2012-07-05 16:06:06 +0000 |
---|---|---|
committer | Simon Atanasyan <satanasyan@mips.com> | 2012-07-05 16:06:06 +0000 |
commit | 72244b6e4f711566b749e018af4b18feb4c45108 (patch) | |
tree | 5814bfd917e1acec88c91d460b07a5a6a6be829f /clang/lib/Basic/Targets.cpp | |
parent | 9f444d5a1b7c3ea6c9ae4f2b0006e8882a831050 (diff) | |
download | bcm5719-llvm-72244b6e4f711566b749e018af4b18feb4c45108.tar.gz bcm5719-llvm-72244b6e4f711566b749e018af4b18feb4c45108.zip |
MIPS: Define __mips16 macro if -mips16 option is provided.
llvm-svn: 159753
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 713396c3abc..3eaa65177c7 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -3599,6 +3599,7 @@ namespace { class MipsTargetInfoBase : public TargetInfo { static const Builtin::Info BuiltinInfo[]; std::string CPU; + bool IsMips16; enum MipsFloatABI { HardFloat, SingleFloat, SoftFloat } FloatABI; @@ -3612,6 +3613,7 @@ public: const std::string& CPUStr) : TargetInfo(triple), CPU(CPUStr), + IsMips16(false), FloatABI(HardFloat), ABI(ABIStr) {} @@ -3643,6 +3645,9 @@ public: break; } + if (IsMips16) + Builder.defineMacro("__mips16", Twine(1)); + Builder.defineMacro("_MIPS_SZPTR", Twine(getPointerWidth(0))); Builder.defineMacro("_MIPS_SZINT", Twine(getIntWidth())); Builder.defineMacro("_MIPS_SZLONG", Twine(getLongWidth())); @@ -3722,6 +3727,7 @@ public: } virtual void HandleTargetFeatures(std::vector<std::string> &Features) { + IsMips16 = false; FloatABI = HardFloat; for (std::vector<std::string>::iterator it = Features.begin(), @@ -3730,6 +3736,8 @@ public: FloatABI = SingleFloat; else if (*it == "+soft-float") FloatABI = SoftFloat; + else if (*it == "+mips16") + IsMips16 = true; } // Remove front-end specific option. |