summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ExecutionEngine
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-01-05 22:50:43 +0000
committerLang Hames <lhames@gmail.com>2018-01-05 22:50:43 +0000
commit1097dc47eb69b0e488767cb3f0362c10d5e642e2 (patch)
tree54acc218584cf871d06077e64bc6ee721979cc09 /llvm/unittests/ExecutionEngine
parentb96a3a4fe55d65bb9e595410ca682892e271624f (diff)
downloadbcm5719-llvm-1097dc47eb69b0e488767cb3f0362c10d5e642e2.tar.gz
bcm5719-llvm-1097dc47eb69b0e488767cb3f0362c10d5e642e2.zip
[ORC] Re-apply just the AsynchronousSymbolLookup class from r321838 while I
investigate builder / test failures. llvm-svn: 321910
Diffstat (limited to 'llvm/unittests/ExecutionEngine')
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt1
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp50
2 files changed, 51 insertions, 0 deletions
diff --git a/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt b/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt
index dd0281d0b73..25697300e33 100644
--- a/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt
+++ b/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt
@@ -11,6 +11,7 @@ set(LLVM_LINK_COMPONENTS
add_llvm_unittest(OrcJITTests
CompileOnDemandLayerTest.cpp
+ CoreAPIsTest.cpp
IndirectionUtilsTest.cpp
GlobalMappingLayerTest.cpp
LazyEmittingLayerTest.cpp
diff --git a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
new file mode 100644
index 00000000000..6c33abbc811
--- /dev/null
+++ b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
@@ -0,0 +1,50 @@
+//===----------- CoreAPIsTest.cpp - Unit tests for Core ORC APIs ----------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ExecutionEngine/Orc/Core.h"
+#include "OrcTestCommon.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+using namespace llvm::orc;
+
+namespace {
+
+TEST(CoreAPIsTest, AsynchronousSymbolQuerySuccessfulResolutionOnly) {
+ SymbolStringPool SP;
+ auto Foo = SP.intern("foo");
+ constexpr JITTargetAddress FakeAddr = 0xdeadbeef;
+ SymbolNameSet Names({Foo});
+
+ bool OnResolutionRun = false;
+ bool OnReadyRun = false;
+ auto OnResolution =
+ [&](Expected<SymbolMap> Result) {
+ EXPECT_TRUE(!!Result) << "Resolution unexpectedly returned error";
+ auto I = Result->find(Foo);
+ EXPECT_NE(I, Result->end()) << "Could not find symbol definition";
+ EXPECT_EQ(cantFail(I->second.getAddress()), FakeAddr)
+ << "Resolution returned incorrect result";
+ OnResolutionRun = true;
+ };
+ auto OnReady =
+ [&](Error Err) {
+ cantFail(std::move(Err));
+ OnResolutionRun = true;
+ };
+
+ AsynchronousSymbolQuery Q(Names, OnResolution, OnReady);
+
+ Q.setDefinition(Foo, JITSymbol(FakeAddr, JITSymbolFlags::Exported));
+
+ EXPECT_TRUE(OnResolutionRun) << "OnResolutionCallback was not run";
+ EXPECT_FALSE(OnReadyRun) << "OnReady unexpectedly run";
+}
+
+}
OpenPOWER on IntegriCloud