/* Conversion of SESE regions to Polyhedra.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com>.
This file is part of GCC.
gimple stmt = gimple_build_assign (res, zero_dim_array);
tree arg = gimple_phi_arg_def (phi, 0);
- if (TREE_CODE (arg) == SSA_NAME)
+ if (TREE_CODE (arg) == SSA_NAME
+ && !SSA_NAME_IS_DEFAULT_DEF (arg))
insert_out_of_ssa_copy (zero_dim_array, arg);
else
insert_out_of_ssa_copy_on_edge (single_pred_edge (gimple_bb (phi)),
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, def)
if (def_bb != gimple_bb (use_stmt)
- && gimple_code (use_stmt) != GIMPLE_PHI)
+ && gimple_code (use_stmt) != GIMPLE_PHI
+ && !is_gimple_debug (use_stmt))
{
if (!zero_dim_array)
{
split_block (bb, stmt);
- if (gsi_one_before_end_p (gsi_start_bb (bb)))
+ if (gsi_one_before_end_p (gsi_start_nondebug_bb (bb)))
return bb;
gsi = gsi_last_bb (bb);
bool known_niter = number_of_iterations_exit (loop, exit, &niter, false);
- /* At this point we should know the number of iterations, */
+ /* At this point we should know the number of iterations. */
gcc_assert (known_niter);
nit = force_gimple_operand (unshare_expr (niter.niter), &stmts, true,
if (stmts)
gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop), stmts);
- loop->single_iv = canonicalize_loop_ivs (loop, &nit);
+ loop->single_iv = canonicalize_loop_ivs (loop, &nit, false);
}
/* Rewrite all the loops of SCOP in normal form: one induction
graphite_loop_normal_form (loop);
}
+/* Java does not initialize long_long_integer_type_node. */
+#define my_long_long (long_long_integer_type_node ? long_long_integer_type_node : ssizetype)
+
/* Can all ivs be represented by a signed integer?
As CLooG might generate negative values in its expressions, signed loop ivs
are required in the backend. */
precision = TYPE_PRECISION (type);
if (TYPE_UNSIGNED (type)
- && precision >= TYPE_PRECISION (long_long_integer_type_node))
+ && precision >= TYPE_PRECISION (my_long_long))
return false;
}
return true;
}
+#undef my_long_long
/* Builds the polyhedral representation for a SESE region. */