switch (opcode)
{
+
+ case iro_Block:
+ for (i = 0; i < get_Block_n_cfgpreds(n); ++i) {
+ ir_node *pred = get_Block_cfgpred(n, i);
+ ASSERT_AND_RET((is_Bad(pred) || (get_irn_mode(pred) == mode_X)), "Block node", 0);
+ }
+ // End block may only have Return, Raise or fragile ops as preds.
+ if (n == get_irg_end_block(irg))
+ for (i = 0; i < get_Block_n_cfgpreds(n); ++i) {
+ ir_node *pred = skip_Proj(get_Block_cfgpred(n, i));
+ if (is_Proj(pred) || get_irn_op(pred) == op_Tuple)
+ break; // We can not test properly. How many tuples are there?
+ ASSERT_AND_RET(((get_irn_op(pred) == op_Return) ||
+ is_Bad(pred) ||
+ (get_irn_op(pred) == op_Raise) ||
+ is_fragile_op(pred) ),
+ "End Block node", 0);
+ }
+ break;
+
case iro_Start:
ASSERT_AND_RET(
/* Start: BB --> X x M x ref x data1 x ... x datan x ref */
/* Compare arguments of node with those of type */
mt = get_Call_type(n);
- if (get_method_variadicity(mt) == variadic) {
+ if (get_method_variadicity(mt) == variadicity_variadic) {
ASSERT_AND_RET(
get_Call_n_params(n) >= get_method_n_params(mt),
"Number of args for Call doesn't match number of args in variadic type.",