diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2012-11-12 12:22:22 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@digia.com> | 2012-11-12 23:15:15 +0100 |
commit | cdfbf401e173c39cbef9011a241b736e9f120d36 (patch) | |
tree | e5aca0573c81442fcb7d724fabe25f8774a427f8 /qv4isel_llvm_p.h | |
parent | 012527ba91ab7688d20c27755ae1112f5113a65f (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.h | 8 |
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 |