final.c: Include rtl-iter.h.
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 28 Aug 2014 06:23:18 +0000 (06:23 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 28 Aug 2014 06:23:18 +0000 (06:23 +0000)
gcc/
* final.c: Include rtl-iter.h.
(mark_symbol_ref_as_used): Delete.
(mark_symbol_refs_as_used): Use FOR_EACH_SUBRTX instead of
for_each_rtx.

From-SVN: r214639

gcc/ChangeLog
gcc/final.c

index 3d822a528e338318976f84af7711b32d727dca56..0384e6ebc703b535476377d4b26ca57cb99863dd 100644 (file)
@@ -1,3 +1,10 @@
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * final.c: Include rtl-iter.h.
+       (mark_symbol_ref_as_used): Delete.
+       (mark_symbol_refs_as_used): Use FOR_EACH_SUBRTX instead of
+       for_each_rtx.
+
 2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * emit-rtl.c: Include rtl-iter.h.
index 15e58e5f760336df6def37eaa5a9954c130e7f0d..3103bacffd1333e9c90b8a2b384876fec42d76a9 100644 (file)
@@ -81,6 +81,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h" /* for dump_function_header */
 #include "asan.h"
 #include "wide-int-print.h"
+#include "rtl-iter.h"
 
 #ifdef XCOFF_DEBUGGING_INFO
 #include "xcoffout.h"          /* Needed for external data
@@ -3778,38 +3779,19 @@ output_asm_label (rtx x)
   assemble_name (asm_out_file, buf);
 }
 
-/* Helper rtx-iteration-function for mark_symbol_refs_as_used and
-   output_operand.  Marks SYMBOL_REFs as referenced through use of
-   assemble_external.  */
-
-static int
-mark_symbol_ref_as_used (rtx *xp, void *dummy ATTRIBUTE_UNUSED)
-{
-  rtx x = *xp;
-
-  /* If we have a used symbol, we may have to emit assembly
-     annotations corresponding to whether the symbol is external, weak
-     or has non-default visibility.  */
-  if (GET_CODE (x) == SYMBOL_REF)
-    {
-      tree t;
-
-      t = SYMBOL_REF_DECL (x);
-      if (t)
-       assemble_external (t);
-
-      return -1;
-    }
-
-  return 0;
-}
-
 /* Marks SYMBOL_REFs in x as referenced through use of assemble_external.  */
 
 void
 mark_symbol_refs_as_used (rtx x)
 {
-  for_each_rtx (&x, mark_symbol_ref_as_used, NULL);
+  subrtx_iterator::array_type array;
+  FOR_EACH_SUBRTX (iter, array, x, ALL)
+    {
+      const_rtx x = *iter;
+      if (GET_CODE (x) == SYMBOL_REF)
+       if (tree t = SYMBOL_REF_DECL (x))
+         assemble_external (t);
+    }
 }
 
 /* Print operand X using machine-dependent assembler syntax.
@@ -3835,7 +3817,7 @@ output_operand (rtx x, int code ATTRIBUTE_UNUSED)
   if (x == NULL_RTX)
     return;
 
-  for_each_rtx (&x, mark_symbol_ref_as_used, NULL);
+  mark_symbol_refs_as_used (x);
 }
 
 /* Print a memory reference operand for address X using