#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, bool verify); ~CodeGen(); void Run(); void InitializeLLVM(); void GenerateModule(); void GenerateDebugFiles(); bool Verify(); void OptimizeAndGenerate(); private: const char *output_object_filename; const char *output_debug_filename; bool verify; std::unique_ptr moduleGenerator; std::unique_ptr triple; std::unique_ptr target_machine; std::unique_ptr module; };