@@ -102,7 +102,7 @@ DEBUG_FUNCTION void
verify_flow_info (void)
{
size_t *edge_checksum;
- int err = 0;
+ bool err = false;
basic_block bb, last_bb_seen;
basic_block *last_visited;
@@ -118,14 +118,14 @@ verify_flow_info (void)
&& bb != BASIC_BLOCK_FOR_FN (cfun, bb->index))
{
error ("bb %d on wrong place", bb->index);
- err = 1;
+ err = true;
}
if (bb->prev_bb != last_bb_seen)
{
error ("prev_bb of %d should be %d, not %d",
bb->index, last_bb_seen->index, bb->prev_bb->index);
- err = 1;
+ err = true;
}
last_bb_seen = bb;
@@ -142,18 +142,18 @@ verify_flow_info (void)
{
error ("verify_flow_info: Block %i has loop_father, but there are no loops",
bb->index);
- err = 1;
+ err = true;
}
if (bb->loop_father == NULL && current_loops != NULL)
{
error ("verify_flow_info: Block %i lacks loop_father", bb->index);
- err = 1;
+ err = true;
}
if (!bb->count.verify ())
{
error ("verify_flow_info: Wrong count of block %i", bb->index);
- err = 1;
+ err = true;
}
/* FIXME: Graphite and SLJL and target code still tends to produce
edges with no probability. */
@@ -161,13 +161,13 @@ verify_flow_info (void)
&& !bb->count.initialized_p () && !flag_graphite && 0)
{
error ("verify_flow_info: Missing count of block %i", bb->index);
- err = 1;
+ err = true;
}
if (bb->flags & ~cfun->cfg->bb_flags_allocated)
{
error ("verify_flow_info: unallocated flag set on BB %d", bb->index);
- err = 1;
+ err = true;
}
FOR_EACH_EDGE (e, ei, bb->succs)
@@ -176,7 +176,7 @@ verify_flow_info (void)
{
error ("verify_flow_info: Duplicate edge %i->%i",
e->src->index, e->dest->index);
- err = 1;
+ err = true;
}
/* FIXME: Graphite and SLJL and target code still tends to produce
edges with no probability. */
@@ -185,13 +185,13 @@ verify_flow_info (void)
{
error ("Uninitialized probability of edge %i->%i", e->src->index,
e->dest->index);
- err = 1;
+ err = true;
}
if (!e->probability.verify ())
{
error ("verify_flow_info: Wrong probability of edge %i->%i",
e->src->index, e->dest->index);
- err = 1;
+ err = true;
}
last_visited [e->dest->index] = bb;
@@ -208,14 +208,14 @@ verify_flow_info (void)
fprintf (stderr, "\nSuccessor: ");
dump_edge_info (stderr, e, TDF_DETAILS, 1);
fprintf (stderr, "\n");
- err = 1;
+ err = true;
}
if (e->flags & ~cfun->cfg->edge_flags_allocated)
{
error ("verify_flow_info: unallocated edge flag set on %d -> %d",
e->src->index, e->dest->index);
- err = 1;
+ err = true;
}
edge_checksum[e->dest->index] += (size_t) e;
@@ -223,7 +223,7 @@ verify_flow_info (void)
if (n_fallthru > 1)
{
error ("wrong amount of branch edges after unconditional jump %i", bb->index);
- err = 1;
+ err = true;
}
FOR_EACH_EDGE (e, ei, bb->preds)
@@ -236,7 +236,7 @@ verify_flow_info (void)
fputs ("\nSuccessor: ", stderr);
dump_edge_info (stderr, e, TDF_DETAILS, 1);
fputc ('\n', stderr);
- err = 1;
+ err = true;
}
if (ei.index != e->dest_idx)
@@ -249,7 +249,7 @@ verify_flow_info (void)
fputs ("\nSuccessor: ", stderr);
dump_edge_info (stderr, e, TDF_DETAILS, 1);
fputc ('\n', stderr);
- err = 1;
+ err = true;
}
edge_checksum[e->dest->index] -= (size_t) e;
@@ -272,7 +272,7 @@ verify_flow_info (void)
if (edge_checksum[bb->index])
{
error ("basic block %i edge lists are corrupted", bb->index);
- err = 1;
+ err = true;
}
/* Clean up. */
@@ -280,7 +280,9 @@ verify_flow_info (void)
free (edge_checksum);
if (cfg_hooks->verify_flow_info)
- err |= cfg_hooks->verify_flow_info ();
+ if (cfg_hooks->verify_flow_info ())
+ err = true;
+
if (err)
internal_error ("verify_flow_info failed");
timevar_pop (TV_CFG_VERIFY);
@@ -78,7 +78,7 @@ struct cfg_hooks
const char *name;
/* Debugging. */
- int (*verify_flow_info) (void);
+ bool (*verify_flow_info) (void);
void (*dump_bb) (FILE *, basic_block, int, dump_flags_t);
void (*dump_bb_for_graph) (pretty_printer *, basic_block);
@@ -83,11 +83,11 @@ static void fixup_reorder_chain (void);
void verify_insn_chain (void);
static void fixup_fallthru_exit_predecessor (void);
-static int can_delete_note_p (const rtx_note *);
-static int can_delete_label_p (const rtx_code_label *);
+static bool can_delete_note_p (const rtx_note *);
+static bool can_delete_label_p (const rtx_code_label *);
static basic_block rtl_split_edge (edge);
static bool rtl_move_block_after (basic_block, basic_block);
-static int rtl_verify_flow_info (void);
+static bool rtl_verify_flow_info (void);
static basic_block cfg_layout_split_block (basic_block, void *);
static edge cfg_layout_redirect_edge_and_branch (edge, basic_block);
static basic_block cfg_layout_redirect_edge_and_branch_force (edge, basic_block);
@@ -97,14 +97,14 @@ static basic_block rtl_redirect_edge_and_branch_force (edge, basic_block);
static edge rtl_redirect_edge_and_branch (edge, basic_block);
static basic_block rtl_split_block (basic_block, void *);
static void rtl_dump_bb (FILE *, basic_block, int, dump_flags_t);
-static int rtl_verify_flow_info_1 (void);
+static bool rtl_verify_flow_info_1 (void);
static void rtl_make_forwarder_block (edge);
static bool rtl_bb_info_initialized_p (basic_block bb);
/* Return true if NOTE is not one of the ones that must be kept paired,
so that we may simply delete it. */
-static int
+static bool
can_delete_note_p (const rtx_note *note)
{
switch (NOTE_KIND (note))
@@ -121,7 +121,7 @@ can_delete_note_p (const rtx_note *note)
/* True if a given label can be deleted. */
-static int
+static bool
can_delete_label_p (const rtx_code_label *label)
{
return (!LABEL_PRESERVE_P (label)
@@ -450,14 +450,13 @@ compute_bb_for_insn (void)
/* Release the basic_block_for_insn array. */
-unsigned int
+void
free_bb_for_insn (void)
{
rtx_insn *insn;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
if (!BARRIER_P (insn))
BLOCK_FOR_INSN (insn) = NULL;
- return 0;
}
namespace {
@@ -865,7 +864,7 @@ rtl_merge_blocks (basic_block a, basic_block b)
rtx_insn *b_head = BB_HEAD (b), *b_end = BB_END (b), *a_end = BB_END (a);
rtx_insn *del_first = NULL, *del_last = NULL;
rtx_insn *b_debug_start = b_end, *b_debug_end = b_end;
- int b_empty = 0;
+ bool b_empty = false;
if (dump_file)
fprintf (dump_file, "Merging block %d into block %d...\n", b->index,
@@ -880,7 +879,7 @@ rtl_merge_blocks (basic_block a, basic_block b)
/* Detect basic blocks with nothing but a label. This can happen
in particular at the end of a function. */
if (b_head == b_end)
- b_empty = 1;
+ b_empty = true;
del_first = del_last = b_head;
b_head = NEXT_INSN (b_head);
@@ -891,7 +890,7 @@ rtl_merge_blocks (basic_block a, basic_block b)
if (NOTE_INSN_BASIC_BLOCK_P (b_head))
{
if (b_head == b_end)
- b_empty = 1;
+ b_empty = true;
if (! del_last)
del_first = b_head;
@@ -1056,7 +1055,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
basic_block src = e->src;
rtx_insn *insn = BB_END (src);
rtx set;
- int fallthru = 0;
+ bool fallthru = false;
/* If we are partitioning hot/cold basic blocks, we don't want to
mess up unconditional or indirect jumps that cross between hot
@@ -1096,7 +1095,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
{
if (dump_file)
fprintf (dump_file, "Removing jump %i.\n", INSN_UID (insn));
- fallthru = 1;
+ fallthru = true;
/* Selectively unlink whole insn chain. */
if (in_cfglayout)
@@ -2496,11 +2495,11 @@ fixup_partitions (void)
between hot/cold partitions. This condition will not be true until
after reorder_basic_blocks is called. */
-static int
+static bool
verify_hot_cold_block_grouping (void)
{
basic_block bb;
- int err = 0;
+ bool err = false;
bool switched_sections = false;
int current_partition = BB_UNPARTITIONED;
@@ -2520,7 +2519,7 @@ verify_hot_cold_block_grouping (void)
{
error ("multiple hot/cold transitions found (bb %i)",
bb->index);
- err = 1;
+ err = true;
}
else
switched_sections = true;
@@ -2541,10 +2540,10 @@ verify_hot_cold_block_grouping (void)
successor edges. Also verify that the dominance relationship
between hot/cold blocks is sane. */
-static int
+static bool
rtl_verify_edges (void)
{
- int err = 0;
+ bool err = false;
basic_block bb;
FOR_EACH_BB_REVERSE_FN (bb, cfun)
@@ -2567,7 +2566,7 @@ rtl_verify_edges (void)
{
error ("verify_flow_info: "
"REG_BR_PROB is set but cfg probability is not");
- err = 1;
+ err = true;
}
}
else if (XINT (note, 0)
@@ -2577,7 +2576,7 @@ rtl_verify_edges (void)
error ("verify_flow_info: REG_BR_PROB does not match cfg %i %i",
XINT (note, 0),
BRANCH_EDGE (bb)->probability.to_reg_br_prob_note ());
- err = 1;
+ err = true;
}
}
@@ -2597,31 +2596,31 @@ rtl_verify_edges (void)
if (!is_crossing)
{
error ("EDGE_CROSSING incorrectly set across same section");
- err = 1;
+ err = true;
}
if (e->flags & EDGE_FALLTHRU)
{
error ("fallthru edge crosses section boundary in bb %i",
e->src->index);
- err = 1;
+ err = true;
}
if (e->flags & EDGE_EH)
{
error ("EH edge crosses section boundary in bb %i",
e->src->index);
- err = 1;
+ err = true;
}
if (JUMP_P (BB_END (bb)) && !CROSSING_JUMP_P (BB_END (bb)))
{
error ("No region crossing jump at section boundary in bb %i",
bb->index);
- err = 1;
+ err = true;
}
}
else if (is_crossing)
{
error ("EDGE_CROSSING missing across section boundary");
- err = 1;
+ err = true;
}
if ((e->flags & ~(EDGE_DFS_BACK
@@ -2652,18 +2651,18 @@ rtl_verify_edges (void)
print_rtl_with_bb (stderr, get_insns (), TDF_BLOCKS | TDF_DETAILS);
error ("Region crossing jump across same section in bb %i",
bb->index);
- err = 1;
+ err = true;
}
if (n_eh && !find_reg_note (BB_END (bb), REG_EH_REGION, NULL_RTX))
{
error ("missing REG_EH_REGION note at the end of bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_eh > 1)
{
error ("too many exception handling edges in bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_branch
&& (!JUMP_P (BB_END (bb))
@@ -2671,35 +2670,35 @@ rtl_verify_edges (void)
|| any_condjump_p (BB_END (bb))))))
{
error ("too many outgoing branch edges from bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_fallthru && any_uncondjump_p (BB_END (bb)))
{
error ("fallthru edge after unconditional jump in bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_branch != 1 && any_uncondjump_p (BB_END (bb)))
{
error ("wrong number of branch edges after unconditional jump"
" in bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_branch != 1 && any_condjump_p (BB_END (bb))
&& JUMP_LABEL (BB_END (bb)) != BB_HEAD (fallthru->dest))
{
error ("wrong amount of branch edges after conditional jump"
" in bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_abnormal_call && !CALL_P (BB_END (bb)))
{
error ("abnormal call edges for non-call insn in bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_sibcall && !CALL_P (BB_END (bb)))
{
error ("sibcall edges for non-call insn in bb %i", bb->index);
- err = 1;
+ err = true;
}
if (n_abnormal > n_eh
&& !(CALL_P (BB_END (bb))
@@ -2709,7 +2708,7 @@ rtl_verify_edges (void)
|| any_uncondjump_p (BB_END (bb))))
{
error ("abnormal edges for no purpose in bb %i", bb->index);
- err = 1;
+ err = true;
}
int has_eh = -1;
@@ -2721,7 +2720,7 @@ rtl_verify_edges (void)
continue;
error ("EH incoming edge mixed with non-EH incoming edges "
"in bb %i", bb->index);
- err = 1;
+ err = true;
break;
}
}
@@ -2743,11 +2742,11 @@ rtl_verify_edges (void)
block starts with a basic block note, and that basic block notes and
control flow jumps are not found in the middle of the block. */
-static int
+static bool
rtl_verify_bb_insns (void)
{
rtx_insn *x;
- int err = 0;
+ bool err = false;
basic_block bb;
FOR_EACH_BB_REVERSE_FN (bb, cfun)
@@ -2762,7 +2761,7 @@ rtl_verify_bb_insns (void)
{
error ("NOTE_INSN_BASIC_BLOCK is missing for block %d",
bb->index);
- err = 1;
+ err = true;
}
x = NEXT_INSN (x);
@@ -2772,7 +2771,7 @@ rtl_verify_bb_insns (void)
{
error ("NOTE_INSN_BASIC_BLOCK is missing for block %d",
bb->index);
- err = 1;
+ err = true;
}
if (BB_END (bb) == x)
@@ -2785,7 +2784,7 @@ rtl_verify_bb_insns (void)
{
error ("NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d",
INSN_UID (x), bb->index);
- err = 1;
+ err = true;
}
if (x == BB_END (bb))
@@ -2806,10 +2805,10 @@ rtl_verify_bb_insns (void)
/* Verify that block pointers for instructions in basic blocks, headers and
footers are set appropriately. */
-static int
+static bool
rtl_verify_bb_pointers (void)
{
- int err = 0;
+ bool err = false;
basic_block bb;
/* Check the general integrity of the basic blocks. */
@@ -2820,7 +2819,7 @@ rtl_verify_bb_pointers (void)
if (!(bb->flags & BB_RTL))
{
error ("BB_RTL flag not set for block %d", bb->index);
- err = 1;
+ err = true;
}
FOR_BB_INSNS (bb, insn)
@@ -2830,7 +2829,7 @@ rtl_verify_bb_pointers (void)
INSN_UID (insn),
BLOCK_FOR_INSN (insn) ? BLOCK_FOR_INSN (insn)->index : 0,
bb->index);
- err = 1;
+ err = true;
}
for (insn = BB_HEADER (bb); insn; insn = NEXT_INSN (insn))
@@ -2839,7 +2838,7 @@ rtl_verify_bb_pointers (void)
{
error ("insn %d in header of bb %d has non-NULL basic block",
INSN_UID (insn), bb->index);
- err = 1;
+ err = true;
}
for (insn = BB_FOOTER (bb); insn; insn = NEXT_INSN (insn))
if (!BARRIER_P (insn)
@@ -2847,7 +2846,7 @@ rtl_verify_bb_pointers (void)
{
error ("insn %d in footer of bb %d has non-NULL basic block",
INSN_UID (insn), bb->index);
- err = 1;
+ err = true;
}
}
@@ -2873,16 +2872,19 @@ rtl_verify_bb_pointers (void)
In future it can be extended check a lot of other stuff as well
(reachability of basic blocks, life information, etc. etc.). */
-static int
+static bool
rtl_verify_flow_info_1 (void)
{
- int err = 0;
+ bool err = false;
- err |= rtl_verify_bb_pointers ();
+ if (rtl_verify_bb_pointers ())
+ err = true;
- err |= rtl_verify_bb_insns ();
+ if (rtl_verify_bb_insns ())
+ err = true;
- err |= rtl_verify_edges ();
+ if (rtl_verify_edges ())
+ err = true;
return err;
}
@@ -2891,11 +2893,11 @@ rtl_verify_flow_info_1 (void)
are correct, and that instructions are in exactly one bb and have
correct block pointers. */
-static int
+static bool
rtl_verify_bb_insn_chain (void)
{
basic_block bb;
- int err = 0;
+ bool err = false;
rtx_insn *x;
rtx_insn *last_head = get_last_insn ();
basic_block *bb_info;
@@ -2920,7 +2922,7 @@ rtl_verify_bb_insn_chain (void)
{
error ("insn %d outside of basic blocks has non-NULL bb field",
INSN_UID (x));
- err = 1;
+ err = true;
}
}
@@ -2928,7 +2930,7 @@ rtl_verify_bb_insn_chain (void)
{
error ("end insn %d for block %d not found in the insn stream",
INSN_UID (end), bb->index);
- err = 1;
+ err = true;
}
/* Work backwards from the end to the head of the basic block
@@ -2941,7 +2943,7 @@ rtl_verify_bb_insn_chain (void)
{
error ("insn %d is in multiple basic blocks (%d and %d)",
INSN_UID (x), bb->index, bb_info[INSN_UID (x)]->index);
- err = 1;
+ err = true;
}
bb_info[INSN_UID (x)] = bb;
@@ -2953,7 +2955,7 @@ rtl_verify_bb_insn_chain (void)
{
error ("head insn %d for block %d not found in the insn stream",
INSN_UID (head), bb->index);
- err = 1;
+ err = true;
}
last_head = PREV_INSN (x);
@@ -2968,7 +2970,7 @@ rtl_verify_bb_insn_chain (void)
{
error ("insn %d outside of basic blocks has non-NULL bb field",
INSN_UID (x));
- err = 1;
+ err = true;
}
}
free (bb_info);
@@ -2979,11 +2981,11 @@ rtl_verify_bb_insn_chain (void)
/* Verify that fallthru edges point to adjacent blocks in layout order and
that barriers exist after non-fallthru blocks. */
-static int
+static bool
rtl_verify_fallthru (void)
{
basic_block bb;
- int err = 0;
+ bool err = false;
FOR_EACH_BB_REVERSE_FN (bb, cfun)
{
@@ -3000,7 +3002,7 @@ rtl_verify_fallthru (void)
if (!insn || NOTE_INSN_BASIC_BLOCK_P (insn))
{
error ("missing barrier after block %i", bb->index);
- err = 1;
+ err = true;
break;
}
if (BARRIER_P (insn))
@@ -3017,7 +3019,7 @@ rtl_verify_fallthru (void)
error
("verify_flow_info: Incorrect blocks for fallthru %i->%i",
e->src->index, e->dest->index);
- err = 1;
+ err = true;
}
else
for (insn = NEXT_INSN (BB_END (e->src)); insn != BB_HEAD (e->dest);
@@ -3028,7 +3030,7 @@ rtl_verify_fallthru (void)
e->src->index, e->dest->index);
error ("wrong insn in the fallthru edge");
debug_rtx (insn);
- err = 1;
+ err = true;
}
}
}
@@ -3040,11 +3042,11 @@ rtl_verify_fallthru (void)
instructions, verify that all expected instructions are inside the basic
blocks, and that all returns are followed by barriers. */
-static int
+static bool
rtl_verify_bb_layout (void)
{
basic_block bb;
- int err = 0;
+ bool err = false;
rtx_insn *x, *y;
int num_bb_notes;
rtx_insn * const rtx_first = get_insns ();
@@ -3118,20 +3120,25 @@ rtl_verify_bb_layout (void)
- check that all fallthru edge points to the adjacent blocks
- verify that there is a single hot/cold partition boundary after bbro */
-static int
+static bool
rtl_verify_flow_info (void)
{
- int err = 0;
+ bool err = false;
- err |= rtl_verify_flow_info_1 ();
+ if (rtl_verify_flow_info_1 ())
+ err = true;
- err |= rtl_verify_bb_insn_chain ();
+ if (rtl_verify_bb_insn_chain ())
+ err = true;
- err |= rtl_verify_fallthru ();
+ if (rtl_verify_fallthru ())
+ err = true;
- err |= rtl_verify_bb_layout ();
+ if (rtl_verify_bb_layout ())
+ err = true;
- err |= verify_hot_cold_block_grouping ();
+ if (verify_hot_cold_block_grouping ())
+ err = true;
return err;
}
@@ -3310,7 +3317,7 @@ purge_dead_edges (basic_block bb)
gcc_assert (single_succ_edge (bb)->flags
== (EDGE_SIBCALL | EDGE_ABNORMAL));
- return 0;
+ return false;
}
/* If we don't see a jump insn, we don't know exactly why the block would
@@ -3360,15 +3367,12 @@ purge_dead_edges (basic_block bb)
bool
purge_all_dead_edges (void)
{
- int purged = false;
+ bool purged = false;
basic_block bb;
FOR_EACH_BB_FN (bb, cfun)
- {
- bool purged_here = purge_dead_edges (bb);
-
- purged |= purged_here;
- }
+ if (purge_dead_edges (bb))
+ purged = true;
return purged;
}
@@ -5018,8 +5022,8 @@ rtl_split_block_before_cond_jump (basic_block bb)
return NULL;
}
-/* Return 1 if BB ends with a call, possibly followed by some
- instructions that must stay with the call, 0 otherwise. */
+/* Return true if BB ends with a call, possibly followed by some
+ instructions that must stay with the call, false otherwise. */
static bool
rtl_block_ends_with_call_p (basic_block bb)
@@ -5035,7 +5039,7 @@ rtl_block_ends_with_call_p (basic_block bb)
return (CALL_P (insn));
}
-/* Return 1 if BB ends with a conditional branch, 0 otherwise. */
+/* Return true if BB ends with a conditional branch, false otherwise. */
static bool
rtl_block_ends_with_condjump_p (const_basic_block bb)
@@ -26,7 +26,7 @@ extern void delete_insn_chain (rtx, rtx_insn *, bool);
extern basic_block create_basic_block_structure (rtx_insn *, rtx_insn *,
rtx_note *, basic_block);
extern void compute_bb_for_insn (void);
-extern unsigned int free_bb_for_insn (void);
+extern void free_bb_for_insn (void);
extern rtx_insn *entry_of_function (void);
extern void update_bb_for_insn (basic_block);
extern bool contains_no_active_insn_p (const_basic_block);
@@ -141,7 +141,7 @@ expr_hasher::hash (const expr *exp)
inline bool
expr_hasher::equal (const expr *exp1, const expr *exp2)
{
- int equiv_p = exp_equiv_p (exp1->expr, exp2->expr, 0, true);
+ bool equiv_p = exp_equiv_p (exp1->expr, exp2->expr, 0, true);
gcc_assert (!equiv_p || exp1->hash == exp2->hash);
return equiv_p;
@@ -244,7 +244,7 @@ static void record_last_set_info (rtx, const_rtx, void *);
static void record_opr_changes (rtx_insn *);
static void find_mem_conflicts (rtx, const_rtx, void *);
-static int load_killed_in_block_p (int, rtx, bool);
+static bool load_killed_in_block_p (int, rtx, bool);
static void reset_opr_set_tables (void);
/* Hash table support. */
@@ -529,7 +529,7 @@ oprs_unchanged_p (rtx x, rtx_insn *insn, bool after_insn)
const char *fmt;
if (x == 0)
- return 1;
+ return true;
code = GET_CODE (x);
switch (code)
@@ -544,7 +544,7 @@ oprs_unchanged_p (rtx x, rtx_insn *insn, bool after_insn)
case MEM:
if (load_killed_in_block_p (INSN_CUID (insn), x, after_insn))
- return 0;
+ return false;
else
return oprs_unchanged_p (XEXP (x, 0), insn, after_insn);
@@ -555,7 +555,7 @@ oprs_unchanged_p (rtx x, rtx_insn *insn, bool after_insn)
case LABEL_REF:
case ADDR_VEC:
case ADDR_DIFF_VEC:
- return 1;
+ return true;
case PRE_DEC:
case PRE_INC:
@@ -564,7 +564,7 @@ oprs_unchanged_p (rtx x, rtx_insn *insn, bool after_insn)
case PRE_MODIFY:
case POST_MODIFY:
if (after_insn)
- return 0;
+ return false;
break;
default:
@@ -576,15 +576,15 @@ oprs_unchanged_p (rtx x, rtx_insn *insn, bool after_insn)
if (fmt[i] == 'e')
{
if (! oprs_unchanged_p (XEXP (x, i), insn, after_insn))
- return 0;
+ return false;
}
else if (fmt[i] == 'E')
for (j = 0; j < XVECLEN (x, i); j++)
if (! oprs_unchanged_p (XVECEXP (x, i, j), insn, after_insn))
- return 0;
+ return false;
}
- return 1;
+ return true;
}
@@ -628,7 +628,7 @@ find_mem_conflicts (rtx dest, const_rtx setter ATTRIBUTE_UNUSED,
the hash table construction or redundancy elimination phases start
processing a new basic block. */
-static int
+static bool
load_killed_in_block_p (int uid_limit, rtx x, bool after_insn)
{
struct modifies_mem *list_entry = modifies_mem_list;
@@ -651,7 +651,7 @@ load_killed_in_block_p (int uid_limit, rtx x, bool after_insn)
to pure functions are never put on the list, so we need not
worry about them. */
if (CALL_P (setter))
- return 1;
+ return true;
/* SETTER must be an insn of some kind that sets memory. Call
note_stores to examine each hunk of memory that is modified.
@@ -660,11 +660,11 @@ load_killed_in_block_p (int uid_limit, rtx x, bool after_insn)
mems_conflict_p = 0;
note_stores (setter, find_mem_conflicts, x);
if (mems_conflict_p)
- return 1;
+ return true;
list_entry = list_entry->next;
}
- return 0;
+ return false;
}
@@ -930,7 +930,7 @@ get_avail_load_store_reg (rtx_insn *insn)
}
}
-/* Return nonzero if the predecessors of BB are "well behaved". */
+/* Return true if the predecessors of BB are "well behaved". */
static bool
bb_has_well_behaved_predecessors (basic_block bb)
@@ -1416,12 +1416,11 @@ gcse_after_reload_main (rtx f ATTRIBUTE_UNUSED)
-static unsigned int
+static void
rest_of_handle_gcse2 (void)
{
gcse_after_reload_main (get_insns ());
rebuild_jump_labels (get_insns ());
- return 0;
}
namespace {
@@ -1455,7 +1454,8 @@ public:
unsigned int execute (function *) final override
{
- return rest_of_handle_gcse2 ();
+ rest_of_handle_gcse2 ();
+ return 0;
}
}; // class pass_gcse2
@@ -165,7 +165,7 @@ static edge gimple_try_redirect_by_replacing_jump (edge, basic_block);
/* Various helpers. */
static inline bool stmt_starts_bb_p (gimple *, gimple *);
-static int gimple_verify_flow_info (void);
+static bool gimple_verify_flow_info (void);
static void gimple_make_forwarder_block (edge);
static gimple *first_non_label_stmt (basic_block);
static bool verify_gimple_transaction (gtransaction *);
@@ -5654,10 +5654,10 @@ verify_gimple_in_cfg (struct function *fn, bool verify_nothrow, bool ice)
/* Verifies that the flow information is OK. */
-static int
+static bool
gimple_verify_flow_info (void)
{
- int err = 0;
+ bool err = false;
basic_block bb;
gimple_stmt_iterator gsi;
gimple *stmt;
@@ -5668,21 +5668,21 @@ gimple_verify_flow_info (void)
|| ENTRY_BLOCK_PTR_FOR_FN (cfun)->il.gimple.phi_nodes)
{
error ("ENTRY_BLOCK has IL associated with it");
- err = 1;
+ err = true;
}
if (EXIT_BLOCK_PTR_FOR_FN (cfun)->il.gimple.seq
|| EXIT_BLOCK_PTR_FOR_FN (cfun)->il.gimple.phi_nodes)
{
error ("EXIT_BLOCK has IL associated with it");
- err = 1;
+ err = true;
}
FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (cfun)->preds)
if (e->flags & EDGE_FALLTHRU)
{
error ("fallthru to exit from bb %d", e->src->index);
- err = 1;
+ err = true;
}
FOR_EACH_BB_FN (bb, cfun)
@@ -5707,28 +5707,28 @@ gimple_verify_flow_info (void)
{
error ("nonlocal label %qD is not first in a sequence "
"of labels in bb %d", label, bb->index);
- err = 1;
+ err = true;
}
if (prev_stmt && EH_LANDING_PAD_NR (label) != 0)
{
error ("EH landing pad label %qD is not first in a sequence "
"of labels in bb %d", label, bb->index);
- err = 1;
+ err = true;
}
if (label_to_block (cfun, label) != bb)
{
error ("label %qD to block does not match in bb %d",
label, bb->index);
- err = 1;
+ err = true;
}
if (decl_function_context (label) != current_function_decl)
{
error ("label %qD has incorrect context in bb %d",
label, bb->index);
- err = 1;
+ err = true;
}
}
@@ -5742,7 +5742,7 @@ gimple_verify_flow_info (void)
{
error ("control flow in the middle of basic block %d",
bb->index);
- err = 1;
+ err = true;
}
if (stmt_ends_bb_p (stmt))
@@ -5752,7 +5752,7 @@ gimple_verify_flow_info (void)
{
error ("label %qD in the middle of basic block %d",
gimple_label_label (label_stmt), bb->index);
- err = 1;
+ err = true;
}
/* Check that no statements appear between a returns_twice call
@@ -5781,7 +5781,7 @@ gimple_verify_flow_info (void)
error ("returns_twice call is %s in basic block %d",
misplaced, bb->index);
print_gimple_stmt (stderr, stmt, 0, TDF_SLIM);
- err = 1;
+ err = true;
}
}
if (!is_gimple_debug (stmt))
@@ -5797,7 +5797,8 @@ gimple_verify_flow_info (void)
if (gimple_code (stmt) == GIMPLE_LABEL)
continue;
- err |= verify_eh_edges (stmt);
+ if (verify_eh_edges (stmt))
+ err = true;
if (is_ctrl_stmt (stmt))
{
@@ -5806,7 +5807,7 @@ gimple_verify_flow_info (void)
{
error ("fallthru edge after a control statement in bb %d",
bb->index);
- err = 1;
+ err = true;
}
}
@@ -5819,7 +5820,7 @@ gimple_verify_flow_info (void)
{
error ("true/false edge after a non-GIMPLE_COND in bb %d",
bb->index);
- err = 1;
+ err = true;
}
}
@@ -5842,7 +5843,7 @@ gimple_verify_flow_info (void)
{
error ("wrong outgoing edge flags at end of bb %d",
bb->index);
- err = 1;
+ err = true;
}
}
break;
@@ -5851,7 +5852,7 @@ gimple_verify_flow_info (void)
if (simple_goto_p (stmt))
{
error ("explicit goto at end of bb %d", bb->index);
- err = 1;
+ err = true;
}
else
{
@@ -5864,7 +5865,7 @@ gimple_verify_flow_info (void)
{
error ("wrong outgoing edge flags at end of bb %d",
bb->index);
- err = 1;
+ err = true;
}
}
break;
@@ -5880,13 +5881,13 @@ gimple_verify_flow_info (void)
| EDGE_TRUE_VALUE | EDGE_FALSE_VALUE)))
{
error ("wrong outgoing edge flags at end of bb %d", bb->index);
- err = 1;
+ err = true;
}
if (single_succ (bb) != EXIT_BLOCK_PTR_FOR_FN (cfun))
{
error ("return edge does not point to exit in bb %d",
bb->index);
- err = 1;
+ err = true;
}
break;
@@ -5916,7 +5917,7 @@ gimple_verify_flow_info (void)
{
error ("found default case not at the start of "
"case vector");
- err = 1;
+ err = true;
continue;
}
if (CASE_LOW (prev)
@@ -5927,7 +5928,7 @@ gimple_verify_flow_info (void)
fprintf (stderr," is greater than ");
print_generic_expr (stderr, c);
fprintf (stderr," but comes before it.\n");
- err = 1;
+ err = true;
}
prev = c;
}
@@ -5941,7 +5942,7 @@ gimple_verify_flow_info (void)
{
error ("extra outgoing edge %d->%d",
bb->index, e->dest->index);
- err = 1;
+ err = true;
}
e->dest->aux = (void *)2;
@@ -5950,7 +5951,7 @@ gimple_verify_flow_info (void)
{
error ("wrong outgoing edge flags at end of bb %d",
bb->index);
- err = 1;
+ err = true;
}
}
@@ -5963,7 +5964,7 @@ gimple_verify_flow_info (void)
if (label_bb->aux != (void *)2)
{
error ("missing edge %i->%i", bb->index, label_bb->index);
- err = 1;
+ err = true;
}
}
@@ -5973,7 +5974,8 @@ gimple_verify_flow_info (void)
break;
case GIMPLE_EH_DISPATCH:
- err |= verify_eh_dispatch_edge (as_a <geh_dispatch *> (stmt));
+ if (verify_eh_dispatch_edge (as_a <geh_dispatch *> (stmt)))
+ err = true;
break;
default: