LLVM: include/llvm/ExecutionEngine/Orc/IRCompileLayer.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_EXECUTIONENGINE_ORC_IRCOMPILELAYER_H

14#define LLVM_EXECUTIONENGINE_ORC_IRCOMPILELAYER_H

15

22#include

23#include

24#include

25

26namespace llvm {

27

29

30namespace orc {

31

33public:

35 public:

42

43 protected:

45

46 private:

48 };

49

52

54 std::unique_ptr Compile);

55

57

58 void setNotifyCompiled(NotifyCompiledFunction NotifyCompiled);

59

60 void emit(std::unique_ptr R,

62

63private:

64 mutable std::mutex IRLayerMutex;

66 std::unique_ptr Compile;

68 NotifyCompiledFunction NotifyCompiled = NotifyCompiledFunction();

69};

70

71}

72}

73

74#endif

Tagged union holding either a T or a Error.

A Module instance is used to store all the information related to an LLVM module.

An ExecutionSession represents a running JIT program.

Definition IRCompileLayer.h:34

virtual Expected< std::unique_ptr< MemoryBuffer > > operator()(Module &M)=0

IRCompiler(IRSymbolMapper::ManglingOptions MO)

Definition IRCompileLayer.h:36

const IRSymbolMapper::ManglingOptions & getManglingOptions() const

Definition IRCompileLayer.h:38

IRSymbolMapper::ManglingOptions & manglingOptions()

Definition IRCompileLayer.h:44

std::function< void( MaterializationResponsibility &R, ThreadSafeModule TSM)> NotifyCompiledFunction

Definition IRCompileLayer.h:50

IRCompiler & getCompiler()

Definition IRCompileLayer.h:56

IRCompileLayer(ExecutionSession &ES, ObjectLayer &BaseLayer, std::unique_ptr< IRCompiler > Compile)

IRLayer(ExecutionSession &ES, const IRSymbolMapper::ManglingOptions *&MO)

Tracks responsibility for materialization, and mediates interactions between MaterializationUnits and...

Interface for Layers that accept object files.

An LLVM Module together with a shared ThreadSafeContext.

This is an optimization pass for GlobalISel generic memory operations.

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

Implement std::hash so that hash_code can be used in STL containers.