MC/AsmParser: Fix relative precedence of {+,-} and comparison ops.
authorDaniel Dunbar <daniel@zuster.org>
Mon, 25 Oct 2010 20:18:56 +0000 (20:18 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 25 Oct 2010 20:18:56 +0000 (20:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117299 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCParser/AsmParser.cpp
test/MC/AsmParser/exprs.s

index 5e90898134f63f7b1a5e3d09d5eb85e964088192..a7045c5cd597072adae9302d40f96ce9b3f22894 100644 (file)
@@ -717,13 +717,7 @@ static unsigned getBinOpPrecedence(AsmToken::TokenKind K,
     Kind = MCBinaryExpr::And;
     return 2;
 
-    // Intermediate Precedence: +, -, ==, !=, <>, <, <=, >, >=
-  case AsmToken::Plus:
-    Kind = MCBinaryExpr::Add;
-    return 3;
-  case AsmToken::Minus:
-    Kind = MCBinaryExpr::Sub;
-    return 3;
+    // Low Intermediate Precedence: ==, !=, <>, <, <=, >, >=
   case AsmToken::EqualEqual:
     Kind = MCBinaryExpr::EQ;
     return 3;
@@ -744,22 +738,30 @@ static unsigned getBinOpPrecedence(AsmToken::TokenKind K,
     Kind = MCBinaryExpr::GTE;
     return 3;
 
+    // High Intermediate Precedence: +, -
+  case AsmToken::Plus:
+    Kind = MCBinaryExpr::Add;
+    return 4;
+  case AsmToken::Minus:
+    Kind = MCBinaryExpr::Sub;
+    return 4;
+
     // Highest Precedence: *, /, %, <<, >>
   case AsmToken::Star:
     Kind = MCBinaryExpr::Mul;
-    return 4;
+    return 5;
   case AsmToken::Slash:
     Kind = MCBinaryExpr::Div;
-    return 4;
+    return 5;
   case AsmToken::Percent:
     Kind = MCBinaryExpr::Mod;
-    return 4;
+    return 5;
   case AsmToken::LessLess:
     Kind = MCBinaryExpr::Shl;
-    return 4;
+    return 5;
   case AsmToken::GreaterGreater:
     Kind = MCBinaryExpr::Shr;
-    return 4;
+    return 5;
   }
 }
 
index 1cc96a3f41823558d163b1ebe1cd6988c197880a..153701d6852ac1abfa095226daf1a86249a8b673 100644 (file)
@@ -43,7 +43,8 @@ k:
         check_expr 1 || 2, 1
         check_expr 0 || 1, 1
         check_expr 0 || 0, 0
-
+        check_expr 1 + 2 < 3 + 4, 1
+        
         .set c, 10
         check_expr c + 1, 11