* config/bfin-parse.y (value_match): Use int instead of long.
authorJie Zhang <jie.zhang@analog.com>
Wed, 2 Sep 2009 08:57:38 +0000 (08:57 +0000)
committerJie Zhang <jie.zhang@analog.com>
Wed, 2 Sep 2009 08:57:38 +0000 (08:57 +0000)
From  Michael Frysinger  <michael.frysinger@analog.com>
* config/bfin-defs.h (Expr_Node_Value): Declare the i_value
member as long long.

gas/ChangeLog
gas/config/bfin-defs.h
gas/config/bfin-parse.y

index dd2257687f3f6ec6d0bb501fd676f1a4a0219c6a..51384a9cf213501aef3c046318558221f6b15768 100644 (file)
@@ -1,3 +1,11 @@
+2009-09-02  Jie Zhang  <jie.zhang@analog.com>
+
+       * config/bfin-parse.y (value_match): Use int instead of long.
+
+       From  Michael Frysinger  <michael.frysinger@analog.com>
+       * config/bfin-defs.h (Expr_Node_Value): Declare the i_value
+       member as long long.
+
 2009-09-02  Jie Zhang  <jie.zhang@analog.com>
 
        From  Bernd Schmidt  <bernd.schmidt@analog.com>
index cc6569d649c4c44b43217bec25724c2894d2c41c..8923b73f806b7441aa6c2fb4063e4debfb70312b 100644 (file)
@@ -287,7 +287,7 @@ typedef enum
 typedef union
 {
   const char *s_value;         /* if relocation symbol, the text.  */
-  int i_value;                 /* if constant, the value.  */
+  long long i_value;           /* if constant, the value.  */
   Expr_Op_Type op_value;       /* if operator, the value.  */
 } Expr_Node_Value;
 
index 4a2fa6a5e92ff3021ec651d920c4c1f37e8bd378..72db6d91825b6dc18a817a088ac51adb14ef3a56 100644 (file)
@@ -4376,11 +4376,11 @@ mkexpr (int x, SYMBOL_T s)
 static int
 value_match (Expr_Node *expr, int sz, int sign, int mul, int issigned)
 {
-  long umax = (1L << sz) - 1;
-  long min = -1L << (sz - 1);
-  long max = (1L << (sz - 1)) - 1;
+  int umax = (1 << sz) - 1;
+  int min = -1 << (sz - 1);
+  int max = (1 << (sz - 1)) - 1;
        
-  long v = EXPR_VALUE (expr);
+  int v = (EXPR_VALUE (expr)) & 0xffffffff;
 
   if ((v % mul) != 0)
     {