public Object[] ic_trans(IcFun f,IcStmt_label break_to){
		LinkedList<IcStmt> codes = new LinkedList<IcStmt>();
		IcOper r = null;
		/* 1. the args */
		LinkedList<IcOper> arg_list = new LinkedList<IcOper>();
		if(list != null){
			for(Expr e: list.list){
				Object[] result = e.ic_trans(f, break_to);
				codes.addAll((LinkedList<IcStmt>)result[0]);
				arg_list.add((IcOper)result[1]);
			}
		}
		/* 2. the call and return */
		if(the_dec.return_type.coerceTo(Type.THE_VOID)){
			IcStmt_call call = new IcStmt_call(f,0,the_dec.ic_fun);
			call.args.addAll(arg_list);
			codes.add(call);
		}
		else{
			IcVar_tmp tmp = IcVar_tmp.new_one(f);
			IcStmt_callback call = new IcStmt_callback(f,0,the_dec.ic_fun,tmp);
			call.args.addAll(arg_list);
			codes.add(call);
			r = tmp;
		}
		return new Object[]{codes,r};
	}