mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-05 01:56:16 +00:00
0608b49819
only for those. These extern declarations to intrinsics are currently being emitted at the bottom of generated .s file, which works fine with gpasm(not sure about MPSAM though). PIC16 linker generates errors for few cases (function-args/struct_args_5) if you do not include any extern declarations (even if no intrinsics are being used), but that needs to be fixed in the linker itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71423 91177308-0d34-0410-b5e6-96231b3b80d8
62 lines
2.0 KiB
C++
62 lines
2.0 KiB
C++
//===-- PIC16AsmPrinter.h - PIC16 LLVM assembly writer ------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains a printer that converts from our internal representation
|
|
// of machine-dependent LLVM code to PIC16 assembly language.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef PIC16ASMPRINTER_H
|
|
#define PIC16ASMPRINTER_H
|
|
|
|
#include "PIC16.h"
|
|
#include "PIC16TargetMachine.h"
|
|
#include "llvm/CodeGen/AsmPrinter.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Target/TargetAsmInfo.h"
|
|
#include "llvm/Target/TargetMachine.h"
|
|
#include <list>
|
|
#include <string>
|
|
|
|
namespace llvm {
|
|
struct VISIBILITY_HIDDEN PIC16AsmPrinter : public AsmPrinter {
|
|
explicit PIC16AsmPrinter(raw_ostream &O, PIC16TargetMachine &TM,
|
|
const TargetAsmInfo *T, CodeGenOpt::Level OL,
|
|
bool V)
|
|
: AsmPrinter(O, TM, T, OL, V) {
|
|
PTLI = TM.getTargetLowering();
|
|
}
|
|
private :
|
|
virtual const char *getPassName() const {
|
|
return "PIC16 Assembly Printer";
|
|
}
|
|
|
|
bool runOnMachineFunction(MachineFunction &F);
|
|
void printOperand(const MachineInstr *MI, int opNum);
|
|
void printCCOperand(const MachineInstr *MI, int opNum);
|
|
bool printInstruction(const MachineInstr *MI); // definition autogenerated.
|
|
bool printMachineInstruction(const MachineInstr *MI);
|
|
void EmitExternsAndGlobals (Module &M);
|
|
void EmitGlobalData (Module &M);
|
|
void EmitRomData (Module &M);
|
|
void emitFunctionData(MachineFunction &MF);
|
|
void printDecls(void);
|
|
|
|
protected:
|
|
bool doInitialization(Module &M);
|
|
bool doFinalization(Module &M);
|
|
|
|
private:
|
|
PIC16TargetLowering *PTLI;
|
|
std::list<const char *> Decls; // List of extern decls.
|
|
};
|
|
} // end of namespace
|
|
|
|
#endif
|