[PATCH] D101746: [ModuleUtils] NFC: Add unit tests for appendToUsedList
Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 3 23:39:55 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGed51156084dd: [ModuleUtils] NFC: Add unit tests for appendToUsedList (authored by Reshabh Sharma <Reshabhkumar.Sharma at amd.com>).
Changed prior to commit:
https://reviews.llvm.org/D101746?vs=342348&id=342653#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D101746/new/
https://reviews.llvm.org/D101746
Files:
llvm/unittests/Transforms/Utils/CMakeLists.txt
llvm/unittests/Transforms/Utils/ModuleUtilsTest.cpp
Index: llvm/unittests/Transforms/Utils/ModuleUtilsTest.cpp
===================================================================
--- /dev/null
+++ 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"));
+}
Index: llvm/unittests/Transforms/Utils/CMakeLists.txt
===================================================================
--- llvm/unittests/Transforms/Utils/CMakeLists.txt
+++ llvm/unittests/Transforms/Utils/CMakeLists.txt
@@ -20,6 +20,7 @@
LocalTest.cpp
LoopRotationUtilsTest.cpp
LoopUtilsTest.cpp
+ ModuleUtilsTest.cpp
ScalarEvolutionExpanderTest.cpp
SizeOptsTest.cpp
SSAUpdaterBulkTest.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101746.342653.patch
Type: text/x-patch
Size: 2939 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210504/eba4589d/attachment.bin>
More information about the llvm-commits
mailing list