#define DDME(X) xprintf("%s(l.%i) %I: %p\n", __FILE__, __LINE__, get_entity_ident(X), (X))
#define DDMG(X) xprintf("%s(l.%i) %I: %p\n", __FILE__, __LINE__, get_irg_ent(get_entity_ident(X)), (X))
#define DDMI(X) xprintf("%s(l.%i) %I: %p\n", __FILE__, __LINE__, (X), (X))
+#define DDMM(X) xprintf("%s(l.%i) %I: %p\n", __FILE__, __LINE__, get_mode_ident(X), (X))
#endif /* __GNUC__ */
/*@}*/ /* Macros for debug.. */
mt = get_entity_type(get_irg_ent(current_ir_graph));
assert(proj < get_method_n_params(mt) &&
"More Projs for args than args in type");
+ if ((mode == mode_P) && is_compound_type(get_method_param_type(mt, proj)))
+ /* value argument */ break;
assert(mode == get_type_mode(get_method_param_type(mt, proj)) &&
"Mode of Proj from Start doesn't match mode of param type.");
} break;
mt = get_Call_type(pred);
assert(proj < get_method_n_ress(mt) &&
"More Projs for results than results in type.");
+ if ((mode == mode_P) && is_compound_type(get_method_res_type(mt, proj)))
+ /* value result */ break;
assert(mode == get_type_mode(get_method_res_type(mt, proj)) &&
"Mode of Proj from Call doesn't match mode of result type.");
} break;
assert (
/* common Add: BB x num x num --> num */
((mymode == op1mode && mymode == op2mode
- && mode_is_num(mymode))
+ && (mode_is_num(mymode) || mymode == mode_P))
|| /* Pointer Add: BB x P x Is --> P */
(op1mode == mode_P && op2mode == mode_Is && mymode == mode_P)
|| /* Pointer Add: BB x Is x P --> P */