public Object[] ic_trans(IcFun f,IcStmt_label break_to){
		/* i = expr1;
		 * L1: branch L2 if i>expr2
		 *  	expr3
		 *  	i++
		 *  	goto L1
		 *  L2 
		 */
		LinkedList<IcStmt> codes = new LinkedList<IcStmt>();
		
		/* 1.add the dec of index */
		//new IcVar
		IcVar_local t = new IcVar_local(f,the_index.id.toString(),f.var_l.size(),the_index);	
		//add to IcFun's list
		f.var_l.add(t);		
		//add to Dec's field
		the_index.ic_var = t;
		/* 2.i = expr1 */
		Object[] result = e1.ic_trans(f, break_to);
		codes.addAll((LinkedList<IcStmt>)result[0]);
		codes.add(new IcStmt_assign(f,0,t,(IcOper)result[1]));
		/* 3.L1 & L2(not add now) */
		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);
		/* 4.expr2 */
		Object[] result2 = e2.ic_trans(f, break_to);
		codes.addAll((LinkedList<IcStmt>)result2[0]);
		IcOper the_end = (IcOper)result2[1];
		/* 5.branch */
		codes.add(new IcStmt_branch(f,0,t,the_end,the_l2,IcStmt_branch.GT));
		/* 6.expr3 */
		Object[] result3 = e3.ic_trans(f, the_l2);	//change break_to
		codes.addAll((LinkedList<IcStmt>)result3[0]);
		/* 7.i++ */
		codes.add(new IcStmt_op(f,0,t,t,new IcConst_int(1),IcStmt_op.PLUS));
		/* 8.goto L1 */
		codes.add(new IcStmt_goto(f,0,the_l1));
		/* 9.L2 */
		codes.add(the_l2);
		
		return new Object[]{codes,null};
		
	}