[llvm] ed51156 - [ModuleUtils] NFC: Add unit tests for appendToUsedList
Reshabh Sharma via llvm-commits
llvm-commits at lists.llvm.org
Mon May 3 23:39:41 PDT 2021
Author: Reshabh Sharma
Date: 2021-05-04T12:05:50+05:30
New Revision: ed51156084dd84aa10d78eac14a66b36663069bc
URL: https://github.com/llvm/llvm-project/commit/ed51156084dd84aa10d78eac14a66b36663069bc
DIFF: https://github.com/llvm/llvm-project/commit/ed51156084dd84aa10d78eac14a66b36663069bc.diff
LOG: [ModuleUtils] NFC: Add unit tests for appendToUsedList
This patch adds initial unit tests for appendToUsedList
in the ModuleUtils. It specifically tests changes from
https://reviews.llvm.org/D101363 which intent to allow
insertion of globals in non-zero address spaces into the
llvm used lists.
Reviewed by: dblaikie
Differential Revision: https://reviews.llvm.org/D101746
Added:
llvm/unittests/Transforms/Utils/ModuleUtilsTest.cpp
Modified:
llvm/unittests/Transforms/Utils/CMakeLists.txt
Removed:
################################################################################
diff --git a/llvm/unittests/Transforms/Utils/CMakeLists.txt b/llvm/unittests/Transforms/Utils/CMakeLists.txt
index c27af27bbf6f9..af26c24b40d86 100644
--- a/llvm/unittests/Transforms/Utils/CMakeLists.txt
+++ b/llvm/unittests/Transforms/Utils/CMakeLists.txt
@@ -20,6 +20,7 @@ add_llvm_unittest(UtilsTests
LocalTest.cpp
LoopRotationUtilsTest.cpp
LoopUtilsTest.cpp
+ ModuleUtilsTest.cpp
ScalarEvolutionExpanderTest.cpp
SizeOptsTest.cpp
SSAUpdaterBulkTest.cpp
diff --git a/llvm/unittests/Transforms/Utils/ModuleUtilsTest.cpp b/llvm/unittests/Transforms/Utils/ModuleUtilsTest.cpp
new file mode 100644
index 0000000000000..5a1d9245f1595
--- /dev/null
+++ b/llvm/unittests/Transforms/Utils/ModuleUtilsTest.cpp
@@ -0,0 +1,70 @@
+//===- ModuleUtilsTest.cpp - Unit tests for Module utility ----===//
+//
+// 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/Transforms/Utils/ModuleUtils.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/AsmParser/Parser.h"
+#include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/Module.h"
+#include "llvm/Support/SourceMgr.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+
+static std::unique_ptr<Module> parseIR(LLVMContext &C, const char *IR) {
+ SMDiagnostic Err;
+ std::unique_ptr<Module> Mod = parseAssemblyString(IR, Err, C);
+ if (!Mod)
+ Err.print("ModuleUtilsTest", errs());
+ return Mod;
+}
+
+static int getUsedListSize(Module &M, StringRef Name) {
+ auto *UsedList = M.getGlobalVariable(Name);
+ if (!UsedList)
+ return 0;
+ auto *UsedListBaseArrayType =
+ cast<ArrayType>(UsedList->getType()->getElementType());
+ return UsedListBaseArrayType->getNumElements();
+}
+
+TEST(ModuleUtils, AppendToUsedList1) {
+ LLVMContext C;
+
+ std::unique_ptr<Module> M = parseIR(
+ C, R"(@x = addrspace(4) global [2 x i32] zeroinitializer, align 4)");
+ SmallVector<GlobalValue *, 2> Globals;
+ for (auto &G : M->globals()) {
+ Globals.push_back(&G);
+ }
+ EXPECT_EQ(0, getUsedListSize(*M, "llvm.compiler.used"));
+ appendToCompilerUsed(*M, Globals);
+ EXPECT_EQ(1, getUsedListSize(*M, "llvm.compiler.used"));
+
+ EXPECT_EQ(0, getUsedListSize(*M, "llvm.used"));
+ appendToUsed(*M, Globals);
+ EXPECT_EQ(1, getUsedListSize(*M, "llvm.used"));
+}
+
+TEST(ModuleUtils, AppendToUsedList2) {
+ LLVMContext C;
+
+ std::unique_ptr<Module> M =
+ parseIR(C, R"(@x = global [2 x i32] zeroinitializer, align 4)");
+ SmallVector<GlobalValue *, 2> Globals;
+ for (auto &G : M->globals()) {
+ Globals.push_back(&G);
+ }
+ EXPECT_EQ(0, getUsedListSize(*M, "llvm.compiler.used"));
+ appendToCompilerUsed(*M, Globals);
+ EXPECT_EQ(1, getUsedListSize(*M, "llvm.compiler.used"));
+
+ EXPECT_EQ(0, getUsedListSize(*M, "llvm.used"));
+ appendToUsed(*M, Globals);
+ EXPECT_EQ(1, getUsedListSize(*M, "llvm.used"));
+}
More information about the llvm-commits
mailing list