This problem came about because module equivelance groups with one or
more unused members were cleared. This being so, the remaining
members referenced variables in the module, rather than members of a
union representing the equivalence. Even if that were not the case,
the missing, unused members carry offset information that is essential
to obtain the correct alignment.
The fix detects unused equivalence members, gives them a symtree with
a "unique name" that hides the symbol. Whilst completely unused
equivalence groups are now cleared, the hidden symbols remain. I was
unable to find a convenient, siple way of clearing the hidden symbols
and so decided to ignore them, since they get cleared up at the end of
compilation.