| //===-- RenderScriptExpressionOpts.h ----------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLDB_RENDERSCRIPT_EXPROPTS_H |
| #define LLDB_RENDERSCRIPT_EXPROPTS_H |
| |
| // C Includes |
| // C++ Includes |
| // Other libraries and framework includes |
| #include "llvm/IR/Module.h" |
| #include "llvm/Support/TargetRegistry.h" |
| #include "llvm/Target/TargetMachine.h" |
| #include "llvm/Target/TargetOptions.h" |
| |
| // Project includes |
| #include "lldb/Target/LanguageRuntime.h" |
| #include "lldb/Target/Process.h" |
| #include "lldb/lldb-private.h" |
| |
| #include "RenderScriptRuntime.h" |
| #include "RenderScriptx86ABIFixups.h" |
| |
| // RenderScriptRuntimeModulePass is a simple llvm::ModulesPass that is used |
| // during expression evaluation to apply RenderScript-specific fixes for |
| // expression evaluation. In particular this is used to make expression IR |
| // conformant with the ABI generated by the slang frontend. This ModulePass is |
| // executed in ClangExpressionParser::PrepareForExecution whenever an |
| // expression's DWARF language is eLanguageTypeExtRenderscript |
| |
| class RenderScriptRuntimeModulePass : public llvm::ModulePass { |
| public: |
| static char ID; |
| RenderScriptRuntimeModulePass(const lldb_private::Process *process) |
| : ModulePass(ID), m_process_ptr(process) {} |
| |
| bool runOnModule(llvm::Module &module); |
| |
| private: |
| const lldb_private::Process *m_process_ptr; |
| }; |
| |
| namespace lldb_private { |
| namespace lldb_renderscript { |
| struct RSIRPasses : public lldb_private::LLVMUserExpression::IRPasses { |
| RSIRPasses(lldb_private::Process *process); |
| |
| ~RSIRPasses(); |
| }; |
| } // namespace lldb_renderscript |
| } // namespace lldb_private |
| #endif |