/*
- * Copyright (C) 1995-2010 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
(proj == pn_Start_X_initial_exec && mode == mode_X) ||
(proj == pn_Start_M && mode == mode_M) ||
(proj == pn_Start_P_frame_base && mode_is_reference(mode)) ||
- (proj == pn_Start_P_tls && mode_is_reference(mode)) ||
(proj == pn_Start_T_args && mode == mode_T)
),
"wrong Proj from Start", 0,
(proj == pn_Call_M && mode == mode_M) ||
(proj == pn_Call_X_regular && mode == mode_X) ||
(proj == pn_Call_X_except && mode == mode_X) ||
- (proj == pn_Call_T_result && mode == mode_T) ||
- (proj == pn_Call_P_value_res_base && mode_is_reference(mode))
+ (proj == pn_Call_T_result && mode == mode_T)
),
"wrong Proj from Call", 0,
show_proj_failure(p);
(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 == get_Div_resmode(n))
+ (proj == pn_Div_res && mode_is_data(mode) && mode == get_Div_resmode(n))
),
"wrong Proj from Div", 0,
show_proj_failure(p);
return 1;
}
-/**
- * verify a Proj(Cmp) node
- */
-static int verify_node_Proj_Cmp(ir_node *n, ir_node *p)
-{
- ir_mode *mode = get_irn_mode(p);
- long proj = get_Proj_proj(p);
- (void) n;
-
- ASSERT_AND_RET_DBG(
- (proj >= 0 && proj <= 15 && mode == mode_b),
- "wrong Proj from Cmp", 0,
- show_proj_failure(p);
- );
- ASSERT_AND_RET_DBG(
- (mode_is_float(get_irn_mode(get_Cmp_left(n))) || !(proj & pn_Cmp_Uo)),
- "unordered Proj for non-float Cmp (Did you use Ne instead of Lg?)", 0,
- show_proj_failure(p);
- );
- return 1;
-}
-
/**
* verify a Proj(Load) node
*/
(void) irg;
ASSERT_AND_RET(
- /* Div: BB x M x int x int --> M x X x int */
+ /* Div: BB x M x data x data --> M x X x data */
op1mode == mode_M &&
op2mode == op3mode &&
mode_is_data(op2mode) &&
ASSERT_AND_RET_DBG(
/* And or Or or Eor: BB x int x int --> int */
- (mode_is_int(mymode) || mymode == mode_b) &&
+ (mode_is_int(mymode) || mode_is_reference(mymode) || mymode == mode_b) &&
op2mode == op1mode &&
mymode == op2mode,
"And, Or or Eor node", 0,
/* Cmp: BB x datab x datab --> b16 */
mode_is_datab(op1mode) &&
op2mode == op1mode &&
- mymode == mode_T,
+ mymode == mode_b,
"Cmp node", 0,
show_binop_failure(n, "/* Cmp: BB x datab x datab --> b16 */");
);
{
int res = 1;
#ifdef DEBUG_libfirm
+ int pinned = get_irg_pinned(irg) == op_pin_state_pinned;
#ifndef NDEBUG
- last_irg_error = NULL;
+ last_irg_error = NULL;
#endif /* NDEBUG */
- assert(get_irg_pinned(irg) == op_pin_state_pinned && "Verification need pinned graph");
-
- if (flags & VERIFY_ENFORCE_SSA)
+ if ((flags & VERIFY_ENFORCE_SSA) && pinned)
compute_doms(irg);
irg_walk_anchors(
irg,
- get_irg_dom_state(irg) == dom_consistent &&
- get_irg_pinned(irg) == op_pin_state_pinned ? verify_wrap_ssa : verify_wrap,
- NULL, &res
+ pinned && get_irg_dom_state(irg) == dom_consistent
+ ? verify_wrap_ssa : verify_wrap,
+ NULL,
+ &res
);
if (get_node_verification_mode() == FIRM_VERIFICATION_REPORT && ! res) {
/*
* set the default verify operation
*/
-void firm_set_default_verifyer(ir_opcode code, ir_op_ops *ops)
+void firm_set_default_verifier(unsigned code, ir_op_ops *ops)
{
#define CASE(a) \
case iro_##a: \
CASE(Call);
CASE(Div);
CASE(Mod);
- CASE(Cmp);
CASE(Load);
CASE(Store);
CASE(Alloc);