[DAGCombiner] Expand combining of FP logical ops to sign-setting FP ops
[llvm-core.git] / unittests / ExecutionEngine / Orc / CompileOnDemandLayerTest.cpp
blob9aa4437550b221c4e6d58f5215f185b1c3c69e10
1 //===----- CompileOnDemandLayerTest.cpp - Unit tests for the COD layer ----===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
10 #include "llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h"
11 #include "OrcTestCommon.h"
12 #include "gtest/gtest.h"
14 using namespace llvm;
15 using namespace llvm::orc;
17 namespace {
19 class DummyTrampolinePool : public orc::TrampolinePool {
20 public:
21 Expected<JITTargetAddress> getTrampoline() {
22 llvm_unreachable("Unimplemented");
26 class DummyCallbackManager : public JITCompileCallbackManager {
27 public:
28 DummyCallbackManager(ExecutionSession &ES)
29 : JITCompileCallbackManager(llvm::make_unique<DummyTrampolinePool>(), ES,
30 0) {}
33 class DummyStubsManager : public orc::IndirectStubsManager {
34 public:
35 Error createStub(StringRef StubName, JITTargetAddress InitAddr,
36 JITSymbolFlags Flags) override {
37 llvm_unreachable("Not implemented");
40 Error createStubs(const StubInitsMap &StubInits) override {
41 llvm_unreachable("Not implemented");
44 JITEvaluatedSymbol findStub(StringRef Name, bool ExportedStubsOnly) override {
45 llvm_unreachable("Not implemented");
48 JITEvaluatedSymbol findPointer(StringRef Name) override {
49 llvm_unreachable("Not implemented");
52 Error updatePointer(StringRef Name, JITTargetAddress NewAddr) override {
53 llvm_unreachable("Not implemented");
57 TEST(CompileOnDemandLayerTest, FindSymbol) {
58 MockBaseLayer<int, std::shared_ptr<Module>> TestBaseLayer;
59 TestBaseLayer.findSymbolImpl =
60 [](const std::string &Name, bool) {
61 if (Name == "foo")
62 return JITSymbol(1, JITSymbolFlags::Exported);
63 return JITSymbol(nullptr);
67 ExecutionSession ES(std::make_shared<SymbolStringPool>());
68 DummyCallbackManager CallbackMgr(ES);
70 auto GetResolver =
71 [](orc::VModuleKey) -> std::shared_ptr<llvm::orc::SymbolResolver> {
72 llvm_unreachable("Should never be called");
75 auto SetResolver = [](orc::VModuleKey, std::shared_ptr<orc::SymbolResolver>) {
76 llvm_unreachable("Should never be called");
79 llvm::orc::CompileOnDemandLayer<decltype(TestBaseLayer)> COD(
80 ES, TestBaseLayer, GetResolver, SetResolver,
81 [](Function &F) { return std::set<Function *>{&F}; }, CallbackMgr,
82 [] { return llvm::make_unique<DummyStubsManager>(); }, true);
84 auto Sym = COD.findSymbol("foo", true);
86 EXPECT_TRUE(!!Sym) << "CompileOnDemand::findSymbol should call findSymbol in "
87 "the base layer.";