void updateInOut(FlowBlock successor, SuccessorInfo succInfo) {
		/*
		 * First get the gen/kill sets of all jumps to successor and calculate
		 * the intersection.
		 */
		SlotSet kills = succInfo.kill;
		VariableSet gens = succInfo.gen;

		/*
		 * Merge the locals used in successing block with those written by this
		 * blocks.
		 */
		successor.in.merge(gens);

		/*
		 * The ins of the successor that are not killed (i.e. unconditionally
		 * overwritten) by this block are new ins for this block.
		 */
		SlotSet newIn = (SlotSet) successor.in.clone();
		newIn.removeAll(kills);

		/*
		 * The gen/kill sets must be updated for every jump in the other block
		 */
		Iterator i = successor.successors.values().iterator();
		while (i.hasNext()) {
			SuccessorInfo succSuccInfo = (SuccessorInfo) i.next();
			succSuccInfo.gen.mergeGenKill(gens, succSuccInfo.kill);
			if (successor != this)
				succSuccInfo.kill.mergeKill(kills);
		}
		this.in.addAll(newIn);
		this.gen.addAll(successor.gen);

		if ((GlobalOptions.debuggingFlags & GlobalOptions.DEBUG_INOUT) != 0) {
			GlobalOptions.err.println("UpdateInOut: gens : " + gens);
			GlobalOptions.err.println("             kills: " + kills);
			GlobalOptions.err.println("             s.in : " + successor.in);
			GlobalOptions.err.println("             in   : " + in);
		}
	}