/* PR 58106 testcase. Verify that rdesc chain creating and lookup works with recursive inlining and master clone creation. */ /* { dg-do compile } */ /* { dg-options "-O3" } */ typedef struct rtx_def *rtx; enum rtx_code { LAST_AND_UNUSED_RTX_CODE}; extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)]; struct rtx_def { enum rtx_code code; }; typedef int (*rtx_function) (rtx *, void *); extern int for_each_rtx (rtx *, rtx_function, void *); int replace_label (rtx *x, void *data) { rtx l = *x; if (l == (rtx) 0) { { rtx new_c, new_l; for_each_rtx (&new_c, replace_label, data); } } } static int for_each_rtx_1 (rtx exp, int n, rtx_function f, void *data) { int result, i, j; const char *format = (rtx_format[(int) (((enum rtx_code) (exp)->code))]); rtx *x; for (; format[n] != '\0'; n++) { switch (format[n]) { case 'e': result = (*f) (x, data); { result = for_each_rtx_1 (*x, i, f, data); } } } } int for_each_rtx (rtx *x, rtx_function f, void *data) { int i; return for_each_rtx_1 (*x, i, f, data); }