aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2014-11-18 10:10:53 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2014-11-18 10:10:53 +0000
commit9f37760abed226a27061ded75d50be803ef73a96 (patch)
treeb21976644eea9dd4de116ca7c082b136cc4b9fbd
parentbd79363ce06f60a72c83463963bf67de05b06546 (diff)
downloadgcc-9f37760abed226a27061ded75d50be803ef73a96.zip
gcc-9f37760abed226a27061ded75d50be803ef73a96.tar.gz
gcc-9f37760abed226a27061ded75d50be803ef73a96.tar.bz2
[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
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/config/arm/arm.c63
-rw-r--r--gcc/config/arm/arm.md16
3 files changed, 32 insertions, 61 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fa97da7..52fa23b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2014-11-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * 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 <james.greenhalgh@arm.com>
* config/arm/arm-builtins.c (CONVERT_QUALIFIERS): Delete.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index e37465e..64494e8 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 a3b14fe..b9880b4 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);
}