public Object[] ic_trans(IcFun f,IcStmt_label break_to){
		/* L1:
		 * branch L2 if expr1==0
		 * expr2
		 * goto L1
		 * L2
		 */
		LinkedList<IcStmt> codes = new LinkedList<IcStmt>();
		
		/* 1.labels */
		IcStmt_label the_l1 = IcStmt_label.new_one(f, 0);
		codes.add(the_l1);
		f.labels.add(the_l1);
		IcStmt_label the_l2 = IcStmt_label.new_one(f, 0);
		f.labels.add(the_l2);
		/* 2.expr1 and branch */
		Object[] result = e1.ic_trans(f, break_to);
		codes.addAll((LinkedList<IcStmt>)result[0]);
		codes.add(new IcStmt_branch(f,0,(IcOper)result[1],new IcConst_int(0),the_l2,IcStmt_branch.EQ));
		/* 3.the expr2 */
		Object[] result2 = e2.ic_trans(f, the_l2);	//change break_to
		codes.addAll((LinkedList<IcStmt>)result2[0]);
		/* 4.the rest */
		codes.add(new IcStmt_goto(f,0,the_l1));
		codes.add(the_l2);
		
		return new Object[]{codes,null};
	}