diff options
-rw-r--r-- | include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | lib/Basic/Targets.cpp | 3 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 9 | ||||
-rw-r--r-- | test/Driver/mips-features.c | 13 |
4 files changed, 26 insertions, 1 deletions
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 6a99b5a644..496683307b 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -846,6 +846,8 @@ def mbmi : Flag<"-mbmi">, Group<m_x86_Features_Group>; def mbmi2 : Flag<"-mbmi2">, Group<m_x86_Features_Group>; def mpopcnt : Flag<"-mpopcnt">, Group<m_x86_Features_Group>; def mfma4 : Flag<"-mfma4">, Group<m_x86_Features_Group>; +def mips16 : Flag<"-mips16">, Group<m_Group>; +def mno_mips16 : Flag<"-mno-mips16">, Group<m_Group>; def mthumb : Flag<"-mthumb">, Group<m_Group>; def mtune_EQ : Joined<"-mtune=">, Group<m_Group>; def multi__module : Flag<"-multi_module">; diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index f094784c72..5d29417cb4 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -3708,7 +3708,8 @@ public: if (Name == "soft-float" || Name == "single-float" || Name == "o32" || Name == "n32" || Name == "n64" || Name == "eabi" || Name == "mips32" || Name == "mips32r2" || - Name == "mips64" || Name == "mips64r2") { + Name == "mips64" || Name == "mips64r2" || + Name == "mips16") { Features[Name] = Enabled; return true; } diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index a5e2e401e2..1be4659f61 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -919,6 +919,15 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args, CmdArgs.push_back("-mfloat-abi"); CmdArgs.push_back("hard"); } + + if (Arg *A = Args.getLastArg(options::OPT_mips16, + options::OPT_mno_mips16)) { + CmdArgs.push_back("-target-feature"); + if (A->getOption().matches(options::OPT_mips16)) + CmdArgs.push_back("+mips16"); + else + CmdArgs.push_back("-mips16"); + } } /// getPPCTargetCPU - Get the (LLVM) name of the PowerPC cpu we are targeting. diff --git a/test/Driver/mips-features.c b/test/Driver/mips-features.c new file mode 100644 index 0000000000..038b718098 --- /dev/null +++ b/test/Driver/mips-features.c @@ -0,0 +1,13 @@ +// Check handling MIPS specific features options. +// +// -mips16 +// RUN: %clang -target mips-linux-gnu -### -c %s \ +// RUN: -mno-mips16 -mips16 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-MIPS16 %s +// CHECK-MIPS16: "-target-feature" "+mips16" +// +// -mno-mips16 +// RUN: %clang -target mips-linux-gnu -### -c %s \ +// RUN: -mips16 -mno-mips16 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOMIPS16 %s +// CHECK-NOMIPS16: "-target-feature" "-mips16" |