diff options
Diffstat (limited to 'gcc/config/cris/cris.c')
| -rw-r--r-- | gcc/config/cris/cris.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 8271a4f..babeaa3 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -3257,6 +3257,22 @@ cris_expand_pic_call_address (rtx *opp) } } +/* Make sure operands are in the right order for an addsi3 insn as + generated by a define_split. A MEM as the first operand isn't + recognized by addsi3 after reload. OPERANDS contains the operands, + with the first at OPERANDS[N] and the second at OPERANDS[N+1]. */ + +void +cris_order_for_addsi3 (rtx *operands, int n) +{ + if (MEM_P (operands[n])) + { + rtx tem = operands[n]; + operands[n] = operands[n + 1]; + operands[n + 1] = tem; + } +} + /* Use from within code, from e.g. PRINT_OPERAND and PRINT_OPERAND_ADDRESS. Macros used in output_addr_const need to emit different things depending on whether code operand or constant is |
