[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