[llvm-commits] [llvm] r123321 - in /llvm/trunk: lib/Target/ARM/AsmParser/ARMAsmParser.cpp test/MC/ARM/reg-list.s

Bill Wendling isanbard at gmail.com
Wed Jan 12 13:20:59 PST 2011


Author: void
Date: Wed Jan 12 15:20:59 2011
New Revision: 123321

URL: http://llvm.org/viewvc/llvm-project?rev=123321&view=rev
Log:
Sort the register list based on the *actual* register numbers rather than the
enum values we give to them. <rdar://problem/8823730>

Added:
    llvm/trunk/test/MC/ARM/reg-list.s
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=123321&r1=123320&r2=123321&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Wed Jan 12 15:20:59 2011
@@ -583,15 +583,15 @@
   SmallVectorImpl<std::pair<unsigned, SMLoc> >::const_iterator
     RI = Registers.begin(), RE = Registers.end();
 
-  DenseMap<unsigned, bool> RegMap;
-  RegMap[RI->first] = true;
-
-  unsigned HighRegNum = RI->first;
+  unsigned HighRegNum = getARMRegisterNumbering(RI->first);
   bool EmittedWarning = false;
 
+  DenseMap<unsigned, bool> RegMap;
+  RegMap[HighRegNum] = true;
+
   for (++RI; RI != RE; ++RI) {
     const std::pair<unsigned, SMLoc> &RegInfo = *RI;
-    unsigned Reg = RegInfo.first;
+    unsigned Reg = getARMRegisterNumbering(RegInfo.first);
 
     if (RegMap[Reg]) {
       Error(RegInfo.second, "register duplicated in register list");

Added: llvm/trunk/test/MC/ARM/reg-list.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/reg-list.s?rev=123321&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/reg-list.s (added)
+++ llvm/trunk/test/MC/ARM/reg-list.s Wed Jan 12 15:20:59 2011
@@ -0,0 +1,8 @@
+@ RUN: llvm-mc -triple thumb-apple-darwin10 -show-encoding < %s 2> %t | FileCheck %s
+@ RUN: FileCheck --check-prefix=CHECK-WARNINGS < %t %s
+        
+        push    {r7, lr}
+@ CHECK-WARNINGS: register not in ascending order in register list
+
+        push	{lr, r7}
+@ CHECK: push {lr, r7}





More information about the llvm-commits mailing list