[llvm] r200590 - Remove another hasRawTextSupport.

Daniel Sanders Daniel.Sanders at imgtec.com
Tue Feb 4 05:34:18 PST 2014


Hi Rafael,

The patch LGTM but it took me a while to realize why the N32 path disappeared in MipsTargetELFStreamer::finish(). I see that you've folded it into the o32 path, effectively replacing the llvm_unreachable with a correct implementation of the N32 path. Could you mention that kind of thing in your commit messages?

Thanks

> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Rafael Espindola
> Sent: 31 January 2014 23:10
> To: llvm-commits at cs.uiuc.edu
> Subject: [llvm] r200590 - Remove another hasRawTextSupport.
> 
> Author: rafael
> Date: Fri Jan 31 17:10:26 2014
> New Revision: 200590
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=200590&view=rev
> Log:
> Remove another hasRawTextSupport.
> 
> To remove this one simply move the end of file logic from the asm printer to
> the target mc streamer.
> 
> This removes the last call to hasRawTextSupport from lib/Target.
> 
> Added:
>     llvm/trunk/test/MC/Mips/elf_reginfo.s
> Removed:
>     llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.cpp
>     llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.h
>     llvm/trunk/test/MC/Mips/elf-reginfo.ll
> Modified:
>     llvm/trunk/include/llvm/MC/MCStreamer.h
>     llvm/trunk/lib/MC/MCStreamer.cpp
>     llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt
>     llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
>     llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp
>     llvm/trunk/lib/Target/Mips/MipsAsmPrinter.h
>     llvm/trunk/lib/Target/Mips/MipsSubtarget.h
>     llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.cpp
>     llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.h
>     llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h
> 
> Modified: llvm/trunk/include/llvm/MC/MCStreamer.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/include/llvm/MC/MCStreamer.h?rev=200590&r1=200589
> &r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/include/llvm/MC/MCStreamer.h (original)
> +++ llvm/trunk/include/llvm/MC/MCStreamer.h Fri Jan 31 17:10:26 2014
> @@ -76,6 +76,8 @@ public:
> 
>    // Allow a target to add behavior to the EmitLabel of MCStreamer.
>    virtual void emitLabel(MCSymbol *Symbol);
> +
> +  virtual void finish();
>  };
> 
>  // FIXME: declared here because it is used from
> 
> Modified: llvm/trunk/lib/MC/MCStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/MC/MCStreamer.cpp?rev=200590&r1=200589&r2=20
> 0590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/MC/MCStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCStreamer.cpp Fri Jan 31 17:10:26 2014
> @@ -32,6 +32,8 @@ MCTargetStreamer::MCTargetStreamer(MCStr
> 
>  void MCTargetStreamer::emitLabel(MCSymbol *Symbol) {}
> 
> +void MCTargetStreamer::finish() {}
> +
>  MCStreamer::MCStreamer(MCContext &Ctx)
>      : Context(Ctx), EmitEHFrame(true), EmitDebugFrame(false),
>        CurrentW64UnwindInfo(0), LastSymbol(0) { @@ -624,6 +626,10 @@ void
> MCStreamer::Finish() {
>    if (!FrameInfos.empty() && !FrameInfos.back().End)
>      report_fatal_error("Unfinished frame!");
> 
> +  MCTargetStreamer *TS = getTargetStreamer();  if (TS)
> +    TS->finish();
> +
>    FinishImpl();
>  }
> 
> 
> 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=2005
> 90&r1=200589&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/CMakeLists.txt Fri Jan 31
> +++ 17:10:26 2014
> @@ -4,6 +4,5 @@ add_llvm_library(LLVMMipsDesc
>    MipsMCCodeEmitter.cpp
>    MipsMCTargetDesc.cpp
>    MipsELFObjectWriter.cpp
> -  MipsReginfo.cpp
>    MipsTargetStreamer.cpp
>    )
> 
> Removed: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.cpp?rev=20
> 0589&view=auto
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.cpp (removed)
> @@ -1,80 +0,0 @@
> -//===-- MipsReginfo.cpp - Registerinfo handling  --------------------------===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source -//
> License. See LICENSE.TXT for details.
> -//
> -// .reginfo
> -//    Elf32_Word ri_gprmask
> -//    Elf32_Word ri_cprmask[4]
> -//    Elf32_Word ri_gp_value
> -//
> -// .MIPS.options - N64
> -//    Elf64_Byte    kind (ODK_REGINFO)
> -//    Elf64_Byte    size (40 bytes)
> -//    Elf64_Section section (0)
> -//    Elf64_Word    info (unused)
> -//    Elf64_Word    ri_gprmask ()
> -//    Elf64_Word    ri_pad ()
> -//    Elf64_Word[4] ri_cprmask ()
> -//    Elf64_Addr    ri_gp_value ()
> -//
> -// .MIPS.options - N32
> -//    Elf32_Byte    kind (ODK_REGINFO)
> -//    Elf32_Byte    size (36 bytes)
> -//    Elf32_Section section (0)
> -//    Elf32_Word    info (unused)
> -//    Elf32_Word    ri_gprmask ()
> -//    Elf32_Word    ri_pad ()
> -//    Elf32_Word[4] ri_cprmask ()
> -//    Elf32_Addr    ri_gp_value ()
> -//
> -//===----------------------------------------------------------------------===//
> -#include "MCTargetDesc/MipsReginfo.h"
> -#include "MipsSubtarget.h"
> -#include "MipsTargetObjectFile.h"
> -#include "llvm/MC/MCStreamer.h"
> -
> -using namespace llvm;
> -
> -// Integrated assembler version
> -void
> -MipsReginfo::emitMipsReginfoSectionCG(MCStreamer &OS,
> -    const TargetLoweringObjectFile &TLOF,
> -    const MipsSubtarget &MST) const
> -{
> -
> -  if (OS.hasRawTextSupport())
> -    return;
> -
> -  const MipsTargetObjectFile &TLOFELF =
> -      static_cast<const MipsTargetObjectFile &>(TLOF);
> -  OS.SwitchSection(TLOFELF.getReginfoSection());
> -
> -  // .reginfo
> -  if (MST.isABI_O32()) {
> -    OS.EmitIntValue(0, 4); // ri_gprmask
> -    OS.EmitIntValue(0, 4); // ri_cpr[0]mask
> -    OS.EmitIntValue(0, 4); // ri_cpr[1]mask
> -    OS.EmitIntValue(0, 4); // ri_cpr[2]mask
> -    OS.EmitIntValue(0, 4); // ri_cpr[3]mask
> -    OS.EmitIntValue(0, 4); // ri_gp_value
> -  }
> -  // .MIPS.options
> -  else if (MST.isABI_N64()) {
> -    OS.EmitIntValue(1, 1); // kind
> -    OS.EmitIntValue(40, 1); // size
> -    OS.EmitIntValue(0, 2); // section
> -    OS.EmitIntValue(0, 4); // info
> -    OS.EmitIntValue(0, 4); // ri_gprmask
> -    OS.EmitIntValue(0, 4); // pad
> -    OS.EmitIntValue(0, 4); // ri_cpr[0]mask
> -    OS.EmitIntValue(0, 4); // ri_cpr[1]mask
> -    OS.EmitIntValue(0, 4); // ri_cpr[2]mask
> -    OS.EmitIntValue(0, 4); // ri_cpr[3]mask
> -    OS.EmitIntValue(0, 8); // ri_gp_value
> -  }
> -  else llvm_unreachable("Unsupported abi for reginfo"); -}
> -
> 
> Removed: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.h?rev=2005
> 89&view=auto
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsReginfo.h (removed)
> @@ -1,31 +0,0 @@
> -//=== MipsReginfo.h - MipsReginfo -----------------------------------------===//
> -//
> -//                    The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source -//
> License. See LICENCE.TXT for details.
> -//
> -//===----------------------------------------------------------------------===//
> -
> -#ifndef MIPSREGINFO_H
> -#define MIPSREGINFO_H
> -
> -namespace llvm {
> -  class MCStreamer;
> -  class TargetLoweringObjectFile;
> -  class MipsSubtarget;
> -
> -  class MipsReginfo {
> -    void anchor();
> -  public:
> -    MipsReginfo() {}
> -
> -    void emitMipsReginfoSectionCG(MCStreamer &OS,
> -        const TargetLoweringObjectFile &TLOF,
> -        const MipsSubtarget &MST) const;
> -  };
> -
> -} // namespace llvm
> -
> -#endif
> -
> 
> Modified:
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
> ?rev=200590&r1=200589&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
> (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp Fri
> +++ Jan 31 17:10:26 2014
> @@ -12,9 +12,12 @@
>  //===----------------------------------------------------------------------===//
> 
>  #include "InstPrinter/MipsInstPrinter.h"
> +#include "MipsTargetObjectFile.h"
>  #include "MipsTargetStreamer.h"
>  #include "MipsMCTargetDesc.h"
> +#include "llvm/MC/MCContext.h"
>  #include "llvm/MC/MCELF.h"
> +#include "llvm/MC/MCSectionELF.h"
>  #include "llvm/MC/MCSymbol.h"
>  #include "llvm/MC/MCSubtargetInfo.h"
>  #include "llvm/Support/CommandLine.h"
> @@ -118,7 +121,7 @@ void MipsTargetAsmStreamer::emitFMask(un
>  // This part is for ELF object output.
>  MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
>                                               const MCSubtargetInfo &STI)
> -    : MipsTargetStreamer(S), MicroMipsEnabled(false) {
> +    : MipsTargetStreamer(S), MicroMipsEnabled(false), STI(STI) {
>    MCAssembler &MCA = getStreamer().getAssembler();
>    uint64_t Features = STI.getFeatureBits();
>    Triple T(STI.getTargetTriple());
> @@ -170,6 +173,45 @@ void MipsTargetELFStreamer::emitLabel(MC
>    MCELF::setOther(Data, ELF::STO_MIPS_MICROMIPS >> 2);  }
> 
> +void MipsTargetELFStreamer::finish() {
> +  MCAssembler &MCA = getStreamer().getAssembler();
> +  MCContext &Context = MCA.getContext();
> +  MCStreamer &OS = getStreamer();
> +  Triple T(STI.getTargetTriple());
> +  uint64_t Features = STI.getFeatureBits();
> +
> +  if (T.isArch64Bit() && (Features & Mips::FeatureN64)) {
> +    const MCSectionELF *Sec = Context.getELFSection(
> +        ".MIPS.options", ELF::SHT_MIPS_OPTIONS,
> +        ELF::SHF_ALLOC | ELF::SHF_MIPS_NOSTRIP,
> SectionKind::getMetadata());
> +    OS.SwitchSection(Sec);
> +
> +    OS.EmitIntValue(1, 1); // kind
> +    OS.EmitIntValue(40, 1); // size
> +    OS.EmitIntValue(0, 2); // section
> +    OS.EmitIntValue(0, 4); // info
> +    OS.EmitIntValue(0, 4); // ri_gprmask
> +    OS.EmitIntValue(0, 4); // pad
> +    OS.EmitIntValue(0, 4); // ri_cpr[0]mask
> +    OS.EmitIntValue(0, 4); // ri_cpr[1]mask
> +    OS.EmitIntValue(0, 4); // ri_cpr[2]mask
> +    OS.EmitIntValue(0, 4); // ri_cpr[3]mask
> +    OS.EmitIntValue(0, 8); // ri_gp_value  } else {
> +    const MCSectionELF *Sec =
> +        Context.getELFSection(".reginfo", ELF::SHT_MIPS_REGINFO,
> ELF::SHF_ALLOC,
> +                              SectionKind::getMetadata());
> +    OS.SwitchSection(Sec);
> +
> +    OS.EmitIntValue(0, 4); // ri_gprmask
> +    OS.EmitIntValue(0, 4); // ri_cpr[0]mask
> +    OS.EmitIntValue(0, 4); // ri_cpr[1]mask
> +    OS.EmitIntValue(0, 4); // ri_cpr[2]mask
> +    OS.EmitIntValue(0, 4); // ri_cpr[3]mask
> +    OS.EmitIntValue(0, 4); // ri_gp_value
> +  }
> +}
> +
>  MCELFStreamer &MipsTargetELFStreamer::getStreamer() {
>    return static_cast<MCELFStreamer &>(Streamer);  }
> 
> Modified: llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp?rev=200590&r1=20
> 0589&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp Fri Jan 31 17:10:26
> +++ 2014
> @@ -621,12 +621,6 @@ void MipsAsmPrinter::EmitStartOfAsmFile(
>    OutStreamer.SwitchSection(OutContext.getObjectFileInfo()-
> >getTextSection());
>  }
> 
> -void MipsAsmPrinter::EmitEndOfAsmFile(Module &M) {
> -  // Emit Mips ELF register info
> -  Subtarget->getMReginfo().emitMipsReginfoSectionCG(
> -             OutStreamer, getObjFileLowering(), *Subtarget);
> -}
> -
>  void MipsAsmPrinter::PrintDebugValueComment(const MachineInstr *MI,
>                                             raw_ostream &OS) {
>    // TODO: implement
> 
> Modified: llvm/trunk/lib/Target/Mips/MipsAsmPrinter.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MipsAsmPrinter.h?rev=200590&r1=2005
> 89&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MipsAsmPrinter.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsAsmPrinter.h Fri Jan 31 17:10:26 2014
> @@ -100,7 +100,6 @@ public:
>    void printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream
> &O,
>                         const char *Modifier = 0);
>    void EmitStartOfAsmFile(Module &M);
> -  void EmitEndOfAsmFile(Module &M);
>    void PrintDebugValueComment(const MachineInstr *MI, raw_ostream
> &OS);  };  }
> 
> Modified: llvm/trunk/lib/Target/Mips/MipsSubtarget.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MipsSubtarget.h?rev=200590&r1=20058
> 9&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MipsSubtarget.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsSubtarget.h Fri Jan 31 17:10:26 2014
> @@ -14,7 +14,6 @@
>  #ifndef MIPSSUBTARGET_H
>  #define MIPSSUBTARGET_H
> 
> -#include "MCTargetDesc/MipsReginfo.h"
>  #include "llvm/MC/MCInstrItineraries.h"
>  #include "llvm/Support/ErrorHandling.h"
>  #include "llvm/Target/TargetSubtargetInfo.h"
> @@ -117,9 +116,6 @@ protected:
> 
>    InstrItineraryData InstrItins;
> 
> -  // The instance to the register info section object
> -  MipsReginfo MRI;
> -
>    // Relocation Model
>    Reloc::Model RM;
> 
> @@ -218,9 +214,6 @@ static bool useConstantIslands();
> 
>    unsigned stackAlignment() const { return hasMips64() ? 16 : 8; }
> 
> -  // Grab MipsRegInfo object
> -  const MipsReginfo &getMReginfo() const { return MRI; }
> -
>    // Grab relocation model
>    Reloc::Model getRelocationModel() const {return RM;}
> 
> 
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.cpp?rev=200590&r
> 1=200589&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.cpp Fri Jan 31
> +++ 17:10:26 2014
> @@ -37,21 +37,6 @@ void MipsTargetObjectFile::Initialize(MC
>      getContext().getELFSection(".sbss", ELF::SHT_NOBITS,
>                                 ELF::SHF_WRITE |ELF::SHF_ALLOC,
>                                 SectionKind::getBSS());
> -
> -  // Register info information
> -  const MipsSubtarget &Subtarget = TM.getSubtarget<MipsSubtarget>();
> -  if (Subtarget.isABI_N64() || Subtarget.isABI_N32())
> -    ReginfoSection =
> -      getContext().getELFSection(".MIPS.options",
> -                                 ELF::SHT_MIPS_OPTIONS,
> -                                 ELF::SHF_ALLOC |ELF::SHF_MIPS_NOSTRIP,
> -                                 SectionKind::getMetadata());
> -  else
> -    ReginfoSection =
> -      getContext().getELFSection(".reginfo",
> -                                 ELF::SHT_MIPS_REGINFO,
> -                                 ELF::SHF_ALLOC,
> -                                 SectionKind::getMetadata());
>  }
> 
>  // A address must be loaded from a small section if its size is less than the
> 
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.h?rev=200590&r1
> =200589&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetObjectFile.h Fri Jan 31
> +++ 17:10:26 2014
> @@ -17,7 +17,6 @@ namespace llvm {
>    class MipsTargetObjectFile : public TargetLoweringObjectFileELF {
>      const MCSection *SmallDataSection;
>      const MCSection *SmallBSSSection;
> -    const MCSection *ReginfoSection;
>    public:
> 
>      void Initialize(MCContext &Ctx, const TargetMachine &TM); @@ -34,9
> +33,6 @@ namespace llvm {
>                                              SectionKind Kind,
>                                              Mangler *Mang,
>                                              const TargetMachine &TM) const;
> -
> -    // TODO: Classify globals as mips wishes.
> -    const MCSection *getReginfoSection() const { return ReginfoSection; }
>    };
>  } // end namespace llvm
> 
> 
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h?rev=200590&r1=
> 200589&r2=200590&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetStreamer.h Fri Jan 31 17:10:26
> +++ 2014
> @@ -72,6 +72,7 @@ public:
>  // This part is for ELF object output
>  class MipsTargetELFStreamer : public MipsTargetStreamer {
>    bool MicroMipsEnabled;
> +  const MCSubtargetInfo &STI;
> 
>  public:
>    bool isMicroMipsEnabled() const { return MicroMipsEnabled; } @@ -79,6
> +80,7 @@ public:
>    MipsTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI);
> 
>    virtual void emitLabel(MCSymbol *Symbol) LLVM_OVERRIDE;
> +  void finish() LLVM_OVERRIDE;
> 
>    virtual void emitDirectiveSetMicroMips();
>    virtual void emitDirectiveSetNoMicroMips();
> 
> Removed: llvm/trunk/test/MC/Mips/elf-reginfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/elf-
> reginfo.ll?rev=200589&view=auto
> ==========================================================
> ====================
> --- llvm/trunk/test/MC/Mips/elf-reginfo.ll (original)
> +++ llvm/trunk/test/MC/Mips/elf-reginfo.ll (removed)
> @@ -1,34 +0,0 @@
> - ; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 %s -o - \
> - ; RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_64 %s
> - ; RUN: llc -filetype=obj -march=mipsel -mcpu=mips32 %s -o - \
> - ; RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_32 %s
> -
> -; Check for register information sections.
> -;
> -
> - at str = private unnamed_addr constant [12 x i8] c"hello world\00"
> -
> -define i32 @main() nounwind {
> -entry:
> -; Check that the appropriate relocations were created.
> -
> -; check for .MIPS.options
> -; CHECK_64:      Sections [
> -; CHECK_64:        Section {
> -; CHECK_64:          Name: .MIPS.options
> -; CHECK_64-NEXT:     Type: SHT_MIPS_OPTIONS
> -; CHECK_64-NEXT:     Flags [ (0x8000002)
> -
> -; check for .reginfo
> -; CHECK_32:      Sections [
> -; CHECK_32:        Section {
> -; CHECK_32:          Name: .reginfo
> -; CHECK_32-NEXT:     Type:  SHT_MIPS_REGINFO
> -; CHECK_32-NEXT:     Flags [ (0x2)
> -
> -
> -  %puts = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @str, i64
> 0, i64 0))
> -  ret i32 0
> -
> -}
> -declare i32 @puts(i8* nocapture) nounwind
> 
> Added: llvm/trunk/test/MC/Mips/elf_reginfo.s
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/MC/Mips/elf_reginfo.s?rev=200590&view=auto
> ==========================================================
> ====================
> --- llvm/trunk/test/MC/Mips/elf_reginfo.s (added)
> +++ llvm/trunk/test/MC/Mips/elf_reginfo.s Fri Jan 31 17:10:26 2014
> @@ -0,0 +1,26 @@
> +# These *MUST* match the output of gas compiled with the same triple
> +and # corresponding options (-mabi=64 -> -mattr=+n64 for example).
> +
> +# RUN: llvm-mc -filetype=obj -triple=mips64el-linux -mattr=+n64 %s -o -
> +\ # RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_64 %s #
> +RUN: llvm-mc -filetype=obj -triple=mipsel %s -mattr=+n32 -o - \ # RUN:
> +| llvm-readobj -s | FileCheck --check-prefix=CHECK_32 %s
> +
> +# Check for register information sections.
> +#
> +
> +# Check that the appropriate relocations were created.
> +
> +# check for .MIPS.options
> +# CHECK_64:      Sections [
> +# CHECK_64:        Section {
> +# CHECK_64:          Name: .MIPS.options
> +# CHECK_64-NEXT:     Type: SHT_MIPS_OPTIONS
> +# CHECK_64-NEXT:     Flags [ (0x8000002)
> +
> +# check for .reginfo
> +# CHECK_32:      Sections [
> +# CHECK_32:        Section {
> +# CHECK_32:          Name: .reginfo
> +# CHECK_32-NEXT:     Type:  SHT_MIPS_REGINFO
> +# CHECK_32-NEXT:     Flags [ (0x2)
> 
> 
> _______________________________________________
> 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