*/
#include "config.h"
+#include "irnode_t.h"
#include "irprog.h"
#include "irop_t.h"
#include "irgraph_t.h"
(proj == pn_Div_M && mode == mode_M) ||
(proj == pn_Div_X_regular && mode == mode_X) ||
(proj == pn_Div_X_except && mode == mode_X) ||
- (proj == pn_Div_res && mode_is_data(mode) && mode == get_Div_resmode(n))
+ (proj == pn_Div_res && mode == get_Div_resmode(n))
),
"wrong Proj from Div", 0,
show_proj_failure(p);
return 1;
}
-/**
- * verify a Proj(Bound) node
- */
-static int verify_node_Proj_Bound(const ir_node *p)
-{
- ir_mode *mode = get_irn_mode(p);
- ir_node *n = get_Proj_pred(p);
- long proj = get_Proj_proj(p);
-
- ASSERT_AND_RET_DBG(
- (
- (proj == pn_Bound_M && mode == mode_M) ||
- (proj == pn_Bound_X_regular && mode == mode_X) ||
- (proj == pn_Bound_X_except && mode == mode_X) ||
- (proj == pn_Bound_res && mode == get_irn_mode(get_Bound_index(n)))
- ),
- "wrong Proj from Bound", 0,
- show_proj_failure(p);
- );
- return 1;
-}
-
static int verify_node_Proj_fragile(const ir_node *node)
{
ir_node *pred = get_Proj_pred(node);
ASSERT_AND_RET( mymode == mode_X, "Result X", 0 ); /* result X */
/* Compare returned results with result types of method type */
mt = get_entity_type(get_irg_entity(irg));
- ASSERT_AND_RET_DBG(get_Return_n_ress(n) == get_method_n_ress(mt),
+ ASSERT_AND_RET_DBG((size_t)get_Return_n_ress(n) == get_method_n_ress(mt),
"Number of results for Return doesn't match number of results in type.", 0,
show_return_nres(irg, n, mt););
for (i = get_Return_n_ress(n) - 1; i >= 0; --i) {
ir_mode *op1mode = get_irn_mode(get_Div_mem(n));
ir_mode *op2mode = get_irn_mode(get_Div_left(n));
ir_mode *op3mode = get_irn_mode(get_Div_right(n));
+ ir_mode *resmode = get_Div_resmode(n);
ASSERT_AND_RET(
/* Div: BB x M x num x num --> M x X x num */
- op1mode == mode_M &&
- op2mode == op3mode &&
- mode_is_num(op2mode) &&
+ op1mode == mode_M &&
+ op2mode == resmode &&
+ op3mode == resmode &&
+ mode_is_num(resmode) &&
mymode == mode_T,
"Div node", 0
);
ir_mode *op1mode = get_irn_mode(get_Mod_mem(n));
ir_mode *op2mode = get_irn_mode(get_Mod_left(n));
ir_mode *op3mode = get_irn_mode(get_Mod_right(n));
+ ir_mode *resmode = get_Mod_resmode(n);
ASSERT_AND_RET(
/* Mod: BB x M x int x int --> M x X x int */
- op1mode == mode_M &&
- op2mode == op3mode &&
- mode_is_int(op2mode) &&
+ op1mode == mode_M &&
+ op2mode == resmode &&
+ op3mode == resmode &&
+ mode_is_int(resmode) &&
mymode == mode_T,
"Mod node", 0
);
return 1;
}
-/**
- * verify a Cast node
- */
-static int verify_node_Cast(const ir_node *n)
-{
- ir_mode *mymode = get_irn_mode(n);
- ir_mode *op1mode = get_irn_mode(get_Cast_op(n));
-
- ASSERT_AND_RET_DBG(
- /* Conv: BB x datab1 --> datab2 */
- mode_is_data(op1mode) && op1mode == mymode,
- "Cast node", 0,
- show_unop_failure(n, "/* Conv: BB x datab1 --> datab2 */");
- );
- return 1;
-}
-
/**
* verify a Phi node
*/
return 1;
}
-/**
- * verify a Bound node
- */
-static int verify_node_Bound(const ir_node *n)
-{
- ir_mode *mymode = get_irn_mode(n);
- ir_mode *op1mode = get_irn_mode(get_Bound_mem(n));
- ir_mode *op2mode = get_irn_mode(get_Bound_index(n));
- ir_mode *op3mode = get_irn_mode(get_Bound_lower(n));
- ir_mode *op4mode = get_irn_mode(get_Bound_upper(n));
-
- /* Bound: BB x M x int x int x int --> M x X */
- ASSERT_AND_RET(
- mymode == mode_T &&
- op1mode == mode_M &&
- op2mode == op3mode &&
- op3mode == op4mode &&
- mode_is_int(op3mode),
- "Bound node", 0 );
- return 1;
-}
-
/**
* Check dominance.
* For each usage of a node, it is checked, if the block of the
);
}
+ ASSERT_AND_RET_DBG(
+ !is_irn_start_block_placed(n) || get_nodes_block(n) == get_irg_start_block(irg),
+ "node should be in start block", 0,
+ ir_printf("node %+F", n);
+ );
+
if (op->ops.verify_node)
return op->ops.verify_node(n);
register_verify_node_func(op_Alloc, verify_node_Alloc);
register_verify_node_func(op_And, verify_node_And);
register_verify_node_func(op_Block, verify_node_Block);
- register_verify_node_func(op_Bound, verify_node_Bound);
register_verify_node_func(op_Call, verify_node_Call);
- register_verify_node_func(op_Cast, verify_node_Cast);
register_verify_node_func(op_Cmp, verify_node_Cmp);
register_verify_node_func(op_Cond, verify_node_Cond);
register_verify_node_func(op_Confirm, verify_node_Confirm);
register_verify_node_func(op_Sync, verify_node_Sync);
register_verify_node_func_proj(op_Alloc, verify_node_Proj_Alloc);
- register_verify_node_func_proj(op_Bound, verify_node_Proj_Bound);
register_verify_node_func_proj(op_Call, verify_node_Proj_Call);
register_verify_node_func_proj(op_Cond, verify_node_Proj_Cond);
register_verify_node_func_proj(op_CopyB, verify_node_Proj_CopyB);