forked from OSchip/llvm-project
Add four new command line options for MIPS CPU selection:
-mips32, -mips32r2, -mips64, -mips64r2. The patch reviewed by Eric Christopher. llvm-svn: 164410
This commit is contained in:
parent
55023de547
commit
2efe53e448
|
@ -41,6 +41,8 @@ def m_x86_Features_Group : OptionGroup<"<m x86 features group>">, Group<m_Group
|
|||
def m_hexagon_Features_Group : OptionGroup<"<m hexagon features group>">, Group<m_Group>;
|
||||
def opencl_Group : OptionGroup<"<opencl group>">;
|
||||
def u_Group : OptionGroup<"<u group>">;
|
||||
def mips_CPUs_Group : OptionGroup<"<MIPS CPU aliases group>">,
|
||||
Group<CompileOnly_Group>;
|
||||
|
||||
def pedantic_Group : OptionGroup<"<pedantic group>">,
|
||||
Group<CompileOnly_Group>;
|
||||
|
@ -869,6 +871,14 @@ def mdsp : Flag<"-mdsp">, Group<m_Group>;
|
|||
def mno_dsp : Flag<"-mno-dsp">, Group<m_Group>;
|
||||
def mdspr2 : Flag<"-mdspr2">, Group<m_Group>;
|
||||
def mno_dspr2 : Flag<"-mno-dspr2">, Group<m_Group>;
|
||||
def mips32 : Flag<"-mips32">, Group<mips_CPUs_Group>,
|
||||
HelpText<"Equivalent to -march=mips32">;
|
||||
def mips32r2 : Flag<"-mips32r2">, Group<mips_CPUs_Group>,
|
||||
HelpText<"Equivalent to -march=mips32r2">;
|
||||
def mips64 : Flag<"-mips64">, Group<mips_CPUs_Group>,
|
||||
HelpText<"Equivalent to -march=mips64">;
|
||||
def mips64r2 : Flag<"-mips64r2">, Group<mips_CPUs_Group>,
|
||||
HelpText<"Equivalent to -march=mips64r2">;
|
||||
def mthumb : Flag<"-mthumb">, Group<m_Group>;
|
||||
def mtune_EQ : Joined<"-mtune=">, Group<m_Group>;
|
||||
def multi__module : Flag<"-multi_module">;
|
||||
|
|
|
@ -778,6 +778,20 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
|
|||
CmdArgs.push_back("-no-implicit-float");
|
||||
}
|
||||
|
||||
// Translate MIPS CPU name alias option to CPU name.
|
||||
static StringRef getMipsCPUFromAlias(const Arg &A) {
|
||||
if (A.getOption().matches(options::OPT_mips32))
|
||||
return "mips32";
|
||||
if (A.getOption().matches(options::OPT_mips32r2))
|
||||
return "mips32r2";
|
||||
if (A.getOption().matches(options::OPT_mips64))
|
||||
return "mips64";
|
||||
if (A.getOption().matches(options::OPT_mips64r2))
|
||||
return "mips64r2";
|
||||
llvm_unreachable("Unexpected option");
|
||||
return "";
|
||||
}
|
||||
|
||||
// Get CPU and ABI names. They are not independent
|
||||
// so we have to calculate them together.
|
||||
static void getMipsCPUAndABI(const ArgList &Args,
|
||||
|
@ -788,8 +802,13 @@ static void getMipsCPUAndABI(const ArgList &Args,
|
|||
const char *DefMips64CPU = "mips64";
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_march_EQ,
|
||||
options::OPT_mcpu_EQ))
|
||||
CPUName = A->getValue(Args);
|
||||
options::OPT_mcpu_EQ,
|
||||
options::OPT_mips_CPUs_Group)) {
|
||||
if (A->getOption().matches(options::OPT_mips_CPUs_Group))
|
||||
CPUName = getMipsCPUFromAlias(*A);
|
||||
else
|
||||
CPUName = A->getValue(Args);
|
||||
}
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
|
||||
ABIName = A->getValue(Args);
|
||||
|
|
|
@ -59,3 +59,23 @@
|
|||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-32R2 %s
|
||||
// MIPS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-unknown-freebsd -mips32 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-32 %s
|
||||
// MIPS-ALIAS-32: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-unknown-freebsd -mips32r2 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-32R2 %s
|
||||
// MIPS-ALIAS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-unknown-freebsd -mips64 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-64 %s
|
||||
// MIPS-ALIAS-64: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-unknown-freebsd -mips64r2 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-64R2 %s
|
||||
// MIPS-ALIAS-64R2: as{{(.exe)?}}" "-march" "mips64r2" "-mabi" "64" "-EB"
|
||||
|
|
|
@ -43,3 +43,23 @@
|
|||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-32R2 %s
|
||||
// MIPS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-linux-gnu -mips32 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-32 %s
|
||||
// MIPS-ALIAS-32: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-linux-gnu -mips32r2 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-32R2 %s
|
||||
// MIPS-ALIAS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-linux-gnu -mips64 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-64 %s
|
||||
// MIPS-ALIAS-64: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
|
||||
//
|
||||
// RUN: %clang -target mips-linux-gnu -mips64r2 -### \
|
||||
// RUN: -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=MIPS-ALIAS-64R2 %s
|
||||
// MIPS-ALIAS-64R2: as{{(.exe)?}}" "-march" "mips64r2" "-mabi" "64" "-EB"
|
||||
|
|
Loading…
Reference in New Issue