| Index: lib/Target/Mips/MipsAsmPrinter.cpp
|
| diff --git a/lib/Target/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp
|
| index 832fa05be0d7cb1a8399104e9f7c23637a7e6ad7..0e35858ab4d3618a7830d144713224578606e555 100644
|
| --- a/lib/Target/Mips/MipsAsmPrinter.cpp
|
| +++ b/lib/Target/Mips/MipsAsmPrinter.cpp
|
| @@ -39,6 +39,7 @@
|
| #include "llvm/MC/MCELFStreamer.h"
|
| #include "llvm/MC/MCExpr.h"
|
| #include "llvm/MC/MCInst.h"
|
| +#include "llvm/MC/MCNaCl.h"
|
| #include "llvm/MC/MCSection.h"
|
| #include "llvm/MC/MCSectionELF.h"
|
| #include "llvm/MC/MCSymbol.h"
|
| @@ -741,7 +742,33 @@ void MipsAsmPrinter::EmitStartOfAsmFile(Module &M) {
|
| Subtarget->isABI_FPXX()))
|
| getTargetStreamer().emitDirectiveModuleOddSPReg(Subtarget->useOddSPReg(),
|
| Subtarget->isABI_O32());
|
| +
|
| + // @LOCALMOD-START
|
| + if (Subtarget->isTargetNaCl()) {
|
| + initializeNaClMCStreamer(OutStreamer, OutContext,
|
| + Triple(Subtarget->getTargetTriple()));
|
| + }
|
| + // @LOCALMOD-END
|
| +}
|
| +
|
| +// @LOCALMOD-START
|
| +unsigned MipsAsmPrinter::GetTargetLabelAlign(const MachineInstr *MI) const {
|
| + if (Subtarget->isTargetNaCl()) {
|
| + switch (MI->getOpcode()) {
|
| + default: return 0;
|
| + // These labels may indicate an indirect entry point that is
|
| + // externally reachable and hence must be bundle aligned.
|
| + // Note: these labels appear to be always at basic block beginnings
|
| + // so it may be possible to simply set the MBB alignment.
|
| + // However, it is unclear whether this always holds.
|
| + case TargetOpcode::EH_LABEL:
|
| + case TargetOpcode::GC_LABEL:
|
| + return 4;
|
| + }
|
| + }
|
| + return 0;
|
| }
|
| +// @LOCALMOD-END
|
|
|
| void MipsAsmPrinter::EmitJal(MCSymbol *Symbol) {
|
| MCInst I;
|
|
|