From: Kyrylo Tkachov <[email protected]>
Several C-style idioms that the file no longer needs:
noce_can_force_operand returns an enum insn_code where its declared type is
bool, relying on CODE_FOR_nothing being zero. Compare against it instead.
bbs_ok_for_cmove_arith wraps four single-statement failure exits in braces,
left over from the BITMAP_FREE calls that used to sit next to them.
noce_find_if_block declares if_info and then memsets it seventy lines later.
Value-initialize it at the declaration. No functional change.
gcc/ChangeLog:
* ifcvt.cc (noce_can_force_operand): Return a bool rather than an
insn_code.
(bbs_ok_for_cmove_arith): Drop braces around single statements.
(noce_find_if_block): Value-initialize if_info instead of memsetting it.
Signed-off-by: Kyrylo Tkachov <[email protected]>
---
gcc/ifcvt.cc | 31 ++++++++++---------------------
1 file changed, 10 insertions(+), 21 deletions(-)
diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc
index ca0a0861f77..380cf68ac35 100644
--- a/gcc/ifcvt.cc
+++ b/gcc/ifcvt.cc
@@ -1057,7 +1057,7 @@ noce_can_force_operand (rtx x)
auto optab = code_to_optab (GET_CODE (x));
if (!optab)
return false;
- return optab_handler (optab, GET_MODE (x));
+ return optab_handler (optab, GET_MODE (x)) != CODE_FOR_nothing;
}
}
if (UNARY_P (x))
@@ -1080,7 +1080,7 @@ noce_can_force_operand (rtx x)
auto optab = code_to_optab (GET_CODE (x));
if (!optab)
return false;
- return optab_handler (optab, GET_MODE (x));
+ return optab_handler (optab, GET_MODE (x)) != CODE_FOR_nothing;
}
}
return false;
@@ -2294,8 +2294,8 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x,
enum rtx_code code,
rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue, rtx cc_cmp,
rtx rev_cc_cmp)
{
- rtx target ATTRIBUTE_UNUSED;
- bool unsignedp ATTRIBUTE_UNUSED;
+ rtx target;
+ bool unsignedp;
/* If earliest == jump, try to build the cmove insn directly.
This is helpful when combine has created some complex condition
@@ -2563,9 +2563,7 @@ bbs_ok_for_cmove_arith (basic_block bb_a, basic_block
bb_b, rtx to_rename)
rtx sset_a = single_set (a_insn);
if (!sset_a)
- {
- return false;
- }
+ return false;
/* Record all registers that BB_A sets. */
FOR_EACH_INSN_DEF (def, a_insn)
if (!(to_rename && DF_REF_REG (def) == to_rename))
@@ -2582,9 +2580,7 @@ bbs_ok_for_cmove_arith (basic_block bb_a, basic_block
bb_b, rtx to_rename)
rtx sset_b = single_set (b_insn);
if (!sset_b)
- {
- return false;
- }
+ return false;
/* Make sure this is a REG and not some instance
of ZERO_EXTRACT or non-paradoxical SUBREG or other dangerous stuff.
@@ -2597,18 +2593,12 @@ bbs_ok_for_cmove_arith (basic_block bb_a, basic_block
bb_b, rtx to_rename)
gcc_assert (rtx_equal_p (SET_DEST (sset_b), to_rename));
else if (!REG_P (SET_DEST (sset_b))
&& !paradoxical_subreg_p (SET_DEST (sset_b)))
- {
- return false;
- }
+ return false;
/* If the insn uses a reg set in BB_A return false. */
FOR_EACH_INSN_USE (use, b_insn)
- {
- if (bitmap_bit_p (bba_sets, DF_REF_REGNO (use)))
- {
- return false;
- }
- }
+ if (bitmap_bit_p (bba_sets, DF_REF_REGNO (use)))
+ return false;
}
@@ -5474,7 +5464,7 @@ noce_find_if_block (basic_block test_bb, edge then_edge,
edge else_edge,
bool then_else_reversed = false;
rtx_insn *jump;
rtx_insn *cond_earliest;
- struct noce_if_info if_info;
+ noce_if_info if_info = {};
bool speed_p = optimize_bb_for_speed_p (test_bb);
/* We only ever should get here before reload. */
@@ -5549,7 +5539,6 @@ noce_find_if_block (basic_block test_bb, edge then_edge,
edge else_edge,
return false;
/* Initialize an IF_INFO struct to pass around. */
- memset (&if_info, 0, sizeof if_info);
if_info.test_bb = test_bb;
if_info.then_bb = then_bb;
if_info.else_bb = else_bb;
--
2.50.1 (Apple Git-155)