CompileContext and options class for the llc compiler.

llvm-svn: 227
This commit is contained in:
Vikram S. Adve 2001-07-21 12:39:30 +00:00
parent 5c66a797a2
commit ad5ac0fab4
2 changed files with 153 additions and 0 deletions

View File

@ -0,0 +1,69 @@
// $Id$ -*-c++-*-
//***************************************************************************
// class CompileContext
//
// Purpose:
// Holds the common option and target information for a compilation run.
//
// History:
// 07/15/01 - vadve - Created
//
//**************************************************************************/
#ifndef LLVM_LLC_COMPILECONTEXT_H
#define LLVM_LLC_COMPILECONTEXT_H
//************************** System Include Files **************************/
#include <string>
//*************************** User Include Files ***************************/
#include "llvm/Codegen/Sparc.h"
#include "llvm/LLC/LLCOptions.h"
//************************** Forward Declarations **************************/
class ProgramOptions;
class TargetMachine;
//---------------------------------------------------------------------------
// class CompileContext
//---------------------------------------------------------------------------
class CompileContext: public Unique
{
private:
LLCOptions* options;
TargetMachine* targetMachine;
public:
/*ctor*/ CompileContext (int argc, const char **argv, const char** envp);
/*dtor*/ virtual ~CompileContext ();
const LLCOptions& getOptions () const { return *options; }
const TargetMachine& getTarget () const { return *targetMachine; }
TargetMachine& getTarget () { return *targetMachine; }
};
inline
CompileContext::CompileContext(int argc, const char **argv, const char** envp)
{
options = new LLCOptions(argc, argv, envp);
targetMachine = new UltraSparc;
}
inline
CompileContext::~CompileContext()
{
delete options;
delete targetMachine;
}
//**************************************************************************/
#endif

View File

@ -0,0 +1,84 @@
// $Id$ -*-c++-*-
//**************************************************************************/
// File:
// LLCOptions.h
//
// Purpose:
// Options for the llc compiler.
//
// History:
// 7/15/01 - Vikram Adve - Created
//
//**************************************************************************/
#ifndef LLVM_LLC_LLCOPTIONS_H
#define LLVM_LLC_LLCOPTIONS_H
//************************** System Include Files **************************/
#include <iostream.h>
#include <unistd.h>
//*************************** User Include Files ***************************/
#include "llvm/Support/ProgramOptions.h"
#include "llvm/Support/ProgramOption.h"
//************************ Option Name Definitions *************************/
const char* const HELP_OPT = "help";
const char* const DEBUG_OPT = "d";
const char* const QUIET_OPT = "q";
const char* const DEBUG_INSTR_SELECT_OPT= "debug_select";
const char* const OUTFILENAME_OPT = "o";
//---------------------------------------------------------------------------
// class LLCOptions
//---------------------------------------------------------------------------
class LLCOptions : public ProgramOptions {
public:
/*ctor*/ LLCOptions (int _argc,
const char* _argv[],
const char* _envp[]);
/*dtor*/ virtual ~LLCOptions ();
const string& getInputFileName() const { return inputFileName; }
const string& getOutputFileName() const { return outputFileName; }
protected:
//--------------------------------------------------------------------
// Initialize for all our compiler options (called by constructors).
//--------------------------------------------------------------------
void InitializeOptions();
//--------------------------------------------------------------------
// Make sure the parse went ok.
//--------------------------------------------------------------------
void CheckParse();
//--------------------------------------------------------------------
// Parse arguments after all options are consumed.
// This is called after a successful ParseArgs.
//--------------------------------------------------------------------
virtual void ParseExtraArgs();
//--------------------------------------------------------------------
// Print message describing which arguments and options are
// required, optional, mutually exclusive, ...
// called in ProgramOptions::Usage() method
//--------------------------------------------------------------------
virtual void PrintUsage(ostream& stream) const;
private:
string inputFileName;
string outputFileName;
};
//**************************************************************************/
#endif