private void downSafety(final ExprInfo exprInfo) {
		final Iterator blocks = cfg.nodes().iterator();

		while (blocks.hasNext()) {
			final Block block = (Block) blocks.next();

			final Phi phi = exprInfo.exprPhiAtBlock(block);

			if (phi == null) {
				continue;
			}

			if (StackPRE.DEBUG) {
				System.out.println("    down safety for " + phi + " in "
						+ block);
			}

			if (phi.downSafe()) {
				if (StackPRE.DEBUG) {
					System.out.println("    already down safe");
				}

				continue;
			}

			// The phi is not down safe. Make all its operands not
			// down safe.

			final Iterator e = phi.operands().iterator();

			while (e.hasNext()) {
				final Def def = (Def) e.next();

				if (def != null) {
					resetDownSafe(def);
				}
			}
		}
	}