[llvm] r195057 - [Mips] MipsTargetStreamer refactoring.
Eric Christopher
echristo at gmail.com
Mon Nov 18 17:59:33 PST 2013
OS was unused in the class. I've fixed that up for you.
--enable-werror is pretty handy.
-eric
On Mon, Nov 18, 2013 at 3:55 PM, Jack Carter <jack.carter at imgtec.com> wrote:
> Author: jacksprat
> Date: Mon Nov 18 17:55:27 2013
> New Revision: 195057
>
> URL: http://llvm.org/viewvc/llvm-project?rev=195057&view=rev
> Log:
> [Mips] MipsTargetStreamer refactoring.
>
> No functionality changes.
>
> Added:
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
> Modified:
> llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
> llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt?rev=195057&r1=195056&r2=195057&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt Mon Nov 18 17:55:27 2013
> @@ -5,6 +5,7 @@ add_llvm_library(LLVMMipsDesc
> MipsMCTargetDesc.cpp
> MipsELFObjectWriter.cpp
> MipsReginfo.cpp
> + MipsTargetStreamer.cpp
> )
>
> add_dependencies(LLVMMipsDesc MipsCommonTableGen)
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp?rev=195057&r1=195056&r2=195057&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp Mon Nov 18 17:55:27 2013
> @@ -39,9 +39,6 @@
>
> using namespace llvm;
>
> -static cl::opt<bool> PrintHackDirectives("print-hack-directives",
> - cl::init(false), cl::Hidden);
> -
> static std::string ParseMipsTriple(StringRef TT, StringRef CPU) {
> std::string MipsArchFeature;
> size_t DashPosition = 0;
> @@ -131,67 +128,6 @@ static MCInstPrinter *createMipsMCInstPr
> return new MipsInstPrinter(MAI, MII, MRI);
> }
>
> -namespace {
> -class MipsTargetAsmStreamer : public MipsTargetStreamer {
> - formatted_raw_ostream &OS;
> -
> -public:
> - MipsTargetAsmStreamer(formatted_raw_ostream &OS);
> - virtual void emitMipsHackELFFlags(unsigned Flags);
> - virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val);
> -};
> -
> -MipsTargetAsmStreamer::MipsTargetAsmStreamer(formatted_raw_ostream &OS)
> - : OS(OS) {}
> -
> -void MipsTargetAsmStreamer::emitMipsHackELFFlags(unsigned Flags) {
> - if (!PrintHackDirectives)
> - return;
> -
> - OS << "\t.mips_hack_elf_flags 0x";
> - OS.write_hex(Flags);
> - OS << '\n';
> -}
> -void MipsTargetAsmStreamer::emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) {
> - if (!PrintHackDirectives)
> - return;
> -
> - OS << "\t.mips_hack_stocg ";
> - OS << Sym->getName();
> - OS << ", ";
> - OS << Val;
> - OS << '\n';
> -}
> -
> -class MipsTargetELFStreamer : public MipsTargetStreamer {
> -public:
> - MCELFStreamer &getStreamer();
> - MipsTargetELFStreamer();
> - virtual void emitMipsHackELFFlags(unsigned Flags);
> - virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val);
> -};
> -
> -MipsTargetELFStreamer::MipsTargetELFStreamer() {}
> -
> -MCELFStreamer &MipsTargetELFStreamer::getStreamer() {
> - return static_cast<MCELFStreamer &>(*Streamer);
> -}
> -
> -void MipsTargetELFStreamer::emitMipsHackELFFlags(unsigned Flags) {
> - MCAssembler &MCA = getStreamer().getAssembler();
> - MCA.setELFHeaderEFlags(Flags);
> -}
> -
> -// Set a symbol's STO flags
> -void MipsTargetELFStreamer::emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) {
> - MCSymbolData &Data = getStreamer().getOrCreateSymbolData(Sym);
> - // The "other" values are stored in the last 6 bits of the second byte
> - // The traditional defines for STO values assume the full byte and thus
> - // the shift to pack it.
> - MCELF::setOther(Data, Val >> 2);
> -}
> -}
> -
> static MCStreamer *createMCStreamer(const Target &T, StringRef TT,
> MCContext &Context, MCAsmBackend &MAB,
> raw_ostream &OS, MCCodeEmitter *Emitter,
>
> Added: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp?rev=195057&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp (added)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp Mon Nov 18 17:55:27 2013
> @@ -0,0 +1,69 @@
> +//===-- MipsTargetStreamer.cpp - Mips Target Streamer Methods -------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +//
> +// This file provides Mips specific target streamer methods.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "MipsTargetStreamer.h"
> +#include "llvm/MC/MCELF.h"
> +#include "llvm/MC/MCSymbol.h"
> +#include "llvm/Support/CommandLine.h"
> +#include "llvm/Support/ErrorHandling.h"
> +#include "llvm/Support/FormattedStream.h"
> +
> +using namespace llvm;
> +
> +static cl::opt<bool> PrintHackDirectives("print-hack-directives",
> + cl::init(false), cl::Hidden);
> +
> +// pin vtable to this file
> +void MipsTargetStreamer::anchor() {}
> +
> +MipsTargetAsmStreamer::MipsTargetAsmStreamer(formatted_raw_ostream &OS)
> + : OS(OS) {}
> +
> +void MipsTargetAsmStreamer::emitMipsHackELFFlags(unsigned Flags) {
> + if (!PrintHackDirectives)
> + return;
> +
> + OS << "\t.mips_hack_elf_flags 0x";
> + OS.write_hex(Flags);
> + OS << '\n';
> +}
> +void MipsTargetAsmStreamer::emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) {
> + if (!PrintHackDirectives)
> + return;
> +
> + OS << "\t.mips_hack_stocg ";
> + OS << Sym->getName();
> + OS << ", ";
> + OS << Val;
> + OS << '\n';
> +}
> +
> +MipsTargetELFStreamer::MipsTargetELFStreamer() {}
> +
> +MCELFStreamer &MipsTargetELFStreamer::getStreamer() {
> + return static_cast<MCELFStreamer &>(*Streamer);
> +}
> +
> +void MipsTargetELFStreamer::emitMipsHackELFFlags(unsigned Flags) {
> + MCAssembler &MCA = getStreamer().getAssembler();
> + MCA.setELFHeaderEFlags(Flags);
> +}
> +
> +// Set a symbol's STO flags
> +void MipsTargetELFStreamer::emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) {
> + MCSymbolData &Data = getStreamer().getOrCreateSymbolData(Sym);
> + // The "other" values are stored in the last 6 bits of the second byte
> + // The traditional defines for STO values assume the full byte and thus
> + // the shift to pack it.
> + MCELF::setOther(Data, Val >> 2);
> +}
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h?rev=195057&r1=195056&r2=195057&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h Mon Nov 18 17:55:27 2013
> @@ -10,14 +10,36 @@
> #ifndef MIPSTARGETSTREAMER_H
> #define MIPSTARGETSTREAMER_H
>
> +#include "llvm/MC/MCELFStreamer.h"
> #include "llvm/MC/MCStreamer.h"
>
> namespace llvm {
> class MipsTargetStreamer : public MCTargetStreamer {
> + virtual void anchor();
> +
> public:
> virtual void emitMipsHackELFFlags(unsigned Flags) = 0;
> virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) = 0;
> };
> +
> +// This part is for ascii assembly output
> +class MipsTargetAsmStreamer : public MipsTargetStreamer {
> + formatted_raw_ostream &OS;
> +
> +public:
> + MipsTargetAsmStreamer(formatted_raw_ostream &OS);
> + virtual void emitMipsHackELFFlags(unsigned Flags);
> + virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val);
> +};
> +
> +// This part is for ELF object output
> +class MipsTargetELFStreamer : public MipsTargetStreamer {
> +public:
> + MCELFStreamer &getStreamer();
> + MipsTargetELFStreamer();
> + virtual void emitMipsHackELFFlags(unsigned Flags);
> + virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val);
> +};
> }
>
> #endif
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list