forked from OSchip/llvm-project
[mips] Show warning in case of mixing -mlong-calls and -mabicalls options
While we do not support `-mshared / -mno-shared` properly, show warning and ignore `-mlong-calls` option in case of implicitly or explicitly provided `-mabicalls` option. Differential revision: https://reviews.llvm.org/D36551 llvm-svn: 310614
This commit is contained in:
parent
3306e3a8e8
commit
c038841e8b
|
@ -292,6 +292,10 @@ def warn_drv_unsupported_gpopt : Warning<
|
|||
"ignoring '-mgpopt' option as it cannot be used with %select{|the implicit"
|
||||
" usage of }0-mabicalls">,
|
||||
InGroup<UnsupportedGPOpt>;
|
||||
def warn_drv_unsupported_longcalls : Warning<
|
||||
"ignoring '-mlong-calls' option as it is not currently supported with "
|
||||
"%select{|the implicit usage of }0-mabicalls">,
|
||||
InGroup<OptionIgnored>;
|
||||
def warn_drv_unsupported_abicalls : Warning<
|
||||
"ignoring '-mabicalls' option as it cannot be used with "
|
||||
"non position-independent code and the N64 ABI">,
|
||||
|
|
|
@ -245,6 +245,16 @@ void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple,
|
|||
else
|
||||
Features.push_back("-noabicalls");
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_mlong_calls,
|
||||
options::OPT_mno_long_calls)) {
|
||||
if (A->getOption().matches(options::OPT_mno_long_calls))
|
||||
Features.push_back("-long-calls");
|
||||
else if (!UseAbiCalls)
|
||||
Features.push_back("+long-calls");
|
||||
else
|
||||
D.Diag(diag::warn_drv_unsupported_longcalls) << (ABICallsArg ? 0 : 1);
|
||||
}
|
||||
|
||||
mips::FloatABI FloatABI = mips::getMipsFloatABI(D, Args);
|
||||
if (FloatABI == mips::FloatABI::Soft) {
|
||||
// FIXME: Note, this is a hack. We need to pass the selected float
|
||||
|
@ -309,8 +319,6 @@ void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple,
|
|||
|
||||
AddTargetFeature(Args, Features, options::OPT_mno_odd_spreg,
|
||||
options::OPT_modd_spreg, "nooddspreg");
|
||||
AddTargetFeature(Args, Features, options::OPT_mlong_calls,
|
||||
options::OPT_mno_long_calls, "long-calls");
|
||||
AddTargetFeature(Args, Features, options::OPT_mmt, options::OPT_mno_mt, "mt");
|
||||
}
|
||||
|
||||
|
|
|
@ -336,12 +336,16 @@
|
|||
// CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"
|
||||
|
||||
// -mlong-call
|
||||
// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \
|
||||
// RUN: %clang -target mips-img-linux-gnu -### -c %s \
|
||||
// RUN: -mno-abicalls -mlong-calls 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=LONG-CALLS-ON %s
|
||||
// RUN: %clang -target mips-img-linux-gnu -### -c %s -mno-long-calls 2>&1 \
|
||||
// RUN: %clang -target mips-img-linux-gnu -### -c %s \
|
||||
// RUN: -mno-abicalls -mno-long-calls 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=LONG-CALLS-OFF %s
|
||||
// RUN: %clang -target mips-img-linux-gnu -### -c %s 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s
|
||||
// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s
|
||||
// LONG-CALLS-ON: "-target-feature" "+long-calls"
|
||||
// LONG-CALLS-OFF: "-target-feature" "-long-calls"
|
||||
// LONG-CALLS-DEF-NOT: "long-calls"
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
// REQUIRES: mips-registered-target
|
||||
// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s
|
||||
// IMPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with the implicit usage of -mabicalls
|
||||
|
||||
// RUN: %clang -### -c -target mips-mti-elf -mlong-calls -mabicalls %s 2>&1 | FileCheck -check-prefix=EXPLICIT %s
|
||||
// EXPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with -mabicalls
|
Loading…
Reference in New Issue