summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-06-16 19:01:17 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-06-16 19:01:17 +0000
commit23a8a06554c1b03932010e5a233fa11656f3363a (patch)
tree6995adc0cdca378b982810109d95f11b803b15f6
parent1d44608cc112ee68ee523c5664f7340e8c81c2fa (diff)
downloadbcm5719-llvm-23a8a06554c1b03932010e5a233fa11656f3363a.tar.gz
bcm5719-llvm-23a8a06554c1b03932010e5a233fa11656f3363a.zip
Change the test for which ABI/CC to use on ARM to be base on the environment
(the last argument of the triple). llvm-svn: 106131
-rw-r--r--clang/lib/CodeGen/TargetInfo.cpp7
-rw-r--r--clang/lib/Driver/Tools.cpp17
-rw-r--r--clang/test/CodeGen/builtin-attributes.c2
-rw-r--r--clang/test/CodeGenCXX/arm-cc.cpp2
4 files changed, 11 insertions, 17 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp
index 608929270d5..1de0ebc41c3 100644
--- a/clang/lib/CodeGen/TargetInfo.cpp
+++ b/clang/lib/CodeGen/TargetInfo.cpp
@@ -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:
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 0a88d9f9796..ae197fbeba6 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -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);
diff --git a/clang/test/CodeGen/builtin-attributes.c b/clang/test/CodeGen/builtin-attributes.c
index 6f13239bf65..afde3fab848 100644
--- a/clang/test/CodeGen/builtin-attributes.c
+++ b/clang/test/CodeGen/builtin-attributes.c
@@ -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() {
diff --git a/clang/test/CodeGenCXX/arm-cc.cpp b/clang/test/CodeGenCXX/arm-cc.cpp
index a81c44d0899..6027746b9ae 100644
--- a/clang/test/CodeGenCXX/arm-cc.cpp
+++ b/clang/test/CodeGenCXX/arm-cc.cpp
@@ -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;
OpenPOWER on IntegriCloud