diff options
author | Lang Hames <lhames@gmail.com> | 2018-06-26 01:22:29 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-06-26 01:22:29 +0000 |
commit | ce72161ddf2af2c9ef3eca397404aa3324ec0de9 (patch) | |
tree | b7fdbe12d0a5df7cac49509e626c8bc4d2e5a030 /llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp | |
parent | 4ef61aecbd11f5098a72cb39e476806c301678a2 (diff) | |
download | bcm5719-llvm-ce72161ddf2af2c9ef3eca397404aa3324ec0de9.tar.gz bcm5719-llvm-ce72161ddf2af2c9ef3eca397404aa3324ec0de9.zip |
[ORC] Add a symbolAliases function to the Core APIs.
symbolAliases can be used to define symbol aliases within a VSO.
llvm-svn: 335565
Diffstat (limited to 'llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp')
-rw-r--r-- | llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp index 6e6c7371e1d..5b85ffafc9f 100644 --- a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp @@ -259,6 +259,35 @@ TEST(CoreAPIsTest, LookupFlagsTest) { EXPECT_EQ(SymbolFlags[Bar], BarFlags) << "Incorrect flags returned for Bar"; } +TEST(CoreAPIsTest, TestAliases) { + 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 BarSym = JITEvaluatedSymbol(2U, JITSymbolFlags::Exported); + + auto Baz = ES.getSymbolStringPool().intern("baz"); + auto Qux = ES.getSymbolStringPool().intern("qux"); + + auto QuxSym = JITEvaluatedSymbol(3U, JITSymbolFlags::Exported); + + cantFail(V.define(absoluteSymbols({{Foo, FooSym}, {Bar, BarSym}}))); + cantFail(V.define(symbolAliases({{Baz, {Foo, JITSymbolFlags::Exported}}, + {Qux, {Bar, JITSymbolFlags::Weak}}}))); + cantFail(V.define(absoluteSymbols({{Qux, QuxSym}}))); + + auto Result = lookup({&V}, {Baz, Qux}); + EXPECT_TRUE(!!Result) << "Unexpected lookup failure"; + EXPECT_EQ(Result->count(Baz), 1U) << "No result for \"baz\""; + EXPECT_EQ(Result->count(Qux), 1U) << "No result for \"qux\""; + EXPECT_EQ((*Result)[Baz].getAddress(), FooSym.getAddress()) + << "\"Baz\"'s address should match \"Foo\"'s"; + EXPECT_EQ((*Result)[Qux].getAddress(), QuxSym.getAddress()) + << "The \"Qux\" alias should have been overriden"; +} + TEST(CoreAPIsTest, TestTrivialCircularDependency) { ExecutionSession ES; |