5 typedef union rtunion_def {
10 typedef struct rtx_def
14 unsigned int flag1 : 1;
15 unsigned int flag2 : 2;
33 'a', 'e', 'i', '1', '1'
36 #define GET_CODE(rtx) ((enum rtx_code) (rtx)->code)
37 #define XEXP(RTX,N) ((RTX)->fld[N].rtx)
38 #define GET_RTX_CLASS(CODE) (rtx_class[(int)(CODE)])
40 static rtx* t(rtx *loc, rtx insn) {
41 register rtx x = *loc;
43 enum rtx_code code = GET_CODE(x);
47 switch(GET_RTX_CLASS(code)) {
50 split = t(&XEXP(x, 2), insn);
58 split = t(&XEXP(x, 1), insn);
64 if(GET_CODE(x) != AND && GET_CODE(XEXP(x, 0)) == AND) {
67 split = t(&XEXP(x, 0), insn);
69 /* in r15484 (and probably earlier) tail-recursion produces a jump
70 to the beginning here */
80 struct rtx_def test_rtx_inner = {
90 struct rtx_def test_rtx = {
96 { .rtx = &test_rtx_inner }
103 //printf("%p %p %p\n", &test_rtx, &test_rtx_inner, &blo);
104 rtx *res = t(&blo, NULL);
105 //assert(res == &XEXP(blo, 0));
106 printf("Res: %p\n", res);