+2012-08-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/54146
+ * gimpify.c (gimplify_body): Only verify_gimple_in_seq with
+ checking enabled.
+ * tree-ssa-loop-manip.c (add_exit_phis_var): Assert that var is
+ a gimple_reg if checking is enabled.
+ (find_uses_to_rename_stmt): Only look at non-virtual USE operands.
+ * tree-into-ssa (compute_global_livein): Change the worklist
+ type from an array to a VEC.
+
2012-08-08 Richard Guenther <rguenther@suse.de>
* tree-ssa-operands.h (virtual_operand_p): Declare.
* combine.c (gen_lowpart_for_combine): Don't return identity
for CONST or symbolic reference.
-2012-08-08 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+2012-08-08 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
* common/config/i386/i386-common.c (OPTION_MASK_ISA_ADX_SET): New.
(OPTION_MASK_ISA_ADX_UNSET): Likewise.
for LIVEIN). */
void
-compute_global_livein (bitmap livein ATTRIBUTE_UNUSED, bitmap def_blocks ATTRIBUTE_UNUSED)
+compute_global_livein (bitmap livein, bitmap def_blocks)
{
- basic_block bb, *worklist, *tos;
unsigned i;
bitmap_iterator bi;
+ VEC (basic_block, heap) *worklist;
- tos = worklist
- = (basic_block *) xmalloc (sizeof (basic_block) * (last_basic_block + 1));
+ /* Normally the work list size is bounded by the number of basic
+ blocks in the largest loop. We don't know this number, but we
+ can be fairly sure that it will be relatively small. */
+ worklist = VEC_alloc (basic_block, heap, MAX (8, n_basic_blocks / 128));
EXECUTE_IF_SET_IN_BITMAP (livein, 0, i, bi)
- *tos++ = BASIC_BLOCK (i);
+ VEC_safe_push (basic_block, heap, worklist, BASIC_BLOCK (i));
/* Iterate until the worklist is empty. */
- while (tos != worklist)
+ while (! VEC_empty (basic_block, worklist))
{
edge e;
edge_iterator ei;
/* Pull a block off the worklist. */
- bb = *--tos;
+ basic_block bb = VEC_pop (basic_block, worklist);
/* For each predecessor block. */
FOR_EACH_EDGE (e, ei, bb->preds)
/* None of this is necessary for the entry block. */
if (pred != ENTRY_BLOCK_PTR
- && ! bitmap_bit_p (livein, pred_index)
- && ! bitmap_bit_p (def_blocks, pred_index))
+ && ! bitmap_bit_p (def_blocks, pred_index)
+ && bitmap_set_bit (livein, pred_index))
{
- *tos++ = pred;
- bitmap_set_bit (livein, pred_index);
+ VEC_safe_push (basic_block, heap, worklist, pred);
}
}
}
- free (worklist);
+ VEC_free (basic_block, heap, worklist);
}
basic_block def_bb = gimple_bb (SSA_NAME_DEF_STMT (var));
bitmap_iterator bi;
- if (is_gimple_reg (var))
- bitmap_clear_bit (livein, def_bb->index);
- else
- bitmap_set_bit (livein, def_bb->index);
+ gcc_checking_assert (is_gimple_reg (var));
+ bitmap_clear_bit (livein, def_bb->index);
def = BITMAP_ALLOC (NULL);
bitmap_set_bit (def, def_bb->index);
if (is_gimple_debug (stmt))
return;
- FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_ALL_USES)
+ FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_USE)
find_uses_to_rename_use (bb, var, use_blocks, need_phis);
}