From 9f37760abed226a27061ded75d50be803ef73a96 Mon Sep 17 00:00:00 2001 From: Kyrylo Tkachov Date: Tue, 18 Nov 2014 10:10:53 +0000 Subject: [PATCH] [ARM] Use std::swap instead of manually swapping * config/arm/arm.md (unaligned_loaddi): Use std::swap instead of manual swapping implementation. (movcond_addsi): Likewise. * config/arm/arm.c (arm_canonicalize_comparison): Likewise. (arm_select_dominance_cc_mode): Likewise. (arm_reload_out_hi): Likewise. (gen_operands_ldrd_strd): Likewise. (output_move_double): Likewise. (arm_print_operand_address): Likewise. (thumb_output_move_mem_multiple): Likewise. (SWAP_RTX): Delete. From-SVN: r217701 --- gcc/ChangeLog | 14 ++++++++++ gcc/config/arm/arm.c | 63 ++++++++++--------------------------------- gcc/config/arm/arm.md | 16 +++-------- 3 files changed, 32 insertions(+), 61 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa97da71254..52fa23be23b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2014-11-18 Kyrylo Tkachov + + * config/arm/arm.md (unaligned_loaddi): Use std::swap instead of + manual swapping implementation. + (movcond_addsi): Likewise. + * config/arm/arm.c (arm_canonicalize_comparison): Likewise. + (arm_select_dominance_cc_mode): Likewise. + (arm_reload_out_hi): Likewise. + (gen_operands_ldrd_strd): Likewise. + (output_move_double): Likewise. + (arm_print_operand_address): Likewise. + (thumb_output_move_mem_multiple): Likewise. + (SWAP_RTX): Delete. + 2014-11-18 James Greenhalgh * config/arm/arm-builtins.c (CONVERT_QUALIFIERS): Delete. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index e37465e98ca..64494e85392 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -4606,7 +4606,6 @@ arm_canonicalize_comparison (int *code, rtx *op0, rtx *op1, for GTU/LEU in Thumb mode. */ if (mode == DImode) { - rtx tem; if (*code == GT || *code == LE || (!TARGET_ARM && (*code == GTU || *code == LEU))) @@ -4646,9 +4645,7 @@ arm_canonicalize_comparison (int *code, rtx *op0, rtx *op1, /* If that did not work, reverse the condition. */ if (!op0_preserve_value) { - tem = *op0; - *op0 = *op1; - *op1 = tem; + std::swap (*op0, *op1); *code = (int)swap_condition ((enum rtx_code)*code); } } @@ -14927,11 +14924,7 @@ arm_select_dominance_cc_mode (rtx x, rtx y, HOST_WIDE_INT cond_or) return CCmode; if (swapped) - { - enum rtx_code temp = cond1; - cond1 = cond2; - cond2 = temp; - } + std::swap (cond1, cond2); switch (cond1) { @@ -15440,11 +15433,7 @@ arm_reload_out_hi (rtx *operands) /* Updating base_plus might destroy outval, see if we can swap the scratch and base_plus. */ if (!reg_overlap_mentioned_p (scratch, outval)) - { - rtx tmp = scratch; - scratch = base_plus; - base_plus = tmp; - } + std::swap (scratch, base_plus); else { rtx scratch_hi = gen_rtx_REG (HImode, REGNO (operands[2])); @@ -15499,11 +15488,7 @@ arm_reload_out_hi (rtx *operands) /* Updating base_plus might destroy outval, see if we can swap the scratch and base_plus. */ if (!reg_overlap_mentioned_p (scratch, outval)) - { - rtx tmp = scratch; - scratch = base_plus; - base_plus = tmp; - } + std::swap (scratch, base_plus); else { rtx scratch_hi = gen_rtx_REG (HImode, REGNO (operands[2])); @@ -15736,8 +15721,6 @@ mem_ok_for_ldrd_strd (rtx mem, rtx *base, rtx *offset) return false; } -#define SWAP_RTX(x,y) do { rtx tmp = x; x = y; y = tmp; } while (0) - /* Called from a peephole2 to replace two word-size accesses with a single LDRD/STRD instruction. Returns true iff we can generate a new instruction sequence. That is, both accesses use the same base @@ -15877,10 +15860,10 @@ gen_operands_ldrd_strd (rtx *operands, bool load, offset = offsets[1]; /* Swap the instructions such that lower memory is accessed first. */ - SWAP_RTX (operands[0], operands[1]); - SWAP_RTX (operands[2], operands[3]); + std::swap (operands[0], operands[1]); + std::swap (operands[2], operands[3]); if (const_store) - SWAP_RTX (operands[4], operands[5]); + std::swap (operands[4], operands[5]); } else { @@ -15905,7 +15888,7 @@ gen_operands_ldrd_strd (rtx *operands, bool load, if (load && commute) { /* Try reordering registers. */ - SWAP_RTX (operands[0], operands[1]); + std::swap (operands[0], operands[1]); if (operands_ok_ldrd_strd (operands[0], operands[1], base, offset, false, load)) return true; @@ -15934,7 +15917,7 @@ gen_operands_ldrd_strd (rtx *operands, bool load, if (operands_ok_ldrd_strd (operands[1], operands[0], base, offset, false, false)) { - SWAP_RTX (operands[0], operands[1]); + std::swap (operands[0], operands[1]); return true; } @@ -15965,7 +15948,6 @@ gen_operands_ldrd_strd (rtx *operands, bool load, return false; } -#undef SWAP_RTX @@ -18111,12 +18093,9 @@ output_move_double (rtx *operands, bool emit, int *count) if (reg_overlap_mentioned_p (operands[0], otherops[2])) { - rtx tmp; /* Swap base and index registers over to avoid a conflict. */ - tmp = otherops[1]; - otherops[1] = otherops[2]; - otherops[2] = tmp; + std::swap (otherops[1], otherops[2]); } /* If both registers conflict, it will usually have been fixed by a splitter. */ @@ -22176,9 +22155,7 @@ arm_print_operand_address (FILE *stream, rtx x) /* Ensure that BASE is a register. */ /* (one of them must be). */ /* Also ensure the SP is not used as in index register. */ - rtx temp = base; - base = index; - index = temp; + std::swap (base, index); } switch (GET_CODE (index)) { @@ -25351,23 +25328,11 @@ thumb_output_move_mem_multiple (int n, rtx *operands) case 3: if (REGNO (operands[4]) > REGNO (operands[5])) - { - tmp = operands[4]; - operands[4] = operands[5]; - operands[5] = tmp; - } + std::swap (operands[4], operands[5]); if (REGNO (operands[5]) > REGNO (operands[6])) - { - tmp = operands[5]; - operands[5] = operands[6]; - operands[6] = tmp; - } + std::swap (operands[5], operands[6]); if (REGNO (operands[4]) > REGNO (operands[5])) - { - tmp = operands[4]; - operands[4] = operands[5]; - operands[5] = tmp; - } + std::swap (operands[4], operands[5]); output_asm_insn ("ldmia\t%1!, {%4, %5, %6}", operands); output_asm_insn ("stmia\t%0!, {%4, %5, %6}", operands); diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index a3b14fef64c..b9880b42301 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -4230,12 +4230,8 @@ swap the order in which the loads are emitted. */ if (reg_overlap_mentioned_p (operands[0], operands[1])) { - rtx tmp = operands[1]; - operands[1] = operands[3]; - operands[3] = tmp; - tmp = operands[0]; - operands[0] = operands[2]; - operands[2] = tmp; + std::swap (operands[1], operands[3]); + std::swap (operands[0], operands[2]); } } [(set_attr "arch" "t2,any") @@ -9339,12 +9335,8 @@ gcc_assert (!(mode == CCFPmode || mode == CCFPEmode)); if (REGNO (operands[2]) != REGNO (operands[0])) rc = reverse_condition (rc); - else - { - rtx tmp = operands[1]; - operands[1] = operands[2]; - operands[2] = tmp; - } + else + std::swap (operands[1], operands[2]); operands[6] = gen_rtx_fmt_ee (rc, VOIDmode, operands[6], const0_rtx); } -- 2.30.2