summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp
diff options
context:
space:
mode:
authorAmy Huang <akhuang@google.com>2019-09-18 22:15:58 +0000
committerAmy Huang <akhuang@google.com>2019-09-18 22:15:58 +0000
commit68eae4985995f06a8bbfadb9cf420a66cbfbe04a (patch)
tree158931587ca48c37796bb118c489590918548b19 /llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp
parente40ef12bfad0108024d7d3979565096843bb29a7 (diff)
downloadbcm5719-llvm-68eae4985995f06a8bbfadb9cf420a66cbfbe04a.tar.gz
bcm5719-llvm-68eae4985995f06a8bbfadb9cf420a66cbfbe04a.zip
Add AutoUpgrade function to add new address space datalayout string to existing datalayouts.
Summary: Add function to AutoUpgrade to change the datalayout of old X86 datalayout strings. This adds "-p270:32:32-p271:32:32-p272:64:64" to X86 datalayouts that are otherwise valid and don't already contain it. This also removes the compatibility changes in https://reviews.llvm.org/D66843. Datalayout change in https://reviews.llvm.org/D64931. Reviewers: rnk, echristo Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67631 llvm-svn: 372267
Diffstat (limited to 'llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp')
-rw-r--r--llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp b/llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp
new file mode 100644
index 00000000000..c92418136e5
--- /dev/null
+++ b/llvm/unittests/Bitcode/DataLayoutUpgradeTest.cpp
@@ -0,0 +1,59 @@
+//===- DataLayoutUpgradeTest.cpp - Tests for DataLayout upgrades ----------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/IR/AutoUpgrade.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+
+namespace {
+
+TEST(DataLayoutUpgradeTest, ValidDataLayoutUpgrade) {
+ std::string DL1 =
+ UpgradeDataLayoutString("e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128",
+ "x86_64-unknown-linux-gnu");
+ std::string DL2 = UpgradeDataLayoutString(
+ "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32", "i686-pc-windows-msvc");
+ std::string DL3 = UpgradeDataLayoutString("e-m:o-i64:64-i128:128-n32:64-S128",
+ "x86_64-apple-macosx");
+ EXPECT_EQ(DL1, "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64"
+ "-f80:128-n8:16:32:64-S128");
+ EXPECT_EQ(DL2, "e-m:w-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64"
+ "-f80:32-n8:16:32-S32");
+ EXPECT_EQ(DL3, "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128"
+ "-n32:64-S128");
+}
+
+TEST(DataLayoutUpgradeTest, NoDataLayoutUpgrade) {
+ std::string DL1 = UpgradeDataLayoutString(
+ "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32"
+ "-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+ "-n8:16:32:64-S128",
+ "x86_64-unknown-linux-gnu");
+ std::string DL2 = UpgradeDataLayoutString("e-p:32:32", "i686-apple-darwin9");
+ std::string DL3 = UpgradeDataLayoutString("e-m:e-i64:64-n32:64",
+ "powerpc64le-unknown-linux-gnu");
+ std::string DL4 =
+ UpgradeDataLayoutString("e-m:o-i64:64-i128:128-n32:64-S128", "aarch64--");
+ EXPECT_EQ(DL1, "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64"
+ "-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64"
+ "-f80:128:128-n8:16:32:64-S128");
+ EXPECT_EQ(DL2, "e-p:32:32");
+ EXPECT_EQ(DL3, "e-m:e-i64:64-n32:64");
+ EXPECT_EQ(DL4, "e-m:o-i64:64-i128:128-n32:64-S128");
+}
+
+TEST(DataLayoutUpgradeTest, EmptyDataLayout) {
+ std::string DL1 = UpgradeDataLayoutString("", "x86_64-unknown-linux-gnu");
+ std::string DL2 = UpgradeDataLayoutString(
+ "e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128", "");
+ EXPECT_EQ(DL1, "");
+ EXPECT_EQ(DL2, "e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128");
+}
+
+} // end namespace
OpenPOWER on IntegriCloud