BUG in operator precedence in as

Alan Modra alan@linuxcare.com.au
Tue Nov 28 05:26:00 GMT 2000


On Tue, 28 Nov 2000, Mikulas Patocka wrote:

> There is bug in operator precedence in as in newer binutils (2.9.5.0.46
> and 2.10.1.0.2), 2.9.1 is correct but has other bugs. '|' and '+' have the
> same precedence. 

Here's a fix.

gas/ChangeLog
	* expr.c (STANDARD_MUL_PRECEDENCE): Correct value.
	(MRI_MUL_PRECEDENCE): Likewise.
	(op_rank): Fix a comment.

Alan Modra
-- 
Linuxcare.  Support for the Revolution.

Index: expr.c
===================================================================
RCS file: /cvs/src/src/gas/expr.c,v
retrieving revision 1.26
diff -u -p -r1.26 expr.c
--- expr.c	2000/10/30 21:59:01	1.26
+++ expr.c	2000/11/28 13:21:25
@@ -1469,7 +1469,7 @@ static operator_rankT op_rank[] = {
   0,	/* O_symbol */
   0,	/* O_symbol_rva */
   0,	/* O_register */
-  0,	/* O_bit */
+  0,	/* O_big */
   9,	/* O_uminus */
   9,	/* O_bit_not */
   9,	/* O_logical_not */
@@ -1517,8 +1517,8 @@ static operator_rankT op_rank[] = {
    mode.  Also, MRI uses a different bit_not operator, and this fixes
    that as well.  */
 
-#define STANDARD_MUL_PRECEDENCE (7)
-#define MRI_MUL_PRECEDENCE (5)
+#define STANDARD_MUL_PRECEDENCE 8
+#define MRI_MUL_PRECEDENCE 6
 
 void
 expr_set_precedence ()



More information about the Binutils mailing list