mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-07-21 18:29:45 +00:00
This commit connects the machine function analysis pass (which creates machine functions) to the MIR parser, which will initialize the machine functions with the state from the MIR file and reconstruct the machine IR. This commit introduces a new interface called 'MachineFunctionInitializer', which can be used to provide custom initialization for the machine functions. This commit also introduces a new diagnostic class called 'DiagnosticInfoMIRParser' which is used for MIR parsing errors. This commit modifies the default diagnostic handling in LLVMContext - now the the diagnostics are printed directly into llvm::errs() so that the MIR parsing errors can be printed with colours. Reviewers: Justin Bogner Differential Revision: http://reviews.llvm.org/D9928 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239753 91177308-0d34-0410-b5e6-96231b3b80d8
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
//===-- MachineFunctionAnalysis.h - Owner of MachineFunctions ----*-C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the MachineFunctionAnalysis class.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H
|
|
#define LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H
|
|
|
|
#include "llvm/Pass.h"
|
|
|
|
namespace llvm {
|
|
|
|
class MachineFunction;
|
|
class MachineFunctionInitializer;
|
|
class TargetMachine;
|
|
|
|
/// MachineFunctionAnalysis - This class is a Pass that manages a
|
|
/// MachineFunction object.
|
|
struct MachineFunctionAnalysis : public FunctionPass {
|
|
private:
|
|
const TargetMachine &TM;
|
|
MachineFunction *MF;
|
|
unsigned NextFnNum;
|
|
MachineFunctionInitializer *MFInitializer;
|
|
|
|
public:
|
|
static char ID;
|
|
explicit MachineFunctionAnalysis(const TargetMachine &tm,
|
|
MachineFunctionInitializer *MFInitializer);
|
|
~MachineFunctionAnalysis() override;
|
|
|
|
MachineFunction &getMF() const { return *MF; }
|
|
|
|
const char* getPassName() const override {
|
|
return "Machine Function Analysis";
|
|
}
|
|
|
|
private:
|
|
bool doInitialization(Module &M) override;
|
|
bool runOnFunction(Function &F) override;
|
|
void releaseMemory() override;
|
|
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
|
};
|
|
|
|
} // End llvm namespace
|
|
|
|
#endif
|