diff options
-rw-r--r-- | include/llvm/MC/MCTargetAsmParser.h | 5 | ||||
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 4 | ||||
-rw-r--r-- | lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 19 | ||||
-rw-r--r-- | lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp | 21 | ||||
-rw-r--r-- | lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h | 2 | ||||
-rw-r--r-- | lib/Target/Mips/MipsAsmPrinter.cpp | 4 | ||||
-rw-r--r-- | test/MC/Mips/mips_directives.s | 7 |
7 files changed, 6 insertions, 56 deletions
diff --git a/include/llvm/MC/MCTargetAsmParser.h b/include/llvm/MC/MCTargetAsmParser.h index 512fd864..6e96e8b 100644 --- a/include/llvm/MC/MCTargetAsmParser.h +++ b/include/llvm/MC/MCTargetAsmParser.h @@ -176,11 +176,6 @@ public: virtual void convertToMapAndConstraints(unsigned Kind, const SmallVectorImpl<MCParsedAsmOperand*> &Operands) = 0; - /// End of assembly processing. - /// This gets called when all assembly has been read and gives the local - /// Target AsmParsers an opportunity for any final data processing, etc.. - virtual void emitEndOfAsmFile(MCStreamer &Out) {} - virtual const MCExpr *applyModifierToExpr(const MCExpr *E, MCSymbolRefExpr::VariantKind, MCContext &Ctx) { diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 53ce02c..9a36256 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -673,10 +673,8 @@ bool AsmParser::Run(bool NoInitialTextSection, bool NoFinalize) { // Finalize the output stream if there are no errors and if the client wants // us to. - if (!HadError && !NoFinalize) { - getTargetParser().emitEndOfAsmFile(Out); + if (!HadError && !NoFinalize) Out.Finish(); - } return HadError; } diff --git a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp index c2e4bba..447e7dc 100644 --- a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -#include "AsmParser/MipsAsmFlags.h" -#include "MCTargetDesc/MipsELFStreamer.h" #include "MCTargetDesc/MipsMCTargetDesc.h" #include "MipsRegisterInfo.h" #include "llvm/ADT/StringSwitch.h" @@ -61,7 +59,6 @@ class MipsAsmParser : public MCTargetAsmParser { MCSubtargetInfo &STI; MCAsmParser &Parser; MipsAssemblerOptions Options; - MipsMCAsmFlags Flags; bool hasConsumedDollar; #define GET_ASSEMBLER_HEADER @@ -231,8 +228,6 @@ class MipsAsmParser : public MCTargetAsmParser { bool processInstruction(MCInst &Inst, SMLoc IDLoc, SmallVectorImpl<MCInst> &Instructions); - void emitEndOfAsmFile(MCStreamer &Out); - public: MipsAsmParser(MCSubtargetInfo &sti, MCAsmParser &parser, const MCInstrInfo &MII) @@ -2177,23 +2172,9 @@ bool MipsAsmParser::ParseDirective(AsmToken DirectiveID) { return false; } - if (IDVal == ".abicalls") { - Flags.setRelocationModel(MipsMCAsmFlags::MAF_RM_CPIC); - if (Parser.getTok().isNot(AsmToken::EndOfStatement)) - return Error(Parser.getTok().getLoc(), "unexpected token in directive"); - return false; - } - return true; } -/// End of assembly processing such as updating ELF header flags. -void MipsAsmParser::emitEndOfAsmFile(MCStreamer &OutStreamer) { - if (MipsELFStreamer *MES = dyn_cast<MipsELFStreamer>(&OutStreamer)) - MES->emitELFHeaderFlagsAsm(Flags); - MCTargetAsmParser::emitEndOfAsmFile(OutStreamer); -} - extern "C" void LLVMInitializeMipsAsmParser() { RegisterMCAsmParser<MipsAsmParser> X(TheMipsTarget); RegisterMCAsmParser<MipsAsmParser> Y(TheMipselTarget); diff --git a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp index 144cb1e..cfcb877 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp +++ b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp @@ -7,7 +7,6 @@ // //===-------------------------------------------------------------------===// #include "MCTargetDesc/MipsELFStreamer.h" -#include "AsmParser/MipsAsmFlags.h" #include "MipsSubtarget.h" #include "llvm/MC/MCAssembler.h" #include "llvm/MC/MCELF.h" @@ -67,26 +66,10 @@ namespace llvm { Reloc::Model RM = Subtarget.getRelocationModel(); if (RM == Reloc::PIC_ || RM == Reloc::Default) EFlags |= ELF::EF_MIPS_PIC; - - MCA.setELFHeaderEFlags(EFlags); - } - - // For llvm-mc. Set a group of ELF header flags - void MipsELFStreamer::emitELFHeaderFlagsAsm(const MipsMCAsmFlags &Flags) { - - // Update e_header flags - MCAssembler &MCA = getAssembler(); - unsigned EFlags = MCA.getELFHeaderEFlags(); - - // Relocation Model - if (Flags.isModelCpic() || Flags.isModelDefault()) - EFlags |= ELF::EF_MIPS_CPIC; - if (Flags.isModelStatic()) + else if (RM == Reloc::Static) ; // Do nothing for Reloc::Static - else if (Flags.isModelPic() || Flags.isModelDefault()) - EFlags |= ELF::EF_MIPS_PIC; else - assert(0 && "Unsupported relocation model for e_flags"); + llvm_unreachable("Unsupported relocation model for e_flags"); MCA.setELFHeaderEFlags(EFlags); } diff --git a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h index 9987f34..b10ccc7 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h +++ b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h @@ -13,7 +13,6 @@ namespace llvm { class MipsAsmPrinter; -class MipsMCAsmFlags; class MipsSubtarget; class MCSymbol; @@ -27,7 +26,6 @@ public: ~MipsELFStreamer() {} void emitELFHeaderFlagsCG(const MipsSubtarget &Subtarget); - void emitELFHeaderFlagsAsm(const MipsMCAsmFlags &MAFlags); void emitMipsSTOCG(const MipsSubtarget &Subtarget, MCSymbol *Sym, unsigned Val); diff --git a/lib/Target/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp index b12cb62..1dc3326 100644 --- a/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/lib/Target/Mips/MipsAsmPrinter.cpp @@ -594,8 +594,8 @@ void MipsAsmPrinter::EmitEndOfAsmFile(Module &M) { // Emit Mips ELF register info Subtarget->getMReginfo().emitMipsReginfoSectionCG( OutStreamer, getObjFileLowering(), *Subtarget); - MipsELFStreamer *MES = cast<MipsELFStreamer>(&OutStreamer); - MES->emitELFHeaderFlagsCG(*Subtarget); + if (MipsELFStreamer *MES = dyn_cast<MipsELFStreamer>(&OutStreamer)) + MES->emitELFHeaderFlagsCG(*Subtarget); } void MipsAsmPrinter::PrintDebugValueComment(const MachineInstr *MI, diff --git a/test/MC/Mips/mips_directives.s b/test/MC/Mips/mips_directives.s index b1f8182..bbb2616 100644 --- a/test/MC/Mips/mips_directives.s +++ b/test/MC/Mips/mips_directives.s @@ -1,12 +1,9 @@ # RUN: llvm-mc -show-encoding -triple mips-unknown-unknown %s | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple mips-unknown-unknown %s | \ -# RUN: llvm-readobj -h | FileCheck -check-prefix=CHECK-ELF %s # # CHECK: .text # CHECK: $BB0_2: $BB0_2: - .ent directives_test - .abicalls + .ent directives_test .frame $sp,0,$ra .mask 0x00000000,0 .fmask 0x00000000,0 @@ -46,5 +43,3 @@ $JTI0_0: # CHECK: and $3, $15, $15 # encoding: [0x01,0xef,0x18,0x24] abs.s f6,FPU_MASK and r3,$t7,STORE_MASK - -# CHECK-ELF: Flags [ (0x6) |