forked from OSchip/llvm-project
[Mips] Do not adjust float-abi flags in case of MIPS16 mode. This code
should be isolated in the backend (r195123). From the frontend point of view in case of "-mhard-float -mips16" combination of flags the float ABI mode should remain unchanged. The patch reviewed by Reed Kotler. llvm-svn: 195124
This commit is contained in:
parent
1093afe27a
commit
22a6f4d456
|
@ -1015,8 +1015,7 @@ static void AddTargetFeature(const ArgList &Args,
|
|||
static void getMIPSTargetFeatures(const Driver &D, const ArgList &Args,
|
||||
std::vector<const char *> &Features) {
|
||||
StringRef FloatABI = getMipsFloatABI(D, Args);
|
||||
bool IsMips16 = Args.getLastArg(options::OPT_mips16) != NULL;
|
||||
if (FloatABI == "soft" || (FloatABI == "hard" && IsMips16)) {
|
||||
if (FloatABI == "soft") {
|
||||
// FIXME: Note, this is a hack. We need to pass the selected float
|
||||
// mode to the MipsTargetInfoBase to define appropriate macros there.
|
||||
// Now it is the only method.
|
||||
|
@ -1057,18 +1056,11 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args,
|
|||
|
||||
StringRef FloatABI = getMipsFloatABI(D, Args);
|
||||
|
||||
bool IsMips16 = Args.getLastArg(options::OPT_mips16) != NULL;
|
||||
|
||||
if (FloatABI == "soft" || (FloatABI == "hard" && IsMips16)) {
|
||||
if (FloatABI == "soft") {
|
||||
// Floating point operations and argument passing are soft.
|
||||
CmdArgs.push_back("-msoft-float");
|
||||
CmdArgs.push_back("-mfloat-abi");
|
||||
CmdArgs.push_back("soft");
|
||||
|
||||
if (FloatABI == "hard" && IsMips16) {
|
||||
CmdArgs.push_back("-mllvm");
|
||||
CmdArgs.push_back("-mips16-hard-float");
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Floating point operations and argument passing are hard.
|
||||
|
|
|
@ -60,23 +60,22 @@
|
|||
// RUN: %clang -c %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target mips-linux-gnu -mips16 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-DEF-MIPS16 %s
|
||||
// CHECK-DEF-MIPS16: "-mfloat-abi" "soft"
|
||||
// CHECK-DEF-MIPS16: "-mllvm" "-mips16-hard-float"
|
||||
// CHECK-DEF-MIPS16: "-target-feature" "+mips16"
|
||||
// CHECK-DEF-MIPS16: "-mfloat-abi" "hard"
|
||||
//
|
||||
// -mhard-float -mips16
|
||||
// RUN: %clang -c %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target mips-linux-gnu -mhard-float -mips16 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-HARD-MIPS16 %s
|
||||
// CHECK-HARD-MIPS16: "-target-feature" "+soft-float"
|
||||
// CHECK-HARD-MIPS16: "-msoft-float"
|
||||
// CHECK-HARD-MIPS16: "-mfloat-abi" "soft"
|
||||
// CHECK-HARD-MIPS16: "-mllvm" "-mips16-hard-float"
|
||||
// CHECK-HARD-MIPS16: "-target-feature" "+mips16"
|
||||
// CHECK-HARD-MIPS16: "-mfloat-abi" "hard"
|
||||
//
|
||||
// -msoft-float -mips16
|
||||
// RUN: %clang -c %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target mips-linux-gnu -msoft-float -mips16 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-SOFT-MIPS16 %s
|
||||
// CHECK-SOFT-MIPS16: "-target-feature" "+soft-float"
|
||||
// CHECK-SOFT-MIPS16: "-target-feature" "+mips16"
|
||||
// CHECK-SOFT-MIPS16: "-msoft-float"
|
||||
// CHECK-SOFT-MIPS16: "-mfloat-abi" "soft"
|
||||
//
|
||||
|
@ -84,15 +83,14 @@
|
|||
// RUN: %clang -c %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target mips-linux-gnu -mfloat-abi=hard -mips16 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ABI-HARD-MIPS16 %s
|
||||
// CHECK-ABI-HARD-MIPS16: "-target-feature" "+soft-float"
|
||||
// CHECK-ABI-HARD-MIPS16: "-msoft-float"
|
||||
// CHECK-ABI-HARD-MIPS16: "-mfloat-abi" "soft"
|
||||
// CHECK-ABI-HARD-MIPS16: "-mllvm" "-mips16-hard-float"
|
||||
// CHECK-ABI-HARD-MIPS16: "-target-feature" "+mips16"
|
||||
// CHECK-ABI-HARD-MIPS16: "-mfloat-abi" "hard"
|
||||
//
|
||||
// -mfloat-abi=soft -mips16
|
||||
// RUN: %clang -c %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target mips-linux-gnu -mfloat-abi=soft -mips16 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ABI-SOFT-MIPS16 %s
|
||||
// CHECK-ABI-SOFT-MIPS16: "-target-feature" "+soft-float"
|
||||
// CHECK-ABI-SOFT-MIPS16: "-target-feature" "+mips16"
|
||||
// CHECK-ABI-SOFT-MIPS16: "-msoft-float"
|
||||
// CHECK-ABI-SOFT-MIPS16: "-mfloat-abi" "soft"
|
||||
|
|
Loading…
Reference in New Issue