]> granicus.if.org Git - clang/commitdiff
Change the test for which ABI/CC to use on ARM to be base on the environment
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 16 Jun 2010 19:01:17 +0000 (19:01 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 16 Jun 2010 19:01:17 +0000 (19:01 +0000)
(the last argument of the triple).

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

lib/CodeGen/TargetInfo.cpp
lib/Driver/Tools.cpp
test/CodeGen/builtin-attributes.c
test/CodeGenCXX/arm-cc.cpp

index 608929270d5e9da6acd39dc121d734598e164ee8..1de0ebc41c33383c826cc9a89eeb923a9eb55a67 100644 (file)
@@ -1778,10 +1778,11 @@ void ARMABIInfo::computeInfo(CGFunctionInfo &FI, ASTContext &Context,
 
   const llvm::Triple &Triple(Context.Target.getTriple());
   llvm::CallingConv::ID DefaultCC;
-  if (Triple.getOS() == llvm::Triple::Darwin)
-    DefaultCC = llvm::CallingConv::ARM_APCS;
-  else
+  if (Triple.getEnvironmentName() == "gnueabi" ||
+      Triple.getEnvironmentName() == "eabi")
     DefaultCC = llvm::CallingConv::ARM_AAPCS;
+  else
+    DefaultCC = llvm::CallingConv::ARM_APCS;
 
   switch (getABIKind()) {
   case APCS:
index 0a88d9f9796da71b86c2ec58d1d94a067143668a..ae197fbeba6a9134a91ef0c3c335bf4c79a87ff5 100644 (file)
@@ -394,20 +394,13 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
     ABIName = A->getValue(Args);
   } else {
     // Select the default based on the platform.
-    switch (getToolChain().getTriple().getOS()) {
-      // FIXME: Is this right for non-Darwin and non-Linux?
-    default:
+    llvm::StringRef env = getToolChain().getTriple().getEnvironmentName();
+    if (env == "gnueabi")
+      ABIName = "aapcs-linux";
+    else if (env == "eabi")
       ABIName = "aapcs";
-      break;
-
-    case llvm::Triple::Darwin:
+    else
       ABIName = "apcs-gnu";
-      break;
-
-    case llvm::Triple::Linux:
-      ABIName = "aapcs-linux";
-      break;
-    }
   }
   CmdArgs.push_back("-target-abi");
   CmdArgs.push_back(ABIName);
index 6f13239bf655dc5f5da03ee3384f6e891027d836..afde3fab84816fc2b2f64b4ed2e9527ba9d42970 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple arm-unknown-unknown -emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple arm-unknown-linux-gnueabi -emit-llvm -o - %s | FileCheck %s
 
 // CHECK: declare i32 @printf(i8*, ...)
 void f0() {
index a81c44d089999191e05cd4fa396bec5f580595b5..6027746b9ae80880858cdbbb5f45382be4278143 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 %s -triple=arm-linux-gnueabi -target-abi aapcs -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 %s -triple=arm-unknown-linux-gnueabi -target-abi aapcs -emit-llvm -o - | FileCheck %s
 
 class SMLoc {
  const char *Ptr;