27 #if ! defined (octave_jit_util_h) 28 #define octave_jit_util_h 1 30 #include "octave-config.h" 32 #if defined (HAVE_LLVM) 36 #if defined (HAVE_LLVM_IR_DATALAYOUT_H) || defined (HAVE_LLVM_DATALAYOUT_H) 37 # define HAVE_LLVM_DATALAYOUT 47 #if defined (LEGACY_PASSMANAGER) 57 class ExecutionEngine;
73 template <
bool preserveNames>
76 template <
bool preserveNames,
typename T,
typename Inserter>
88 class tree_expression;
113 std::ostream&
operator<< (std::ostream&
os,
const llvm::Value& v);
115 template <
typename HOLDER_T,
typename SUB_T>
122 template <
typename LIST_T,
typename NODE_T>
131 : m_use_head (0), m_use_tail (0), m_use_count (0)
137 m_use_head->stash_value (0);
152 template <
typename LIST_T,
typename NODE_T>
161 : m_value (nullptr), m_next (nullptr), m_prev (nullptr)
166 LIST_T *
value (
void)
const {
return m_value; }
177 NODE_T *sthis =
static_cast<NODE_T *
> (
this);
191 NODE_T *
next (
void)
const {
return m_next; }
193 NODE_T *
prev (
void)
const {
return m_prev; }
203 m_prev->m_next = m_next;
209 m_next->m_prev = m_prev;
227 template <
typename T,
typename U>
230 return dynamic_cast<T *
> (
value);
void stash_value(LIST_T *avalue)
jit_fail_exception(const std::string &reason)
NODE_T * first_use(void) const
virtual ~jit_internal_list(void)
llvm::PassManager PassManager
llvm::FunctionPassManager FunctionPassManager
NODE_T * next(void) const
std::ostream & operator<<(std::ostream &os, const jit_block_list &blocks)
size_t use_count(void) const
LIST_T * value(void) const
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
nd group nd example For each display the value
IRBuilder< true, ConstantFolder, IRBuilderDefaultInserter< true > > IRBuilderD
NODE_T * prev(void) const
jit_internal_list< LIST_T, NODE_T > jit_ilist