Revert "BR 2887108: Use overflow_ helper to catch inappropriate imm optimization"
authorCyrill Gorcunov <gorcunov@gmail.com>
Sun, 1 Nov 2009 07:24:48 +0000 (10:24 +0300)
committerCyrill Gorcunov <gorcunov@gmail.com>
Sun, 1 Nov 2009 07:24:48 +0000 (10:24 +0300)
This reverts commit 41208028ff52d190044ee7532bf14c5aca0f899a.
|
| From: "H. Peter Anvin" <hpa@zytor.com>
|
| The tests for overflow_signed() are wrong too.  Those are relevant for if a
| warning should be issued, but not for how the value should be encoded in
| the byte stream.
|

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
parser.c

index 411d17179d0c09d25a5d36f102538fe5c15f93e7..ea36e86c8e9e548eeb02a52c4b32e78d197946c4 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -840,10 +840,11 @@ is_expression:
                 result->oprs[operand].segment = NO_SEG; /* don't care again */
                 result->oprs[operand].wrt = NO_SEG;     /* still don't care */
 
-                /* Be optimistic */
                 if(optimizing >= 0 && !(result->oprs[operand].type & STRICT))
+                {
+                    /* Be optimistic */
                     result->oprs[operand].type |= SBYTE16 | SBYTE32 | SBYTE64;
-
+                }
             } else if (is_reloc(value)) {       /* it's immediate */
                 result->oprs[operand].type |= IMMEDIATE;
                 result->oprs[operand].offset = reloc_value(value);
@@ -858,14 +859,12 @@ is_expression:
                         int32_t v32 = (int32_t)v64;
                         int16_t v16 = (int16_t)v32;
 
-                        if (v64 >= -128 && v64 <= 127)
+                       if (v64 >= -128 && v64 <= 127)
                             result->oprs[operand].type |= SBYTE64;
-                        if (!overflow_signed(v64, sizeof(v32)))
-                            if (v32 >= -128 && v32 <= 127)
-                                result->oprs[operand].type |= SBYTE32;
-                        if (!overflow_signed(v64, sizeof(v16)))
-                            if (v16 >= -128 && v16 <= 127)
-                                result->oprs[operand].type |= SBYTE16;
+                       if (v32 >= -128 && v32 <= 127)
+                            result->oprs[operand].type |= SBYTE32;
+                       if (v16 >= -128 && v16 <= 127)
+                            result->oprs[operand].type |= SBYTE16;
                     }
                 }
             } else {            /* it's a register */