gcc/ * alias.c: Include rtl-iter.h. (refs_newer_value_cb): Delete. (refs_newer_value_p): Use FOR_EACH_SUBRTX instead of for_each_rtx.
Index: gcc/alias.c =================================================================== --- gcc/alias.c 2014-08-03 11:25:10.551960499 +0100 +++ gcc/alias.c 2014-08-03 11:25:20.611059950 +0100 @@ -48,6 +48,7 @@ Software Foundation; either version 3, o #include "is-a.h" #include "gimple.h" #include "gimple-ssa.h" +#include "rtl-iter.h" /* The aliasing API provided here solves related but different problems: @@ -1853,27 +1854,18 @@ base_alias_check (rtx x, rtx x_base, rtx return 1; } -/* Callback for for_each_rtx, that returns 1 upon encountering a VALUE - whose UID is greater than the int uid that D points to. */ - -static int -refs_newer_value_cb (rtx *x, void *d) -{ - if (GET_CODE (*x) == VALUE && CSELIB_VAL_PTR (*x)->uid > *(int *)d) - return 1; - - return 0; -} - /* Return TRUE if EXPR refers to a VALUE whose uid is greater than that of V. */ static bool -refs_newer_value_p (rtx expr, rtx v) +refs_newer_value_p (const_rtx expr, rtx v) { int minuid = CSELIB_VAL_PTR (v)->uid; - - return for_each_rtx (&expr, refs_newer_value_cb, &minuid); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, expr, NONCONST) + if (GET_CODE (*iter) == VALUE && CSELIB_VAL_PTR (*iter)->uid > minuid) + return true; + return false; } /* Convert the address X into something we can use. This is done by returning