Author: chandlerc Date: Sun Aug 30 02:51:18 2015 New Revision: 246375 URL: http://llvm.org/viewvc/llvm-project?rev=246375&view=rev Log: 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.
Modified: cfe/trunk/lib/Basic/Targets.cpp cfe/trunk/lib/Driver/ToolChain.cpp cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/lib/Driver/Tools.h Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=246375&r1=246374&r2=246375&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Sun Aug 30 02:51:18 2015 @@ -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: Modified: cfe/trunk/lib/Driver/ToolChain.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChain.cpp?rev=246375&r1=246374&r2=246375&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChain.cpp (original) +++ cfe/trunk/lib/Driver/ToolChain.cpp Sun Aug 30 02:51:18 2015 @@ -310,9 +310,10 @@ std::string ToolChain::ComputeLLVMTriple 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)); Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=246375&r1=246374&r2=246375&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Sun Aug 30 02:51:18 2015 @@ -559,7 +559,7 @@ static void checkARMCPUName(const Driver 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(String 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(StringR /// 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)); Modified: cfe/trunk/lib/Driver/Tools.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.h?rev=246375&r1=246374&r2=246375&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.h (original) +++ cfe/trunk/lib/Driver/Tools.h Sun Aug 30 02:51:18 2015 @@ -244,9 +244,8 @@ std::string getARMTargetCPU(StringRef CP 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); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits