14 #include "llvm/ADT/StringSwitch.h" 15 #include "llvm/Option/ArgList.h" 19 using namespace clang;
24 if (Arg *A = Args.getLastArg(clang::driver::options::OPT_mcpu_EQ)) {
25 StringRef CPUName = A->getValue();
27 if (CPUName ==
"native") {
28 std::string CPU = llvm::sys::getHostCPUName();
29 if (!CPU.empty() && CPU !=
"generic")
35 return llvm::StringSwitch<const char *>(CPUName)
36 .Case(
"common",
"generic")
44 .Case(
"603ev",
"603ev")
59 .Case(
"e500mc",
"e500mc")
60 .Case(
"e5500",
"e5500")
61 .Case(
"power3",
"pwr3")
62 .Case(
"power4",
"pwr4")
63 .Case(
"power5",
"pwr5")
64 .Case(
"power5x",
"pwr5x")
65 .Case(
"power6",
"pwr6")
66 .Case(
"power6x",
"pwr6x")
67 .Case(
"power7",
"pwr7")
68 .Case(
"power8",
"pwr8")
69 .Case(
"power9",
"pwr9")
73 .Case(
"pwr5x",
"pwr5x")
75 .Case(
"pwr6x",
"pwr6x")
79 .Case(
"powerpc",
"ppc")
80 .Case(
"powerpc64",
"ppc64")
81 .Case(
"powerpc64le",
"ppc64le")
89 return llvm::StringSwitch<const char *>(Name)
90 .Case(
"pwr7",
"-mpower7")
91 .Case(
"power7",
"-mpower7")
92 .Case(
"pwr8",
"-mpower8")
93 .Case(
"power8",
"-mpower8")
94 .Case(
"ppc64le",
"-mpower8")
95 .Case(
"pwr9",
"-mpower9")
96 .Case(
"power9",
"-mpower9")
102 std::vector<StringRef> &Features) {
107 Features.push_back(
"-hard-float");
111 Features.push_back(
"+secure-plt");
115 const ArgList &Args) {
116 if (Args.getLastArg(options::OPT_msecure_plt))
118 if (Triple.isOSNetBSD() || Triple.isOSOpenBSD() || Triple.isMusl())
127 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float,
128 options::OPT_mfloat_abi_EQ)) {
129 if (A->getOption().matches(options::OPT_msoft_float))
131 else if (A->getOption().matches(options::OPT_mhard_float))
134 ABI = llvm::StringSwitch<ppc::FloatABI>(A->getValue())
139 D.
Diag(clang::diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args);
154 Arg *A = Args.getLastArg(options::OPT_mabi_EQ);
155 return A && (A->getValue() == StringRef(Value));
DiagnosticBuilder Diag(unsigned DiagID) const
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
Dataflow Directional Tag Classes.