[llvm] [LTO] Introduce a new class ImportIDTable (PR #106503)
Jan Voung via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 29 07:46:32 PDT 2024
================
@@ -0,0 +1,79 @@
+//===- ImportIDTableTests.cpp - Unit tests for ImportIDTable --------------===//
+//
+// 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/IPO/FunctionImport.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include <set>
+#include <type_traits>
+
+using namespace llvm;
+
+TEST(ImportIDTableTests, Basic) {
+ FunctionImporter::ImportIDTable Table;
+
+ auto [Def, Decl] = Table.createImportIDs("mod", 123U);
+ auto [Def2, Decl2] = Table.createImportIDs("stuff", 456U);
+
+ // Def and Decl must be of the same unsigned integer type.
+ static_assert(
+ std::is_unsigned_v<FunctionImporter::ImportIDTable::ImportIDTy>);
+ static_assert(std::is_same_v<FunctionImporter::ImportIDTable::ImportIDTy,
+ decltype(Def)>);
+ static_assert(std::is_same_v<FunctionImporter::ImportIDTable::ImportIDTy,
+ decltype(Decl)>);
+
+ // Check that all IDs are unique.
+ std::set<FunctionImporter::ImportIDTable::ImportIDTy> IDs = {Def, Decl, Def2,
+ Decl2};
+ EXPECT_THAT(IDs, ::testing::SizeIs(4));
+
+ // Verify what Def maps to.
+ auto DefTuple = Table.lookup(Def);
+ EXPECT_EQ(std::get<0>(DefTuple), StringRef("mod"));
+ EXPECT_EQ(std::get<1>(DefTuple), 123U);
+ EXPECT_EQ(std::get<2>(DefTuple), GlobalValueSummary::Definition);
+
+ // Verify what Def maps to.
+ auto DeclTuple = Table.lookup(Decl);
+ EXPECT_EQ(std::get<0>(DeclTuple), StringRef("mod"));
+ EXPECT_EQ(std::get<1>(DeclTuple), 123U);
+ EXPECT_EQ(std::get<2>(DeclTuple), GlobalValueSummary::Declaration);
+
+ // Verify what Def2 maps to.
+ auto Def2Tuple = Table.lookup(Def2);
+ EXPECT_EQ(std::get<0>(Def2Tuple), StringRef("stuff"));
+ EXPECT_EQ(std::get<1>(Def2Tuple), 456U);
+ EXPECT_EQ(std::get<2>(Def2Tuple), GlobalValueSummary::Definition);
+
+ // Verify what Def2 maps to.
+ auto Decl2Tuple = Table.lookup(Decl2);
+ EXPECT_EQ(std::get<0>(Decl2Tuple), StringRef("stuff"));
+ EXPECT_EQ(std::get<1>(Decl2Tuple), 456U);
+ EXPECT_EQ(std::get<2>(Decl2Tuple), GlobalValueSummary::Declaration);
----------------
jvoung wrote:
may be good to also do a getImportIds() that returns a present optional (vs the `Missing`) ?
https://github.com/llvm/llvm-project/pull/106503
More information about the llvm-commits
mailing list