+ /* Due to a bug in the immediate use iterator code, we can
+ miss visiting uses in some cases when there is more than
+ one use in a statement. Missing a use can cause a multitude
+ of problems if we expected to eliminate all uses and remove
+ the defining statement.
+
+ Until Andrew can fix the iterator, this hack will detect
+ the cases which cause us problems. Namely if ALL is set
+ and we still have some immediate uses, then we must have
+ skipped one or more in the loop above. So just re-execute
+ the loop.
+
+ The maximum number of times we can re-execute the loop is
+ bounded by the maximum number of times a given SSA_NAME
+ appears in a single statement. */
+ if (all && num_imm_uses (lhs) != 0)
+ goto repeat;
+