]> granicus.if.org Git - clang/commitdiff
[AArch64] Unconditionally pass subtarget feature reserve-x18 on Darwin.
authorAkira Hatanaka <ahatanaka@apple.com>
Mon, 27 Jul 2015 19:29:04 +0000 (19:29 +0000)
committerAkira Hatanaka <ahatanaka@apple.com>
Mon, 27 Jul 2015 19:29:04 +0000 (19:29 +0000)
After r243308, the front-end is responsible for checking the target OS and
passing reserve-x18 if the target is Darwin.

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

lib/Driver/Tools.cpp
test/Driver/aarch64-fixed-x18.c

index becd9baffcf071482026e309ab39a5e37e8c0d19..b2e8403fe1fb2b2234a710f70c8f4d88d039d06f 100644 (file)
@@ -1927,7 +1927,9 @@ getAArch64MicroArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu,
   return getAArch64MicroArchFeaturesFromMtune(D, CPU, Args, Features);
 }
 
-static void getAArch64TargetFeatures(const Driver &D, const ArgList &Args,
+static void getAArch64TargetFeatures(const Driver &D,
+                                     const llvm::Triple &Triple,
+                                     const ArgList &Args,
                                      std::vector<const char *> &Features) {
   Arg *A;
   bool success = true;
@@ -1968,7 +1970,7 @@ static void getAArch64TargetFeatures(const Driver &D, const ArgList &Args,
       Features.push_back("-crc");
   }
 
-  if (Args.hasArg(options::OPT_ffixed_x18))
+  if (Args.hasArg(options::OPT_ffixed_x18) || Triple.isOSDarwin())
     Features.push_back("+reserve-x18");
 }
 
@@ -2003,7 +2005,7 @@ static void getTargetFeatures(const Driver &D, const llvm::Triple &Triple,
     break;
   case llvm::Triple::aarch64:
   case llvm::Triple::aarch64_be:
-    getAArch64TargetFeatures(D, Args, Features);
+    getAArch64TargetFeatures(D, Triple, Args, Features);
     break;
   case llvm::Triple::x86:
   case llvm::Triple::x86_64:
index 631865f9aa4af0dd7d6fe12ecf44c5a451f77d32..a79ac6cbcda851bd08fe5c2dbef27e1d65fe692f 100644 (file)
@@ -1,4 +1,9 @@
 // RUN: %clang -target aarch64-none-gnu -ffixed-x18 -### %s 2> %t
 // RUN: FileCheck --check-prefix=CHECK-FIXED-X18 < %t %s
+// RUN: %clang -target aarch64-none-gnu -### %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-NO-FIXED-X18 < %t %s
+// RUN: %clang -target -arm64-apple-ios -### %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-FIXED-X18 < %t %s
 
 // CHECK-FIXED-X18: "-target-feature" "+reserve-x18"
+// CHECK-NO-FIXED-X18-NOT: "-target-feature" "+reserve-x18"