From: Rafael Espindola Date: Wed, 18 Dec 2013 23:41:04 +0000 (+0000) Subject: Fix the DataLayout string produced by clang for NaCl. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=264ee6dc5ca465e36180fe0d12e01feb6f07c79e;p=clang Fix the DataLayout string produced by clang for NaCl. Reviewed by Derek Schuff. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197628 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index b69b0dba54..0de37da809 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -624,7 +624,18 @@ public: this->IntPtrType = TargetInfo::SignedInt; // RegParmMax is inherited from the underlying architecture this->LongDoubleFormat = &llvm::APFloat::IEEEdouble; - this->DescriptionString = "e-p:32:32-i64:64-v128:32"; + if (Triple.getArch() == llvm::Triple::arm) { + this->DescriptionString = "e-p:32:32-i64:64-v128:64:128-n32-S128"; + } else if (Triple.getArch() == llvm::Triple::x86) { + this->DescriptionString = "e-p:32:32-i64:64-n8:16:32-S128"; + } else if (Triple.getArch() == llvm::Triple::x86_64) { + this->DescriptionString = "e-p:32:32-i64:64-s:64-n8:16:32:64-S128"; + } else if (Triple.getArch() == llvm::Triple::mipsel) { + // Handled on mips' setDescriptionString. + } else { + assert(Triple.getArch() == llvm::Triple::le32); + this->DescriptionString = "e-p:32:32-i64:64"; + } } virtual typename Target::CallingConvCheckResult checkCallingConvention( CallingConv CC) const { diff --git a/test/CodeGen/target-data.c b/test/CodeGen/target-data.c index 63743b18d8..5e05338208 100644 --- a/test/CodeGen/target-data.c +++ b/test/CodeGen/target-data.c @@ -60,15 +60,15 @@ // RUN: %clang_cc1 -triple i686-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=I686-NACL -// I686-NACL: target datalayout = "e-p:32:32-i64:64-v128:32" +// I686-NACL: target datalayout = "e-p:32:32-i64:64-n8:16:32-S128" // RUN: %clang_cc1 -triple x86_64-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=X86_64-NACL -// X86_64-NACL: target datalayout = "e-p:32:32-i64:64-v128:32" +// X86_64-NACL: target datalayout = "e-p:32:32-i64:64-s:64-n8:16:32:64-S128" // RUN: %clang_cc1 -triple arm-nacl-gnueabi -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=ARM-NACL -// ARM-NACL: target datalayout = "e-p:32:32-i64:64-v128:32" +// ARM-NACL: target datalayout = "e-p:32:32-i64:64-v128:64:128-n32-S128" // RUN: %clang_cc1 -triple mipsel-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-NACL @@ -76,7 +76,7 @@ // RUN: %clang_cc1 -triple le32-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=LE32-NACL -// LE32-NACL: target datalayout = "e-p:32:32-i64:64-v128:32" +// LE32-NACL: target datalayout = "e-p:32:32-i64:64" // RUN: %clang_cc1 -triple powerpc-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC