#include #include namespace llvm { class TargetMachine; class Module; } class ModuleGen; /* * Holds alls the basic llvm structures */ class CodeGen { public: CodeGen(const char *output_object_filename, const char *output_debug_filename); ~CodeGen(); void Run(); void IntializeLLVM(); void GenerateModule(); void GenerateDebugFiles(); bool Verify(); void OptimizeAndGenerate(); private: const char *output_object_filename; const char *output_debug_filename; std::unique_ptr moduleGenerator; std::unique_ptr triple; std::unique_ptr target_machine; std::unique_ptr module; };