*/
#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);
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 data x data --> M x X x data */
- op1mode == mode_M &&
- op2mode == op3mode &&
- mode_is_data(op2mode) &&
+ /* Div: BB x M x num x num --> M x X x num */
+ 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
);
}
ASSERT_AND_RET( mymode == mode_T, "Load node", 0 );
- /*
- * jack's gen_add_firm_code:simpleSel seems to build Load (Load
- * (Proj (Proj))) sometimes ...
-
- * interprete.c:ai_eval seems to assume that this happens, too
-
- * obset.c:get_abstval_any can't deal with this if the load has
- * mode_T
- *
- {
- ir_entity *ent = hunt_for_entity (get_Load_ptr (n), n);
- assert ((NULL != ent) || (mymode != mode_T));
- }
- */
-
return 1;
}