mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 05:47:26 +08:00
removed z80_optimize_expr; redundant since 2006-04-04
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2006-04-09 Arnold Metselaar <arnold.metselaar@planet.nl>
|
||||
|
||||
* config/tc-z80.c (z80_optimize_expr): Removed; redundant since 2006-04-04.
|
||||
* config/tc-z80.h (z80_optimize_expr, md_optimize_expr): Removed.
|
||||
|
||||
2006-04-07 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||
|
||||
* gas/config/tc-avr.c (mcu_types): Add support for attiny261,
|
||||
|
@ -460,70 +460,6 @@ check_mach (int ins_type)
|
||||
ins_used |= ins_type;
|
||||
}
|
||||
|
||||
/* This function tries to subtract two symbols, the generic code does
|
||||
that too, but this function tries harder.
|
||||
The behaviour of this function is not altered by extra
|
||||
fragmentations caused by the code to produce listings. */
|
||||
int
|
||||
z80_optimize_expr (expressionS *resultP, operatorT left_op,
|
||||
expressionS *right)
|
||||
{
|
||||
int res, swap, som;
|
||||
fragS *lfrag, *rfrag, *cur;
|
||||
|
||||
res = 0;
|
||||
if (left_op == O_subtract
|
||||
&& right->X_op == O_symbol
|
||||
&& resultP->X_op == O_symbol)
|
||||
{
|
||||
lfrag = symbol_get_frag (resultP->X_add_symbol);
|
||||
rfrag = symbol_get_frag (right->X_add_symbol);
|
||||
|
||||
if (S_GET_SEGMENT (right->X_add_symbol) != undefined_section
|
||||
&& (S_GET_SEGMENT (right->X_add_symbol)
|
||||
== S_GET_SEGMENT (resultP->X_add_symbol)))
|
||||
{
|
||||
for (swap = 0; (res == 0) && (swap < 2); ++swap)
|
||||
{
|
||||
if (swap)
|
||||
{
|
||||
cur = lfrag;
|
||||
lfrag = rfrag;
|
||||
rfrag = cur;
|
||||
}
|
||||
else
|
||||
cur = rfrag;
|
||||
|
||||
/* Now som == cur->fr_address - rfrag->address, except
|
||||
the latter may not have been computed yet. */
|
||||
for (som = 0; cur && cur != lfrag; cur = cur->fr_next)
|
||||
{
|
||||
if (cur->fr_type == rs_fill) /* Is the size fized? */
|
||||
som += cur->fr_fix+cur->fr_offset*cur->fr_var;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if (cur == lfrag)
|
||||
{
|
||||
resultP->X_add_number -= right->X_add_number;
|
||||
resultP->X_add_number
|
||||
+= (S_GET_VALUE (resultP->X_add_symbol)
|
||||
- S_GET_VALUE (right->X_add_symbol));
|
||||
som -= lfrag->fr_address - rfrag->fr_address;
|
||||
/* Correct the result if the fr_address
|
||||
fields are not computed yet. */
|
||||
resultP->X_add_number += (swap ? -som : som);
|
||||
resultP->X_op = O_constant;
|
||||
resultP->X_add_symbol = 0;
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Check whether an expression is indirect. */
|
||||
static int
|
||||
is_indir (const char *s)
|
||||
|
@ -55,12 +55,10 @@
|
||||
/* Define some functions to be called by generic code. */
|
||||
#define md_end z80_md_end
|
||||
#define md_start_line_hook() { if (z80_start_line_hook ()) continue; }
|
||||
#define md_optimize_expr z80_optimize_expr
|
||||
#define TC_CONS_FIX_NEW z80_cons_fix_new
|
||||
|
||||
extern void z80_md_end (void);
|
||||
extern int z80_start_line_hook (void);
|
||||
extern int z80_optimize_expr (expressionS *, operatorT, expressionS *);
|
||||
extern void z80_cons_fix_new (fragS *, int, int, expressionS *);
|
||||
|
||||
#define WORKING_DOT_WORD
|
||||
|
Reference in New Issue
Block a user