[patch] (z80,comitted): remove redundant code

Arnold Metselaar arnold.metselaar@planet.nl
Mon Apr 10 00:49:00 GMT 2006


Hi,

There was a fix for PR997 in config/tc-z80.c. Alan Modra has now put a very 
similar fix in frags.c and expr.c. Since the problem and the fix are machine independent 
I have removed the fix from config/tc-z80.c.

Arnold

gas/Changelog:
	* config/tc-z80.c (z80_optimize_expr): Removed; redundant since 2006-04-04.
	* config/tc-z80.h (z80_optimize_expr, md_optimize_expr): Removed.

Index: config/tc-z80.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-z80.c,v
retrieving revision 1.4
diff -u -p -r1.4 tc-z80.c
--- config/tc-z80.c     5 Feb 2006 11:57:35 -0000       1.4
+++ config/tc-z80.c     9 Apr 2006 17:52:40 -0000
@@ -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)
Index: config/tc-z80.h
===================================================================
RCS file: /cvs/src/src/gas/config/tc-z80.h,v
retrieving revision 1.3
diff -u -p -r1.3 tc-z80.h
--- config/tc-z80.h     5 Feb 2006 11:57:35 -0000       1.3
+++ config/tc-z80.h     9 Apr 2006 17:52:40 -0000
@@ -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



More information about the Binutils mailing list