summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/gas/config/tc-i386-intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.25/gas/config/tc-i386-intel.c')
-rw-r--r--binutils-2.25/gas/config/tc-i386-intel.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/binutils-2.25/gas/config/tc-i386-intel.c b/binutils-2.25/gas/config/tc-i386-intel.c
index e534110f..86b96ebe 100644
--- a/binutils-2.25/gas/config/tc-i386-intel.c
+++ b/binutils-2.25/gas/config/tc-i386-intel.c
@@ -1,6 +1,5 @@
/* tc-i386.c -- Assemble Intel syntax code for ix86/x86-64
- Copyright 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2009-2014 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -415,23 +414,21 @@ static int i386_intel_simplify (expressionS *e)
if (this_operand >= 0 && intel_state.in_bracket)
{
expressionS *scale = NULL;
-
- if (intel_state.index)
- --scale;
+ int has_index = (intel_state.index != NULL);
if (!intel_state.in_scale++)
intel_state.scale_factor = 1;
ret = i386_intel_simplify_symbol (e->X_add_symbol);
- if (ret && !scale && intel_state.index)
+ if (ret && !has_index && intel_state.index)
scale = symbol_get_value_expression (e->X_op_symbol);
if (ret)
ret = i386_intel_simplify_symbol (e->X_op_symbol);
- if (ret && !scale && intel_state.index)
+ if (ret && !scale && !has_index && intel_state.index)
scale = symbol_get_value_expression (e->X_add_symbol);
- if (ret && scale && (scale + 1))
+ if (ret && scale)
{
resolve_expression (scale);
if (scale->X_op != O_constant