15 #include "llvm/ADT/StringSwitch.h" 16 #include "llvm/Option/ArgList.h" 20 using namespace clang;
25 if (Arg *A = Args.getLastArg(clang::driver::options::OPT_mcpu_EQ)) {
26 StringRef CPUName = A->getValue();
28 if (CPUName ==
"native") {
29 std::string CPU = llvm::sys::getHostCPUName();
30 if (!CPU.empty() && CPU !=
"generic")
36 return llvm::StringSwitch<const char *>(CPUName)
37 .Case(
"common",
"generic")
45 .Case(
"603ev",
"603ev")
60 .Case(
"e500mc",
"e500mc")
61 .Case(
"e5500",
"e5500")
62 .Case(
"power3",
"pwr3")
63 .Case(
"power4",
"pwr4")
64 .Case(
"power5",
"pwr5")
65 .Case(
"power5x",
"pwr5x")
66 .Case(
"power6",
"pwr6")
67 .Case(
"power6x",
"pwr6x")
68 .Case(
"power7",
"pwr7")
69 .Case(
"power8",
"pwr8")
70 .Case(
"power9",
"pwr9")
74 .Case(
"pwr5x",
"pwr5x")
76 .Case(
"pwr6x",
"pwr6x")
80 .Case(
"powerpc",
"ppc")
81 .Case(
"powerpc64",
"ppc64")
82 .Case(
"powerpc64le",
"ppc64le")
90 return llvm::StringSwitch<const char *>(Name)
91 .Case(
"pwr7",
"-mpower7")
92 .Case(
"power7",
"-mpower7")
93 .Case(
"pwr8",
"-mpower8")
94 .Case(
"power8",
"-mpower8")
95 .Case(
"ppc64le",
"-mpower8")
96 .Case(
"pwr9",
"-mpower9")
97 .Case(
"power9",
"-mpower9")
103 std::vector<StringRef> &Features) {
108 Features.push_back(
"-hard-float");
112 Features.push_back(
"+secure-plt");
116 const ArgList &Args) {
117 if (Args.getLastArg(options::OPT_msecure_plt))
119 if (Triple.isOSOpenBSD())
128 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float,
129 options::OPT_mfloat_abi_EQ)) {
130 if (A->getOption().matches(options::OPT_msoft_float))
132 else if (A->getOption().matches(options::OPT_mhard_float))
135 ABI = llvm::StringSwitch<ppc::FloatABI>(A->getValue())
140 D.
Diag(clang::diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args);
155 Arg *A = Args.getLastArg(options::OPT_mabi_EQ);
156 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.