1 /* { dg-do compile } */
3 typedef union rtunion_def
{
6 typedef struct rtx_def
{
10 extern rtx recog_operand
[];
11 extern rtx
*recog_operand_loc
[];
12 extern int reload_n_operands
;
13 extern void find_dummy_reload (int, int);
14 extern int asm_noperands (rtx
);
15 extern int n_occurrences (char **);
16 char operands_match
[10][10];
17 void find_reloads (rtx insn
, int n_alternatives
, int commutative
)
21 char *constraints
[10];
22 int address_reloaded
[10];
23 int this_alternative
[10];
24 char this_alternative_win
[10];
25 int this_alternative_matches
[10];
26 int this_alternative_number
;
27 rtx body
= ((insn
)->fld
[3].rtx
);
31 reload_n_operands
= noperands
= asm_noperands (body
);
32 n_alternatives
= n_occurrences (constraints
);
34 for (this_alternative_number
= 0;
35 this_alternative_number
< n_alternatives
;
36 this_alternative_number
++)
41 register char *p
= constraints
[i
];
45 register rtx operand
= recog_operand
[i
];
47 this_alternative_win
[i
] = 0;
48 this_alternative
[i
] = 1;
49 while (*p
&& (c
= *p
++) != ',')
54 this_alternative_matches
[i
] = c
;
56 || i
!= commutative
+ 1)
57 && operands_match
[c
][i
])
58 win
= this_alternative_win
[c
];
60 find_dummy_reload (operand_mode
[i
], this_alternative
[c
]);
61 if (! win
|| force_reload
)
62 for (j
= 0; j
< i
; j
++)
63 if (this_alternative_matches
[j
]
64 == this_alternative_matches
[i
])
68 if (operand
->code
== 2
69 && ! address_reloaded
[i
]
70 && operand
->fld
[0].rtx
->code
== 3)