]> granicus.if.org Git - clang/commitdiff
[ARM] Follow-up to fix crash "-target arm -mcpu=generic", without "-march="
authorVladimir Sukharev <vladimir.sukharev@arm.com>
Thu, 24 Sep 2015 09:55:08 +0000 (09:55 +0000)
committerVladimir Sukharev <vladimir.sukharev@arm.com>
Thu, 24 Sep 2015 09:55:08 +0000 (09:55 +0000)
Fix of dangling StringRef after temporary std::string is destroyed

Follow-up to: http://reviews.llvm.org/rL248370

Reviewers: alexfh

Subscribers: cfe-commits

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248479 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp

index e8a0852cb8c3c5e7cf865a92630378f7b1bcefb4..406159874643f36bb8fceff4429e36c80ac0a53e 100644 (file)
@@ -6164,13 +6164,13 @@ std::string arm::getARMTargetCPU(StringRef CPU, StringRef Arch,
 StringRef arm::getLLVMArchSuffixForARM(StringRef CPU, StringRef Arch,
                                        const llvm::Triple &Triple) {
   unsigned ArchKind;
-  Arch = tools::arm::getARMArch(Arch, Triple);
   if (CPU == "generic") {
-    ArchKind = llvm::ARM::parseArch(Arch);
+    StringRef ARMArch = tools::arm::getARMArch(Arch, Triple);
+    ArchKind = llvm::ARM::parseArch(ARMArch);
     if (ArchKind == llvm::ARM::AK_INVALID)
       // In case of generic Arch, i.e. "arm",
       // extract arch from default cpu of the Triple
-      ArchKind = llvm::ARM::parseCPUArch(Triple.getARMCPUForArch(Arch));
+      ArchKind = llvm::ARM::parseCPUArch(Triple.getARMCPUForArch(ARMArch));
   } else {
     ArchKind = llvm::ARM::parseCPUArch(CPU);
   }