This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[spu] RFA: Use new rtl iterators in ea_symbol_ref_p
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: trevor_smigiel at playstation dot sony dot com, dje dot gcc at gmail dot com, uweigand at de dot ibm dot com
- Date: Sat, 25 Oct 2014 09:57:08 +0100
- Subject: [spu] RFA: Use new rtl iterators in ea_symbol_ref_p
- Authentication-results: sourceware.org; auth=none
Make spu.c use FOR_EACH_SUBRTX instead of for_each_rtx, as part of a series
to remove uses of for_each_rtx from the ports.
Tested by making sure there were no code changes for gcc.dg, gcc.c-torture
and g++.dg for spu-elf. OK to install?
Thanks,
Richard
gcc/
* config/spu/spu.c: Include rtl-iter.h
(ea_symbol_ref): Replace with...
(ea_symbol_ref_p): ...this new function.
(spu_legitimate_address_p): Update call accordingly.
(spu_legitimate_constant_p): Likewise. Use FOR_EACH_SUBRTX.
Index: gcc/config/spu/spu.c
===================================================================
--- gcc/config/spu/spu.c 2014-10-25 09:48:53.108538042 +0100
+++ gcc/config/spu/spu.c 2014-10-25 09:51:14.796788623 +0100
@@ -69,6 +69,7 @@
#include "dumpfile.h"
#include "cfgloop.h"
#include "builtins.h"
+#include "rtl-iter.h"
/* Builtin types, data and prototypes. */
@@ -3466,10 +3467,9 @@ exp2_immediate_p (rtx op, enum machine_m
/* Return true if X is a SYMBOL_REF to an __ea qualified variable. */
-static int
-ea_symbol_ref (rtx *px, void *data ATTRIBUTE_UNUSED)
+static bool
+ea_symbol_ref_p (const_rtx x)
{
- rtx x = *px;
tree decl;
if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS)
@@ -3496,13 +3496,15 @@ ea_symbol_ref (rtx *px, void *data ATTRI
bool
spu_legitimate_constant_p (enum machine_mode mode, rtx x)
{
+ subrtx_iterator::array_type array;
if (GET_CODE (x) == HIGH)
x = XEXP (x, 0);
/* Reject any __ea qualified reference. These can't appear in
instructions but must be forced to the constant pool. */
- if (for_each_rtx (&x, ea_symbol_ref, 0))
- return 0;
+ FOR_EACH_SUBRTX (iter, array, x, ALL)
+ if (ea_symbol_ref_p (*iter))
+ return 0;
/* V4SI with all identical symbols is valid. */
if (!flag_pic
@@ -3548,7 +3550,7 @@ spu_legitimate_address_p (enum machine_m
case CONST:
/* Keep __ea references until reload so that spu_expand_mov can see them
in MEMs. */
- if (ea_symbol_ref (&x, 0))
+ if (ea_symbol_ref_p (x))
return !reload_in_progress && !reload_completed;
return !TARGET_LARGE_MEM;