Skip to content

Commit a808f58

Browse files
author
Djordje Todorovic
committed
[clang] Warn about MIPS legacy options
1 parent ab87484 commit a808f58

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2011,6 +2011,87 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args,
20112011
CmdArgs.push_back("-mllvm");
20122012
CmdArgs.push_back("-mips-ssection-threshold=0");
20132013
}
2014+
2015+
// In the case of NanoMips, warn about using all MIPS legacy options that are
2016+
// supported by LLVM.
2017+
if (Triple.isNanoMips()) {
2018+
// -mabicalls option.
2019+
if (auto *A = Args.getLastArg(options::OPT_mabicalls,
2020+
options::OPT_mno_abicalls)) {
2021+
if (A->getOption().matches(options::OPT_mabicalls)) {
2022+
D.Diag(diag::err_opt_not_valid_on_target)
2023+
<< A->getOption().getName() << CPUName;
2024+
}
2025+
}
2026+
2027+
// -mbranch-likely option.
2028+
if (auto *A = Args.getLastArg(options::OPT_mbranch_likely,
2029+
options::OPT_mno_branch_likely)) {
2030+
if (A->getOption().matches(options::OPT_mbranch_likely)) {
2031+
D.Diag(diag::err_opt_not_valid_on_target)
2032+
<< A->getOption().getName() << CPUName;
2033+
}
2034+
}
2035+
2036+
// -mfp32, mfpxx and mfp64 options.
2037+
if (auto *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
2038+
options::OPT_mfp64)) {
2039+
D.Diag(diag::err_opt_not_valid_on_target)
2040+
<< A->getOption().getName() << CPUName;
2041+
}
2042+
2043+
// -mabs= option.
2044+
if (auto *A = Args.getLastArg(options::OPT_mabs_EQ)) {
2045+
D.Diag(diag::err_opt_not_valid_on_target)
2046+
<< A->getOption().getName() << CPUName;
2047+
}
2048+
2049+
// -mnan= option.
2050+
if (auto *A = Args.getLastArg(options::OPT_mnan_EQ)) {
2051+
D.Diag(diag::err_opt_not_valid_on_target)
2052+
<< A->getOption().getName() << CPUName;
2053+
}
2054+
2055+
// -mips16 option.
2056+
if (auto *A =
2057+
Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16)) {
2058+
D.Diag(diag::err_opt_not_valid_on_target)
2059+
<< A->getOption().getName() << CPUName;
2060+
}
2061+
2062+
// -mmicromips option.
2063+
if (auto *A = Args.getLastArg(options::OPT_mmicromips,
2064+
options::OPT_mno_micromips)) {
2065+
D.Diag(diag::err_opt_not_valid_on_target)
2066+
<< A->getOption().getName() << CPUName;
2067+
}
2068+
2069+
// -mrelax-pic-calls option.
2070+
if (auto *A = Args.getLastArg(options::OPT_mrelax_pic_calls,
2071+
options::OPT_mno_relax_pic_calls)) {
2072+
D.Diag(diag::err_opt_not_valid_on_target)
2073+
<< A->getOption().getName() << CPUName;
2074+
}
2075+
2076+
// -mxgot option.
2077+
if (auto *A = Args.getLastArg(options::OPT_mxgot, options::OPT_mno_xgot)) {
2078+
D.Diag(diag::err_opt_not_valid_on_target)
2079+
<< A->getOption().getName() << CPUName;
2080+
}
2081+
2082+
// -modd-spreg option.
2083+
if (auto *A = Args.getLastArg(options::OPT_modd_spreg,
2084+
options::OPT_mno_odd_spreg)) {
2085+
D.Diag(diag::err_opt_not_valid_on_target)
2086+
<< A->getOption().getName() << CPUName;
2087+
}
2088+
2089+
// -mcompact-branches= option.
2090+
if (auto *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) {
2091+
D.Diag(diag::err_opt_not_valid_on_target)
2092+
<< A->getOption().getName() << CPUName;
2093+
}
2094+
}
20142095
}
20152096

20162097
void Clang::AddPPCTargetArgs(const ArgList &Args,

0 commit comments

Comments
 (0)