[llvm-commits] [llvm] r123740 - /llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp

Daniel Dunbar daniel at zuster.org
Mon Jan 17 21:34:24 PST 2011


Author: ddunbar
Date: Mon Jan 17 23:34:24 2011
New Revision: 123740

URL: http://llvm.org/viewvc/llvm-project?rev=123740&view=rev
Log:
McARM: Unify ParseMemory() successfull return.

Modified:
    llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp

Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=123740&r1=123739&r2=123740&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Mon Jan 17 23:34:24 2011
@@ -720,17 +720,19 @@
   bool OffsetIsReg = false;
   bool Negative = false;
   bool Writeback = false;
+  ARMOperand *WBOp = 0;
+  int OffsetRegNum = -1;
+  bool OffsetRegShifted = false;
+  enum ShiftType ShiftType = Lsl;
+  const MCExpr *ShiftAmount = 0;
+  const MCExpr *Offset = 0;
 
   // First look for preindexed address forms, that is after the "[Rn" we now
   // have to see if the next token is a comma.
   if (Tok.is(AsmToken::Comma)) {
     Preindexed = true;
     Parser.Lex(); // Eat comma token.
-    int OffsetRegNum;
-    bool OffsetRegShifted;
-    enum ShiftType ShiftType;
-    const MCExpr *ShiftAmount = 0;
-    const MCExpr *Offset = 0;
+
     if (ParseMemoryOffsetReg(Negative, OffsetRegShifted, ShiftType, ShiftAmount,
                              Offset, OffsetIsReg, OffsetRegNum, E))
       return true;
@@ -743,29 +745,12 @@
     Parser.Lex(); // Eat right bracket token.
 
     const AsmToken &ExclaimTok = Parser.getTok();
-    ARMOperand *WBOp = 0;
     if (ExclaimTok.is(AsmToken::Exclaim)) {
       WBOp = ARMOperand::CreateToken(ExclaimTok.getString(),
                                      ExclaimTok.getLoc());
       Writeback = true;
       Parser.Lex(); // Eat exclaim token
     }
-
-    // Force Offset to exist if used.
-    if (!OffsetIsReg) {
-      if (!Offset)
-        Offset = MCConstantExpr::Create(0, getContext());
-    }
-      
-    Operands.push_back(ARMOperand::CreateMem(BaseRegNum, OffsetIsReg, Offset,
-                                             OffsetRegNum, OffsetRegShifted,
-                                             ShiftType, ShiftAmount, Preindexed,
-                                             Postindexed, Negative, Writeback,
-                                             S, E));
-    if (WBOp)
-      Operands.push_back(WBOp);
-
-    return false;
   } else {
     // The "[Rn" we have so far was not followed by a comma.
 
@@ -774,12 +759,6 @@
     E = Tok.getLoc();
     Parser.Lex(); // Eat right bracket token.
 
-    int OffsetRegNum = -1;
-    bool OffsetRegShifted = false;
-    enum ShiftType ShiftType = Lsl;
-    const MCExpr *ShiftAmount = 0;
-    const MCExpr *Offset = 0;
-
     const AsmToken &NextTok = Parser.getTok();
 
     if (NextTok.isNot(AsmToken::EndOfStatement)) {
@@ -798,20 +777,23 @@
                                E))
         return true;
     }
+  }
 
-    // Force Offset to exist if used.
-    if (!OffsetIsReg) {
-      if (!Offset)
-        Offset = MCConstantExpr::Create(0, getContext());
-    }
-
-    Operands.push_back(ARMOperand::CreateMem(BaseRegNum, OffsetIsReg, Offset,
-                                             OffsetRegNum, OffsetRegShifted,
-                                             ShiftType, ShiftAmount, Preindexed,
-                                             Postindexed, Negative, Writeback,
-                                             S, E));
-    return false;
+  // Force Offset to exist if used.
+  if (!OffsetIsReg) {
+    if (!Offset)
+      Offset = MCConstantExpr::Create(0, getContext());
   }
+
+  Operands.push_back(ARMOperand::CreateMem(BaseRegNum, OffsetIsReg, Offset,
+                                           OffsetRegNum, OffsetRegShifted,
+                                           ShiftType, ShiftAmount, Preindexed,
+                                           Postindexed, Negative, Writeback,
+                                           S, E));
+  if (WBOp)
+    Operands.push_back(WBOp);
+
+  return false;
 }
 
 /// Parse the offset of a memory operand after we have seen "[Rn," or "[Rn],"





More information about the llvm-commits mailing list