+ } else if (mode_is_reference(mode)) {
+ ir_node *left = get_Sub_left(irn);
+ ir_node *right = get_Sub_right(irn);
+ ir_mode *l_mode = get_irn_mode(left);
+ ir_mode *r_mode = get_irn_mode(right);
+ if (mode_is_int(l_mode)) {
+ /* Usually, Sub(I*,P) is an error, hence the verifier rejects it.
+ * However, it is correct in this case, so add Conv to make verifier happy. */
+ ir_node *block = get_nodes_block(right);
+ ir_node *lconv = new_r_Conv(block, left, r_mode);
+ assert(mode_is_reference(r_mode));
+ set_Sub_left(irn, lconv);
+ }