summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp')
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
index 7c4eccce741..6c98b51fa74 100644
--- a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
@@ -259,7 +259,7 @@ TEST(CoreAPIsTest, LookupFlagsTest) {
EXPECT_EQ(SymbolFlags[Bar], BarFlags) << "Incorrect flags returned for Bar";
}
-TEST(CoreAPIsTest, TestAliases) {
+TEST(CoreAPIsTest, TestBasicAliases) {
ExecutionSession ES;
auto &V = ES.createVSO("V");
@@ -288,6 +288,31 @@ TEST(CoreAPIsTest, TestAliases) {
<< "The \"Qux\" alias should have been overriden";
}
+TEST(CoreAPIsTest, TestChainedAliases) {
+ ExecutionSession ES;
+ auto &V = ES.createVSO("V");
+
+ auto Foo = ES.getSymbolStringPool().intern("foo");
+ auto FooSym = JITEvaluatedSymbol(1U, JITSymbolFlags::Exported);
+
+ auto Bar = ES.getSymbolStringPool().intern("bar");
+
+ auto Baz = ES.getSymbolStringPool().intern("baz");
+
+ cantFail(V.define(absoluteSymbols({{Foo, FooSym}})));
+ cantFail(V.define(symbolAliases({{Baz, {Bar, JITSymbolFlags::Exported}},
+ {Bar, {Foo, JITSymbolFlags::Exported}}})));
+
+ auto Result = lookup({&V}, {Bar, Baz});
+ EXPECT_TRUE(!!Result) << "Unexpected lookup failure";
+ EXPECT_EQ(Result->count(Bar), 1U) << "No result for \"bar\"";
+ EXPECT_EQ(Result->count(Baz), 1U) << "No result for \"baz\"";
+ EXPECT_EQ((*Result)[Bar].getAddress(), FooSym.getAddress())
+ << "\"Bar\"'s address should match \"Foo\"'s";
+ EXPECT_EQ((*Result)[Baz].getAddress(), FooSym.getAddress())
+ << "\"Baz\"'s address should match \"Foo\"'s";
+}
+
TEST(CoreAPIsTest, TestTrivialCircularDependency) {
ExecutionSession ES;
OpenPOWER on IntegriCloud