[mips] Delete MipsFunctionInfo::EmitNOAT. Unconditionally print directive
authorAkira Hatanaka <ahatanaka@mips.com>
Fri, 2 Nov 2012 20:56:25 +0000 (20:56 +0000)
committerAkira Hatanaka <ahatanaka@mips.com>
Fri, 2 Nov 2012 20:56:25 +0000 (20:56 +0000)
"set .noat" so that the assembler doesn't issue warnings when register $AT is
used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167310 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsAsmPrinter.cpp
lib/Target/Mips/MipsLongBranch.cpp
lib/Target/Mips/MipsMachineFunction.h
lib/Target/Mips/MipsSEInstrInfo.cpp
lib/Target/Mips/MipsSERegisterInfo.cpp
test/CodeGen/Mips/check-noat.ll [new file with mode: 0644]

index 83cca4752d78a3acf300b3c9b6a4c8ad265131f9..bf2818d61df00dbef8744abcab5fdf2e036ccacf 100644 (file)
@@ -239,8 +239,7 @@ void MipsAsmPrinter::EmitFunctionBodyStart() {
 
     OutStreamer.EmitRawText(StringRef("\t.set\tnoreorder"));
     OutStreamer.EmitRawText(StringRef("\t.set\tnomacro"));
-    if (MipsFI->getEmitNOAT())
-      OutStreamer.EmitRawText(StringRef("\t.set\tnoat"));
+    OutStreamer.EmitRawText(StringRef("\t.set\tnoat"));
   }
 }
 
@@ -251,9 +250,7 @@ void MipsAsmPrinter::EmitFunctionBodyEnd() {
   // always be at the function end, and we can't emit and
   // break with BB logic.
   if (OutStreamer.hasRawTextSupport()) {
-    if (MipsFI->getEmitNOAT())
-      OutStreamer.EmitRawText(StringRef("\t.set\tat"));
-
+    OutStreamer.EmitRawText(StringRef("\t.set\tat"));
     OutStreamer.EmitRawText(StringRef("\t.set\tmacro"));
     OutStreamer.EmitRawText(StringRef("\t.set\treorder"));
     OutStreamer.EmitRawText("\t.end\t" + Twine(CurrentFnSym->getName()));
index b9dbd522b70ebdcf1de1d417fbba35d6b979376f..5d9f0cffb749d83a4476f563b5f237206ddbfbbf 100644 (file)
@@ -424,8 +424,6 @@ bool MipsLongBranch::runOnMachineFunction(MachineFunction &F) {
 
   // Compute basic block addresses.
   if (TM.getRelocationModel() == Reloc::PIC_) {
-    MF->getInfo<MipsFunctionInfo>()->setEmitNOAT();
-
     uint64_t Address = 0;
 
     for (I = MBBInfos.begin(); I != E; Address += I->Size, ++I)
index 663aaecf5c06953419ef7c7c6b3f8d1112c2b58b..1b3e0a3a8e92e010f29052bc52e532764454445e 100644 (file)
@@ -51,12 +51,10 @@ class MipsFunctionInfo : public MachineFunctionInfo {
   unsigned NextStackOffset;
   bool HasByvalArg;
 
-  bool EmitNOAT;
-
 public:
   MipsFunctionInfo(MachineFunction& MF)
    : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), Mips16SPAliasReg(0),
-     VarArgsFrameIndex(0), EmitNOAT(false)
+     VarArgsFrameIndex(0)
   {}
 
   unsigned getSRetReturnReg() const { return SRetReturnReg; }
@@ -77,9 +75,6 @@ public:
     NextStackOffset = Offset;
     HasByvalArg = HasByval;
   }
-
-  bool getEmitNOAT() const { return EmitNOAT; }
-  void setEmitNOAT() { EmitNOAT = true; }
 };
 
 } // end of namespace llvm
index e4b44efd8179a49f8ff1e370beae34ca15269c36..818af0319a9d98cff4be98b24b0743a0be8e663b 100644 (file)
@@ -260,7 +260,6 @@ void MipsSEInstrInfo::adjustStackPtr(unsigned SP, int64_t Amount,
   if (isInt<16>(Amount))// addi sp, sp, amount
     BuildMI(MBB, I, DL, get(ADDiu), SP).addReg(SP).addImm(Amount);
   else { // Expand immediate that doesn't fit in 16-bit.
-    MBB.getParent()->getInfo<MipsFunctionInfo>()->setEmitNOAT();
     unsigned Reg = loadImmediate(Amount, MBB, I, DL, 0);
     BuildMI(MBB, I, DL, get(ADDu), SP).addReg(SP).addReg(Reg);
   }
index 8e2c2c5174a5f6e691545ad29c4cc5e2182f4124..b35d05c5638f8d2c1eba2bfab3c27a294b726d3d 100644 (file)
@@ -72,7 +72,6 @@ void MipsSERegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
   MachineInstr &MI = *II;
   MachineFunction &MF = *MI.getParent()->getParent();
   MachineFrameInfo *MFI = MF.getFrameInfo();
-  MipsFunctionInfo *MipsFI = MF.getInfo<MipsFunctionInfo>();
 
   const std::vector<CalleeSavedInfo> &CSI = MFI->getCalleeSavedInfo();
   int MinCSFI = 0;
@@ -119,7 +118,6 @@ void MipsSERegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
     unsigned ATReg = Subtarget.isABI_N64() ? Mips::AT_64 : Mips::AT;
     unsigned NewImm;
 
-    MipsFI->setEmitNOAT();
     unsigned Reg = TII.loadImmediate(Offset, MBB, II, DL, &NewImm);
     BuildMI(MBB, II, DL, TII.get(ADDu), ATReg).addReg(FrameReg).addReg(Reg);
 
diff --git a/test/CodeGen/Mips/check-noat.ll b/test/CodeGen/Mips/check-noat.ll
new file mode 100644 (file)
index 0000000..bfeff67
--- /dev/null
@@ -0,0 +1,11 @@
+; RUN: llc -march=mipsel < %s | FileCheck %s 
+
+define void @f() nounwind readnone {
+entry:
+; CHECK: f:
+; CHECK: .set  noat
+; CHECK: .set  at
+
+  ret void
+}
+