* expr.c (expr): Simplify foo-foo here.
(clean_up_expression): Remove O_subtract code.
This commit is contained in:
parent
dea9781227
commit
f6cf69d700
2 changed files with 19 additions and 31 deletions
|
@ -1,9 +1,13 @@
|
||||||
2002-09-20 Alan Modra <amodra@bigpond.net.au>
|
2002-09-20 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* expr.c (expr): Simplify foo-foo here.
|
||||||
|
(clean_up_expression): Remove O_subtract code.
|
||||||
|
|
||||||
* write.h (struct fix): Add fx_dot_value.
|
* write.h (struct fix): Add fx_dot_value.
|
||||||
(dot_value): Declare.
|
(dot_value): Declare.
|
||||||
* write.c (dot_value): New var.
|
* write.c (dot_value): New var.
|
||||||
(fix_new_internal): Save dot_value as fx_dot_value.
|
(fix_new_internal): Save dot_value as fx_dot_value.
|
||||||
|
(fixup_segment): Adjust fx_offset using fx_dot_value.
|
||||||
* expr.c (expr): Update dot_value.
|
* expr.c (expr): Update dot_value.
|
||||||
|
|
||||||
2002-09-19 Jakub Jelinek <jakub@redhat.com>
|
2002-09-19 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
20
gas/expr.c
20
gas/expr.c
|
@ -1347,8 +1347,6 @@ operand (expressionP)
|
||||||
Elsewise we waste time special-case testing. Sigh. Ditto SEG_ABSENT.
|
Elsewise we waste time special-case testing. Sigh. Ditto SEG_ABSENT.
|
||||||
|
|
||||||
Out: expressionS may have been modified:
|
Out: expressionS may have been modified:
|
||||||
'foo-foo' symbol references cancelled to 0, which changes X_op
|
|
||||||
from O_subtract to O_constant.
|
|
||||||
Unused fields zeroed to help expr (). */
|
Unused fields zeroed to help expr (). */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1371,21 +1369,6 @@ clean_up_expression (expressionP)
|
||||||
case O_bit_not:
|
case O_bit_not:
|
||||||
expressionP->X_op_symbol = NULL;
|
expressionP->X_op_symbol = NULL;
|
||||||
break;
|
break;
|
||||||
case O_subtract:
|
|
||||||
if (expressionP->X_op_symbol == expressionP->X_add_symbol
|
|
||||||
|| ((symbol_get_frag (expressionP->X_op_symbol)
|
|
||||||
== symbol_get_frag (expressionP->X_add_symbol))
|
|
||||||
&& SEG_NORMAL (S_GET_SEGMENT (expressionP->X_add_symbol))))
|
|
||||||
{
|
|
||||||
addressT diff = (S_GET_VALUE (expressionP->X_add_symbol)
|
|
||||||
- S_GET_VALUE (expressionP->X_op_symbol));
|
|
||||||
|
|
||||||
expressionP->X_op = O_constant;
|
|
||||||
expressionP->X_add_symbol = NULL;
|
|
||||||
expressionP->X_op_symbol = NULL;
|
|
||||||
expressionP->X_add_number += diff;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1751,7 +1734,8 @@ expr (rankarg, resultP)
|
||||||
&& resultP->X_op == O_symbol
|
&& resultP->X_op == O_symbol
|
||||||
&& (symbol_get_frag (right.X_add_symbol)
|
&& (symbol_get_frag (right.X_add_symbol)
|
||||||
== symbol_get_frag (resultP->X_add_symbol))
|
== symbol_get_frag (resultP->X_add_symbol))
|
||||||
&& SEG_NORMAL (rightseg))
|
&& (SEG_NORMAL (rightseg)
|
||||||
|
|| right.X_add_symbol == resultP->X_add_symbol))
|
||||||
{
|
{
|
||||||
resultP->X_add_number -= right.X_add_number;
|
resultP->X_add_number -= right.X_add_number;
|
||||||
resultP->X_add_number += (S_GET_VALUE (resultP->X_add_symbol)
|
resultP->X_add_number += (S_GET_VALUE (resultP->X_add_symbol)
|
||||||
|
|
Loading…
Add table
Reference in a new issue