From b1e0f76352cd4a050834f57805e5c6481fd9329f Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Mon, 25 Oct 2010 20:18:56 +0000 Subject: [PATCH] MC/AsmParser: Fix relative precedence of {+,-} and comparison ops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117299 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCParser/AsmParser.cpp | 26 ++++++++++++++------------ test/MC/AsmParser/exprs.s | 3 ++- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 5e90898134f..a7045c5cd59 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -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; } } diff --git a/test/MC/AsmParser/exprs.s b/test/MC/AsmParser/exprs.s index 1cc96a3f418..153701d6852 100644 --- a/test/MC/AsmParser/exprs.s +++ b/test/MC/AsmParser/exprs.s @@ -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 -- 2.11.0