[llvm-commits] [llvm] r115393 - in /llvm/trunk: CMakeLists.txt lib/Target/MSP430/InstPrinter/CMakeLists.txt lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h lib/Target/MSP430/InstPrinter/Makefi

Jim Grosbach grosbach at apple.com
Fri Oct 1 18:58:43 PDT 2010


On Oct 1, 2010, at 6:43 PM, Nick Lewycky wrote:

> Okay. You can see that almost all of the open-source builders were broken:
> 
>   http://google1.osuosl.org:8011/console
> 
> in that time. It's impossible for this particular error to occur in a cmake build because cmake doesn't run find-cycles.pl (last i checked). My suspicion is that the cmake builders were working fine while configure+make ones were not?

I don't believe so, no. Must be something more subtle and the cmake stuff was unrelated.

An incremental build very possibly would break with these changes as the MSP430AsmPrinter.o file will move from the LLVMMSP430AsmPrinter library to the LLVMMSP430CodeGen library, which brings it into line with the other MC-ized asm-printer targets (ARM and X86). An incremental build would very possibly end up including an MSP430AsmPrinter.o into both libraries.

That does not, however, explain why buildbots are seeing issues that I haven't been able to reproduce when I do a configure/make style build.

-jim

> 
> I'm going to wind back to the broken point and try to reproduce the failure and see if I can figure out what the cyclic dependency actually was.
> 

Cool. Thank you. I've been trying to reproduce the issue here, but no success yet.

-Jim

> Nick
> 
> On 1 October 2010 18:27, Jim Grosbach <grosbach at apple.com> wrote:
> That's very strange. I do a configure/make here, and it works, and lots of bots using that were green as well. If there's a case I missed, I'd love to have some help tracking down what it is. Can you try a "make clean" and see if that works? Maybe there's just something stale that the configure portion of the patch needs to clean up.
> 
> -Jim
> 
> 
> 
> On Oct 1, 2010, at 6:24 PM, Nick Lewycky wrote:
> 
>> Nope, it broke under a regular configure+make in-srctree incremental build on multiple different machines.
>> 
>> On 1 October 2010 18:22, Jim Grosbach <grosbach at apple.com> wrote:
>> Nick,
>> 
>> These only break for you under CMake, right? That's the only place I've been able to reproduce failures.
>> 
>> -Jim
>> 
>> 
>> On Oct 1, 2010, at 6:06 PM, Nick Lewycky wrote:
>> 
>> > Author: nicholas
>> > Date: Fri Oct  1 20:06:42 2010
>> > New Revision: 115393
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=115393&view=rev
>> > Log:
>> > Revert patches r115363 r115367 r115391 due to build breakage:
>> > llvm[2]: Updated LibDeps.txt because dependencies changed
>> > llvm[2]: Checking for cyclic dependencies between LLVM libraries.
>> > find-cycles.pl: Circular dependency between *.a files:
>> > find-cycles.pl:   libLLVMMSP430AsmPrinter.a libLLVMMSP430CodeGen.a
>> >
>> >
>> > Modified:
>> >    llvm/trunk/CMakeLists.txt
>> >    llvm/trunk/lib/Target/MSP430/InstPrinter/CMakeLists.txt
>> >    llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp
>> >    llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h
>> >    llvm/trunk/lib/Target/MSP430/InstPrinter/Makefile
>> >    llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp
>> >    llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.cpp
>> >    llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.h
>> >    llvm/trunk/lib/Target/MSP430/Makefile
>> >
>> > Modified: llvm/trunk/CMakeLists.txt
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/CMakeLists.txt (original)
>> > +++ llvm/trunk/CMakeLists.txt Fri Oct  1 20:06:42 2010
>> > @@ -323,10 +323,6 @@
>> >     add_subdirectory(lib/Target/${t}/AsmPrinter)
>> >     set(LLVM_ENUM_ASM_PRINTERS
>> >       "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")
>> > -  if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/InstPrinter/CMakeLists.txt )
>> > -    add_subdirectory(lib/Target/${t}/InstPrinter)
>> > -    set(LLVM_ENUM_ASM_PRINTERS
>> > -      "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")
>> >   endif( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmPrinter/CMakeLists.txt )
>> >   if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmParser/CMakeLists.txt )
>> >     add_subdirectory(lib/Target/${t}/AsmParser)
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/InstPrinter/CMakeLists.txt
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/InstPrinter/CMakeLists.txt?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/InstPrinter/CMakeLists.txt (original)
>> > +++ llvm/trunk/lib/Target/MSP430/InstPrinter/CMakeLists.txt Fri Oct  1 20:06:42 2010
>> > @@ -1,6 +0,0 @@
>> > -include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/.. )
>> > -
>> > -add_llvm_library(LLVMMSP430AsmPrinter
>> > -  MSP430InstPrinter.cpp
>> > -  )
>> > -add_dependencies(LLVMMSP430AsmPrinter MSP430CodeGenTable_gen)
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp (original)
>> > +++ llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp Fri Oct  1 20:06:42 2010
>> > @@ -1,114 +0,0 @@
>> > -//===-- MSP430InstPrinter.cpp - Convert MSP430 MCInst to assembly syntax --===//
>> > -//
>> > -//                     The LLVM Compiler Infrastructure
>> > -//
>> > -// This file is distributed under the University of Illinois Open Source
>> > -// License. See LICENSE.TXT for details.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -//
>> > -// This class prints an MSP430 MCInst to a .s file.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -
>> > -#define DEBUG_TYPE "asm-printer"
>> > -#include "MSP430.h"
>> > -#include "MSP430InstrInfo.h"
>> > -#include "MSP430InstPrinter.h"
>> > -#include "llvm/MC/MCInst.h"
>> > -#include "llvm/MC/MCAsmInfo.h"
>> > -#include "llvm/MC/MCExpr.h"
>> > -#include "llvm/Support/ErrorHandling.h"
>> > -#include "llvm/Support/FormattedStream.h"
>> > -using namespace llvm;
>> > -
>> > -
>> > -// Include the auto-generated portion of the assembly writer.
>> > -#include "MSP430GenAsmWriter.inc"
>> > -
>> > -void MSP430InstPrinter::printInst(const MCInst *MI, raw_ostream &O) {
>> > -  printInstruction(MI, O);
>> > -}
>> > -
>> > -void MSP430InstPrinter::printPCRelImmOperand(const MCInst *MI, unsigned OpNo,
>> > -                                             raw_ostream &O) {
>> > -  const MCOperand &Op = MI->getOperand(OpNo);
>> > -  if (Op.isImm())
>> > -    O << Op.getImm();
>> > -  else {
>> > -    assert(Op.isExpr() && "unknown pcrel immediate operand");
>> > -    O << *Op.getExpr();
>> > -  }
>> > -}
>> > -
>> > -void MSP430InstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
>> > -                                     raw_ostream &O, const char *Modifier) {
>> > -  assert((Modifier == 0 || Modifier[0] == 0) && "No modifiers supported");
>> > -  const MCOperand &Op = MI->getOperand(OpNo);
>> > -  if (Op.isReg()) {
>> > -    O << getRegisterName(Op.getReg());
>> > -  } else if (Op.isImm()) {
>> > -    O << '#' << Op.getImm();
>> > -  } else {
>> > -    assert(Op.isExpr() && "unknown operand kind in printOperand");
>> > -    O << '#' << *Op.getExpr();
>> > -  }
>> > -}
>> > -
>> > -void MSP430InstPrinter::printSrcMemOperand(const MCInst *MI, unsigned OpNo,
>> > -                                           raw_ostream &O,
>> > -                                           const char *Modifier) {
>> > -  const MCOperand &Base = MI->getOperand(OpNo);
>> > -  const MCOperand &Disp = MI->getOperand(OpNo+1);
>> > -
>> > -  // Print displacement first
>> > -
>> > -  // If the global address expression is a part of displacement field with a
>> > -  // register base, we should not emit any prefix symbol here, e.g.
>> > -  //   mov.w &foo, r1
>> > -  // vs
>> > -  //   mov.w glb(r1), r2
>> > -  // Otherwise (!) msp430-as will silently miscompile the output :(
>> > -  if (!Base.getReg())
>> > -    O << '&';
>> > -
>> > -  if (Disp.isExpr())
>> > -    O << *Disp.getExpr();
>> > -  else {
>> > -    assert(Disp.isImm() && "Expected immediate in displacement field");
>> > -    O << Disp.getImm();
>> > -  }
>> > -
>> > -  // Print register base field
>> > -  if (Base.getReg())
>> > -    O << '(' << getRegisterName(Base.getReg()) << ')';
>> > -}
>> > -
>> > -void MSP430InstPrinter::printCCOperand(const MCInst *MI, unsigned OpNo,
>> > -                                       raw_ostream &O) {
>> > -  unsigned CC = MI->getOperand(OpNo).getImm();
>> > -
>> > -  switch (CC) {
>> > -  default:
>> > -   llvm_unreachable("Unsupported CC code");
>> > -   break;
>> > -  case MSP430CC::COND_E:
>> > -   O << "eq";
>> > -   break;
>> > -  case MSP430CC::COND_NE:
>> > -   O << "ne";
>> > -   break;
>> > -  case MSP430CC::COND_HS:
>> > -   O << "hs";
>> > -   break;
>> > -  case MSP430CC::COND_LO:
>> > -   O << "lo";
>> > -   break;
>> > -  case MSP430CC::COND_GE:
>> > -   O << "ge";
>> > -   break;
>> > -  case MSP430CC::COND_L:
>> > -   O << 'l';
>> > -   break;
>> > -  }
>> > -}
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h (original)
>> > +++ llvm/trunk/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h Fri Oct  1 20:06:42 2010
>> > @@ -1,43 +0,0 @@
>> > -//===-- MSP430InstPrinter.h - Convert MSP430 MCInst to assembly syntax ----===//
>> > -//
>> > -//                     The LLVM Compiler Infrastructure
>> > -//
>> > -// This file is distributed under the University of Illinois Open Source
>> > -// License. See LICENSE.TXT for details.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -//
>> > -// This class prints a MSP430 MCInst to a .s file.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -
>> > -#ifndef MSP430INSTPRINTER_H
>> > -#define MSP430INSTPRINTER_H
>> > -
>> > -#include "llvm/MC/MCInstPrinter.h"
>> > -
>> > -namespace llvm {
>> > -  class MCOperand;
>> > -
>> > -  class MSP430InstPrinter : public MCInstPrinter {
>> > -  public:
>> > -    MSP430InstPrinter(const MCAsmInfo &MAI) : MCInstPrinter(MAI) {
>> > -    }
>> > -
>> > -    virtual void printInst(const MCInst *MI, raw_ostream &O);
>> > -
>> > -    // Autogenerated by tblgen.
>> > -    void printInstruction(const MCInst *MI, raw_ostream &O);
>> > -    static const char *getRegisterName(unsigned RegNo);
>> > -
>> > -    void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
>> > -                      const char *Modifier = 0);
>> > -    void printPCRelImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
>> > -    void printSrcMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
>> > -                            const char *Modifier = 0);
>> > -    void printCCOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
>> > -
>> > -  };
>> > -}
>> > -
>> > -#endif
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/InstPrinter/Makefile
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/InstPrinter/Makefile?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/InstPrinter/Makefile (original)
>> > +++ llvm/trunk/lib/Target/MSP430/InstPrinter/Makefile Fri Oct  1 20:06:42 2010
>> > @@ -1,15 +0,0 @@
>> > -##===- lib/Target/MSP430/AsmPrinter/Makefile ---------------*- Makefile -*-===##
>> > -#
>> > -#                     The LLVM Compiler Infrastructure
>> > -#
>> > -# This file is distributed under the University of Illinois Open Source
>> > -# License. See LICENSE.TXT for details.
>> > -#
>> > -##===----------------------------------------------------------------------===##
>> > -LEVEL = ../../../..
>> > -LIBRARYNAME = LLVMMSP430AsmPrinter
>> > -
>> > -# Hack: we need to include 'main' MSP430 target directory to grab private headers
>> > -CPP.Flags += -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/..
>> > -
>> > -include $(LEVEL)/Makefile.common
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp (original)
>> > +++ llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp Fri Oct  1 20:06:42 2010
>> > @@ -1,179 +0,0 @@
>> > -//===-- MSP430AsmPrinter.cpp - MSP430 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 the MSP430 assembly language.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -
>> > -#define DEBUG_TYPE "asm-printer"
>> > -#include "MSP430.h"
>> > -#include "MSP430InstrInfo.h"
>> > -#include "InstPrinter/MSP430InstPrinter.h"
>> > -#include "MSP430MCAsmInfo.h"
>> > -#include "MSP430MCInstLower.h"
>> > -#include "MSP430TargetMachine.h"
>> > -#include "llvm/Constants.h"
>> > -#include "llvm/DerivedTypes.h"
>> > -#include "llvm/Module.h"
>> > -#include "llvm/Assembly/Writer.h"
>> > -#include "llvm/CodeGen/AsmPrinter.h"
>> > -#include "llvm/CodeGen/MachineModuleInfo.h"
>> > -#include "llvm/CodeGen/MachineFunctionPass.h"
>> > -#include "llvm/CodeGen/MachineConstantPool.h"
>> > -#include "llvm/CodeGen/MachineInstr.h"
>> > -#include "llvm/MC/MCInst.h"
>> > -#include "llvm/MC/MCStreamer.h"
>> > -#include "llvm/MC/MCSymbol.h"
>> > -#include "llvm/Target/Mangler.h"
>> > -#include "llvm/Target/TargetData.h"
>> > -#include "llvm/Target/TargetLoweringObjectFile.h"
>> > -#include "llvm/Target/TargetRegistry.h"
>> > -#include "llvm/Support/raw_ostream.h"
>> > -using namespace llvm;
>> > -
>> > -namespace {
>> > -  class MSP430AsmPrinter : public AsmPrinter {
>> > -  public:
>> > -    MSP430AsmPrinter(TargetMachine &TM, MCStreamer &Streamer)
>> > -      : AsmPrinter(TM, Streamer) {}
>> > -
>> > -    virtual const char *getPassName() const {
>> > -      return "MSP430 Assembly Printer";
>> > -    }
>> > -
>> > -    void printOperand(const MachineInstr *MI, int OpNum,
>> > -                      raw_ostream &O, const char* Modifier = 0);
>> > -    void printSrcMemOperand(const MachineInstr *MI, int OpNum,
>> > -                            raw_ostream &O);
>> > -    bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
>> > -                         unsigned AsmVariant, const char *ExtraCode,
>> > -                         raw_ostream &O);
>> > -    bool PrintAsmMemoryOperand(const MachineInstr *MI,
>> > -                               unsigned OpNo, unsigned AsmVariant,
>> > -                               const char *ExtraCode, raw_ostream &O);
>> > -    void EmitInstruction(const MachineInstr *MI);
>> > -  };
>> > -} // end of anonymous namespace
>> > -
>> > -
>> > -void MSP430AsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
>> > -                                    raw_ostream &O, const char *Modifier) {
>> > -  const MachineOperand &MO = MI->getOperand(OpNum);
>> > -  switch (MO.getType()) {
>> > -  default: assert(0 && "Not implemented yet!");
>> > -  case MachineOperand::MO_Register:
>> > -    O << MSP430InstPrinter::getRegisterName(MO.getReg());
>> > -    return;
>> > -  case MachineOperand::MO_Immediate:
>> > -    if (!Modifier || strcmp(Modifier, "nohash"))
>> > -      O << '#';
>> > -    O << MO.getImm();
>> > -    return;
>> > -  case MachineOperand::MO_MachineBasicBlock:
>> > -    O << *MO.getMBB()->getSymbol();
>> > -    return;
>> > -  case MachineOperand::MO_GlobalAddress: {
>> > -    bool isMemOp  = Modifier && !strcmp(Modifier, "mem");
>> > -    uint64_t Offset = MO.getOffset();
>> > -
>> > -    // If the global address expression is a part of displacement field with a
>> > -    // register base, we should not emit any prefix symbol here, e.g.
>> > -    //   mov.w &foo, r1
>> > -    // vs
>> > -    //   mov.w glb(r1), r2
>> > -    // Otherwise (!) msp430-as will silently miscompile the output :(
>> > -    if (!Modifier || strcmp(Modifier, "nohash"))
>> > -      O << (isMemOp ? '&' : '#');
>> > -    if (Offset)
>> > -      O << '(' << Offset << '+';
>> > -
>> > -    O << *Mang->getSymbol(MO.getGlobal());
>> > -
>> > -    if (Offset)
>> > -      O << ')';
>> > -
>> > -    return;
>> > -  }
>> > -  case MachineOperand::MO_ExternalSymbol: {
>> > -    bool isMemOp  = Modifier && !strcmp(Modifier, "mem");
>> > -    O << (isMemOp ? '&' : '#');
>> > -    O << MAI->getGlobalPrefix() << MO.getSymbolName();
>> > -    return;
>> > -  }
>> > -  }
>> > -}
>> > -
>> > -void MSP430AsmPrinter::printSrcMemOperand(const MachineInstr *MI, int OpNum,
>> > -                                          raw_ostream &O) {
>> > -  const MachineOperand &Base = MI->getOperand(OpNum);
>> > -  const MachineOperand &Disp = MI->getOperand(OpNum+1);
>> > -
>> > -  // Print displacement first
>> > -
>> > -  // Imm here is in fact global address - print extra modifier.
>> > -  if (Disp.isImm() && !Base.getReg())
>> > -    O << '&';
>> > -  printOperand(MI, OpNum+1, O, "nohash");
>> > -
>> > -  // Print register base field
>> > -  if (Base.getReg()) {
>> > -    O << '(';
>> > -    printOperand(MI, OpNum, O);
>> > -    O << ')';
>> > -  }
>> > -}
>> > -
>> > -/// PrintAsmOperand - Print out an operand for an inline asm expression.
>> > -///
>> > -bool MSP430AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
>> > -                                       unsigned AsmVariant,
>> > -                                       const char *ExtraCode, raw_ostream &O) {
>> > -  // Does this asm operand have a single letter operand modifier?
>> > -  if (ExtraCode && ExtraCode[0])
>> > -    return true; // Unknown modifier.
>> > -
>> > -  printOperand(MI, OpNo, O);
>> > -  return false;
>> > -}
>> > -
>> > -bool MSP430AsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
>> > -                                             unsigned OpNo, unsigned AsmVariant,
>> > -                                             const char *ExtraCode,
>> > -                                             raw_ostream &O) {
>> > -  if (ExtraCode && ExtraCode[0]) {
>> > -    return true; // Unknown modifier.
>> > -  }
>> > -  printSrcMemOperand(MI, OpNo, O);
>> > -  return false;
>> > -}
>> > -
>> > -//===----------------------------------------------------------------------===//
>> > -void MSP430AsmPrinter::EmitInstruction(const MachineInstr *MI) {
>> > -  MSP430MCInstLower MCInstLowering(OutContext, *Mang, *this);
>> > -
>> > -  MCInst TmpInst;
>> > -  MCInstLowering.Lower(MI, TmpInst);
>> > -  OutStreamer.EmitInstruction(TmpInst);
>> > -}
>> > -
>> > -static MCInstPrinter *createMSP430MCInstPrinter(const Target &T,
>> > -                                                unsigned SyntaxVariant,
>> > -                                                const MCAsmInfo &MAI) {
>> > -  if (SyntaxVariant == 0)
>> > -    return new MSP430InstPrinter(MAI);
>> > -  return 0;
>> > -}
>> > -
>> > -// Force static initialization.
>> > -extern "C" void LLVMInitializeMSP430AsmPrinter() {
>> > -  RegisterAsmPrinter<MSP430AsmPrinter> X(TheMSP430Target);
>> > -  TargetRegistry::RegisterMCInstPrinter(TheMSP430Target,
>> > -                                        createMSP430MCInstPrinter);
>> > -}
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.cpp
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.cpp?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.cpp (original)
>> > +++ llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.cpp Fri Oct  1 20:06:42 2010
>> > @@ -1,150 +0,0 @@
>> > -//===-- MSP430MCInstLower.cpp - Convert MSP430 MachineInstr to an MCInst---===//
>> > -//
>> > -//                     The LLVM Compiler Infrastructure
>> > -//
>> > -// This file is distributed under the University of Illinois Open Source
>> > -// License. See LICENSE.TXT for details.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -//
>> > -// This file contains code to lower MSP430 MachineInstrs to their corresponding
>> > -// MCInst records.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -
>> > -#include "MSP430MCInstLower.h"
>> > -#include "llvm/CodeGen/AsmPrinter.h"
>> > -#include "llvm/CodeGen/MachineBasicBlock.h"
>> > -#include "llvm/CodeGen/MachineInstr.h"
>> > -#include "llvm/MC/MCAsmInfo.h"
>> > -#include "llvm/MC/MCContext.h"
>> > -#include "llvm/MC/MCExpr.h"
>> > -#include "llvm/MC/MCInst.h"
>> > -#include "llvm/Target/Mangler.h"
>> > -#include "llvm/Support/raw_ostream.h"
>> > -#include "llvm/Support/ErrorHandling.h"
>> > -#include "llvm/ADT/SmallString.h"
>> > -using namespace llvm;
>> > -
>> > -MCSymbol *MSP430MCInstLower::
>> > -GetGlobalAddressSymbol(const MachineOperand &MO) const {
>> > -  switch (MO.getTargetFlags()) {
>> > -  default: llvm_unreachable("Unknown target flag on GV operand");
>> > -  case 0: break;
>> > -  }
>> > -
>> > -  return Printer.Mang->getSymbol(MO.getGlobal());
>> > -}
>> > -
>> > -MCSymbol *MSP430MCInstLower::
>> > -GetExternalSymbolSymbol(const MachineOperand &MO) const {
>> > -  switch (MO.getTargetFlags()) {
>> > -  default: assert(0 && "Unknown target flag on GV operand");
>> > -  case 0: break;
>> > -  }
>> > -
>> > -  return Printer.GetExternalSymbolSymbol(MO.getSymbolName());
>> > -}
>> > -
>> > -MCSymbol *MSP430MCInstLower::
>> > -GetJumpTableSymbol(const MachineOperand &MO) const {
>> > -  SmallString<256> Name;
>> > -  raw_svector_ostream(Name) << Printer.MAI->getPrivateGlobalPrefix() << "JTI"
>> > -                            << Printer.getFunctionNumber() << '_'
>> > -                            << MO.getIndex();
>> > -
>> > -  switch (MO.getTargetFlags()) {
>> > -  default: llvm_unreachable("Unknown target flag on GV operand");
>> > -  case 0: break;
>> > -  }
>> > -
>> > -  // Create a symbol for the name.
>> > -  return Ctx.GetOrCreateSymbol(Name.str());
>> > -}
>> > -
>> > -MCSymbol *MSP430MCInstLower::
>> > -GetConstantPoolIndexSymbol(const MachineOperand &MO) const {
>> > -  SmallString<256> Name;
>> > -  raw_svector_ostream(Name) << Printer.MAI->getPrivateGlobalPrefix() << "CPI"
>> > -                            << Printer.getFunctionNumber() << '_'
>> > -                            << MO.getIndex();
>> > -
>> > -  switch (MO.getTargetFlags()) {
>> > -  default: llvm_unreachable("Unknown target flag on GV operand");
>> > -  case 0: break;
>> > -  }
>> > -
>> > -  // Create a symbol for the name.
>> > -  return Ctx.GetOrCreateSymbol(Name.str());
>> > -}
>> > -
>> > -MCSymbol *MSP430MCInstLower::
>> > -GetBlockAddressSymbol(const MachineOperand &MO) const {
>> > -  switch (MO.getTargetFlags()) {
>> > -  default: assert(0 && "Unknown target flag on GV operand");
>> > -  case 0: break;
>> > -  }
>> > -
>> > -  return Printer.GetBlockAddressSymbol(MO.getBlockAddress());
>> > -}
>> > -
>> > -MCOperand MSP430MCInstLower::
>> > -LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const {
>> > -  // FIXME: We would like an efficient form for this, so we don't have to do a
>> > -  // lot of extra uniquing.
>> > -  const MCExpr *Expr = MCSymbolRefExpr::Create(Sym, Ctx);
>> > -
>> > -  switch (MO.getTargetFlags()) {
>> > -  default: llvm_unreachable("Unknown target flag on GV operand");
>> > -  case 0: break;
>> > -  }
>> > -
>> > -  if (!MO.isJTI() && MO.getOffset())
>> > -    Expr = MCBinaryExpr::CreateAdd(Expr,
>> > -                                   MCConstantExpr::Create(MO.getOffset(), Ctx),
>> > -                                   Ctx);
>> > -  return MCOperand::CreateExpr(Expr);
>> > -}
>> > -
>> > -void MSP430MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
>> > -  OutMI.setOpcode(MI->getOpcode());
>> > -
>> > -  for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
>> > -    const MachineOperand &MO = MI->getOperand(i);
>> > -
>> > -    MCOperand MCOp;
>> > -    switch (MO.getType()) {
>> > -    default:
>> > -      MI->dump();
>> > -      assert(0 && "unknown operand type");
>> > -    case MachineOperand::MO_Register:
>> > -      // Ignore all implicit register operands.
>> > -      if (MO.isImplicit()) continue;
>> > -      MCOp = MCOperand::CreateReg(MO.getReg());
>> > -      break;
>> > -    case MachineOperand::MO_Immediate:
>> > -      MCOp = MCOperand::CreateImm(MO.getImm());
>> > -      break;
>> > -    case MachineOperand::MO_MachineBasicBlock:
>> > -      MCOp = MCOperand::CreateExpr(MCSymbolRefExpr::Create(
>> > -                         MO.getMBB()->getSymbol(), Ctx));
>> > -      break;
>> > -    case MachineOperand::MO_GlobalAddress:
>> > -      MCOp = LowerSymbolOperand(MO, GetGlobalAddressSymbol(MO));
>> > -      break;
>> > -    case MachineOperand::MO_ExternalSymbol:
>> > -      MCOp = LowerSymbolOperand(MO, GetExternalSymbolSymbol(MO));
>> > -      break;
>> > -    case MachineOperand::MO_JumpTableIndex:
>> > -      MCOp = LowerSymbolOperand(MO, GetJumpTableSymbol(MO));
>> > -      break;
>> > -    case MachineOperand::MO_ConstantPoolIndex:
>> > -      MCOp = LowerSymbolOperand(MO, GetConstantPoolIndexSymbol(MO));
>> > -      break;
>> > -    case MachineOperand::MO_BlockAddress:
>> > -      MCOp = LowerSymbolOperand(MO, GetBlockAddressSymbol(MO));
>> > -    }
>> > -
>> > -    OutMI.addOperand(MCOp);
>> > -  }
>> > -}
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.h
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.h?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.h (original)
>> > +++ llvm/trunk/lib/Target/MSP430/MSP430MCInstLower.h Fri Oct  1 20:06:42 2010
>> > @@ -1,50 +0,0 @@
>> > -//===-- MSP430MCInstLower.h - Lower MachineInstr to MCInst ----------------===//
>> > -//
>> > -//                     The LLVM Compiler Infrastructure
>> > -//
>> > -// This file is distributed under the University of Illinois Open Source
>> > -// License. See LICENSE.TXT for details.
>> > -//
>> > -//===----------------------------------------------------------------------===//
>> > -
>> > -#ifndef MSP430_MCINSTLOWER_H
>> > -#define MSP430_MCINSTLOWER_H
>> > -
>> > -#include "llvm/Support/Compiler.h"
>> > -
>> > -namespace llvm {
>> > -  class AsmPrinter;
>> > -  class MCAsmInfo;
>> > -  class MCContext;
>> > -  class MCInst;
>> > -  class MCOperand;
>> > -  class MCSymbol;
>> > -  class MachineInstr;
>> > -  class MachineModuleInfoMachO;
>> > -  class MachineOperand;
>> > -  class Mangler;
>> > -
>> > -  /// MSP430MCInstLower - This class is used to lower an MachineInstr
>> > -  /// into an MCInst.
>> > -class LLVM_LIBRARY_VISIBILITY MSP430MCInstLower {
>> > -  MCContext &Ctx;
>> > -  Mangler &Mang;
>> > -
>> > -  AsmPrinter &Printer;
>> > -public:
>> > -  MSP430MCInstLower(MCContext &ctx, Mangler &mang, AsmPrinter &printer)
>> > -    : Ctx(ctx), Mang(mang), Printer(printer) {}
>> > -  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
>> > -
>> > -  MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
>> > -
>> > -  MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
>> > -  MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
>> > -  MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;
>> > -  MCSymbol *GetConstantPoolIndexSymbol(const MachineOperand &MO) const;
>> > -  MCSymbol *GetBlockAddressSymbol(const MachineOperand &MO) const;
>> > -};
>> > -
>> > -}
>> > -
>> > -#endif
>> >
>> > Modified: llvm/trunk/lib/Target/MSP430/Makefile
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/Makefile?rev=115393&r1=115392&r2=115393&view=diff
>> > ==============================================================================
>> > --- llvm/trunk/lib/Target/MSP430/Makefile (original)
>> > +++ llvm/trunk/lib/Target/MSP430/Makefile Fri Oct  1 20:06:42 2010
>> > @@ -18,7 +18,7 @@
>> >               MSP430GenDAGISel.inc MSP430GenCallingConv.inc \
>> >               MSP430GenSubtarget.inc
>> >
>> > -DIRS = InstPrinter TargetInfo
>> > +DIRS = AsmPrinter TargetInfo
>> >
>> > include $(LEVEL)/Makefile.common
>> >
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20101001/3ac1c56c/attachment.html>


More information about the llvm-commits mailing list