Update for several APIs in LLVM that now use StringRefs rather than
const char pointers. In turn, push this through Clang APIs as well, simplifying a number of bits of code that was handling the oddities of nullptrs. llvm-svn: 246375
This commit is contained in:
parent
3309ef6f02
commit
d96f37a772
|
|
@ -4241,18 +4241,15 @@ class ARMTargetInfo : public TargetInfo {
|
|||
}
|
||||
|
||||
StringRef getDefaultCPU(StringRef ArchName) const {
|
||||
const char *DefaultCPU = llvm::ARM::getDefaultCPU(ArchName);
|
||||
return DefaultCPU ? DefaultCPU : "";
|
||||
return llvm::ARM::getDefaultCPU(ArchName);
|
||||
}
|
||||
|
||||
StringRef getCPUAttr() const {
|
||||
const char *CPUAttr;
|
||||
// For most sub-arches, the build attribute CPU name is enough.
|
||||
// For Cortex variants, it's slightly different.
|
||||
switch(ArchKind) {
|
||||
default:
|
||||
CPUAttr = llvm::ARM::getCPUAttr(ArchKind);
|
||||
return CPUAttr ? CPUAttr : "";
|
||||
return llvm::ARM::getCPUAttr(ArchKind);
|
||||
case llvm::ARM::AK_ARMV6M:
|
||||
case llvm::ARM::AK_ARMV6SM:
|
||||
case llvm::ARM::AK_ARMV6HL:
|
||||
|
|
|
|||
|
|
@ -310,9 +310,10 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args,
|
|||
MCPU = A->getValue();
|
||||
if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
|
||||
MArch = A->getValue();
|
||||
std::string CPU = Triple.isOSBinFormatMachO()
|
||||
? tools::arm::getARMCPUForMArch(MArch, Triple)
|
||||
: tools::arm::getARMTargetCPU(MCPU, MArch, Triple);
|
||||
std::string CPU =
|
||||
Triple.isOSBinFormatMachO()
|
||||
? tools::arm::getARMCPUForMArch(MArch, Triple).str()
|
||||
: tools::arm::getARMTargetCPU(MCPU, MArch, Triple);
|
||||
StringRef Suffix =
|
||||
tools::arm::getLLVMArchSuffixForARM(CPU,
|
||||
tools::arm::getARMArch(MArch, Triple));
|
||||
|
|
|
|||
|
|
@ -559,7 +559,7 @@ static void checkARMCPUName(const Driver &D, const Arg *A, const ArgList &Args,
|
|||
const llvm::Triple &Triple) {
|
||||
std::string CPU = arm::getARMTargetCPU(CPUName, ArchName, Triple);
|
||||
std::string Arch = arm::getARMArch(ArchName, Triple);
|
||||
if (strcmp(arm::getLLVMArchSuffixForARM(CPU, Arch), "") == 0)
|
||||
if (arm::getLLVMArchSuffixForARM(CPU, Arch).empty())
|
||||
D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
|
||||
}
|
||||
|
||||
|
|
@ -6018,33 +6018,30 @@ const std::string arm::getARMArch(StringRef Arch, const llvm::Triple &Triple) {
|
|||
std::string CPU = llvm::sys::getHostCPUName();
|
||||
if (CPU != "generic") {
|
||||
// Translate the native cpu into the architecture suffix for that CPU.
|
||||
const char *Suffix = arm::getLLVMArchSuffixForARM(CPU, MArch);
|
||||
StringRef Suffix = arm::getLLVMArchSuffixForARM(CPU, MArch);
|
||||
// If there is no valid architecture suffix for this CPU we don't know how
|
||||
// to handle it, so return no architecture.
|
||||
if (strcmp(Suffix, "") == 0)
|
||||
if (Suffix.empty())
|
||||
MArch = "";
|
||||
else
|
||||
MArch = std::string("arm") + Suffix;
|
||||
MArch = std::string("arm") + Suffix.str();
|
||||
}
|
||||
}
|
||||
|
||||
return MArch;
|
||||
}
|
||||
|
||||
/// Get the (LLVM) name of the minimum ARM CPU for the arch we are targeting.
|
||||
const char *arm::getARMCPUForMArch(StringRef Arch, const llvm::Triple &Triple) {
|
||||
StringRef arm::getARMCPUForMArch(StringRef Arch, const llvm::Triple &Triple) {
|
||||
std::string MArch = getARMArch(Arch, Triple);
|
||||
// getARMCPUForArch defaults to the triple if MArch is empty, but empty MArch
|
||||
// here means an -march=native that we can't handle, so instead return no CPU.
|
||||
if (MArch.empty())
|
||||
return "";
|
||||
return StringRef();
|
||||
|
||||
// We need to return an empty string here on invalid MArch values as the
|
||||
// various places that call this function can't cope with a null result.
|
||||
const char *result = Triple.getARMCPUForArch(MArch);
|
||||
if (result)
|
||||
return result;
|
||||
else
|
||||
return "";
|
||||
return Triple.getARMCPUForArch(MArch);
|
||||
}
|
||||
|
||||
/// getARMTargetCPU - Get the (LLVM) name of the ARM cpu we are targeting.
|
||||
|
|
@ -6067,7 +6064,7 @@ std::string arm::getARMTargetCPU(StringRef CPU, StringRef Arch,
|
|||
/// getLLVMArchSuffixForARM - Get the LLVM arch name to use for a particular
|
||||
/// CPU (or Arch, if CPU is generic).
|
||||
// FIXME: This is redundant with -mcpu, why does LLVM use this.
|
||||
const char *arm::getLLVMArchSuffixForARM(StringRef CPU, StringRef Arch) {
|
||||
StringRef arm::getLLVMArchSuffixForARM(StringRef CPU, StringRef Arch) {
|
||||
if (CPU == "generic")
|
||||
return llvm::ARM::getSubArch(
|
||||
llvm::ARM::parseArch(Arch));
|
||||
|
|
|
|||
|
|
@ -244,9 +244,8 @@ std::string getARMTargetCPU(StringRef CPU, StringRef Arch,
|
|||
const llvm::Triple &Triple);
|
||||
const std::string getARMArch(StringRef Arch,
|
||||
const llvm::Triple &Triple);
|
||||
const char* getARMCPUForMArch(StringRef Arch,
|
||||
const llvm::Triple &Triple);
|
||||
const char* getLLVMArchSuffixForARM(StringRef CPU, StringRef Arch);
|
||||
StringRef getARMCPUForMArch(StringRef Arch, const llvm::Triple &Triple);
|
||||
StringRef getLLVMArchSuffixForARM(StringRef CPU, StringRef Arch);
|
||||
|
||||
void appendEBLinkFlags(const llvm::opt::ArgList &Args, ArgStringList &CmdArgs,
|
||||
const llvm::Triple &Triple);
|
||||
|
|
|
|||
Loading…
Reference in New Issue