aboutsummaryrefslogtreecommitdiffstats
path: root/qv4isel_llvm_p.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2012-11-12 12:22:22 +0100
committerLars Knoll <lars.knoll@digia.com>2012-11-12 23:15:15 +0100
commitcdfbf401e173c39cbef9011a241b736e9f120d36 (patch)
treee5aca0573c81442fcb7d724fabe25f8774a427f8 /qv4isel_llvm_p.h
parent012527ba91ab7688d20c27755ae1112f5113a65f (diff)
Changed the LLVM backend to also support the LLVM JIT.
This is useful for quick LLVM codegen testing. Change-Id: I45778371375b903e154222c47b15411d08085ae5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'qv4isel_llvm_p.h')
-rw-r--r--qv4isel_llvm_p.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/qv4isel_llvm_p.h b/qv4isel_llvm_p.h
index 5c914433bf..2142ea42c2 100644
--- a/qv4isel_llvm_p.h
+++ b/qv4isel_llvm_p.h
@@ -47,6 +47,7 @@
#endif // __clang__
#include <llvm/Module.h>
+#include <llvm/PassManager.h>
#include <llvm/IRBuilder.h>
#ifdef __clang__
@@ -65,7 +66,7 @@ class LLVMInstructionSelection:
public:
LLVMInstructionSelection(llvm::LLVMContext &context);
- llvm::Module *getLLVMModule(IR::Module *module, const QString &moduleName);
+ void buildLLVMModule(IR::Module *module, llvm::Module *llvmModule, llvm::FunctionPassManager *fpm);
llvm::Function *getLLVMFunction(IR::Function *function);
llvm::Function *compileLLVMFunction(IR::Function *function);
llvm::BasicBlock *getLLVMBasicBlock(IR::BasicBlock *block);
@@ -110,6 +111,10 @@ public:
virtual void visitMember(IR::Member *);
private:
+ llvm::Value *createValue(IR::Const *e);
+ llvm::Value *toValuePtr(IR::Expr *e);
+
+private:
llvm::Module *_llvmModule;
llvm::Function *_llvmFunction;
llvm::Value *_llvmValue;
@@ -125,6 +130,7 @@ private:
QHash<IR::BasicBlock *, llvm::BasicBlock *> _blockMap;
QVector<llvm::Value *> _tempMap;
QHash<QString, llvm::Value *> _stringMap;
+ llvm::FunctionPassManager *_fpm;
};
} // end of namespace QQmlJS