[PATCH] modula2: use groups in the type resolver of the bootstrap tool mc
This patch introduces groups to maintain the lists used when resolving
types in the bootstrap tool mc. The groups and type resolver are very
similar to that used in cc1gm2. Specifically the resolver uses the group
to detect any change to any element in any list within a group. This is
much cleaner and safer than the previous list length comparisons.
gcc/m2/ChangeLog:
* Make-lang.in (MC_EXTENDED_OPAQUE): New definition.
* mc-boot/GDynamicStrings.cc: Rebuild.
* mc-boot/GDynamicStrings.h: Rebuild.
* mc-boot/Galists.cc: Rebuild.
* mc-boot/Galists.h: Rebuild.
* mc-boot/Gdecl.cc: Rebuild.
* mc/alists.def (equalList): New procedure.
* mc/alists.mod (equalList): New procedure implementation.
* mc/decl.mod (group): New type.
(freeGroup): New variable.
(globalGroup): Ditto.
(todoQ): Remove declaration and prefix all occurances with globalGroup^.
(partialQ): Ditto.
(doneQ): Ditto.
(newGroup): New procedure.
(initGroup): Ditto.
(killGroup): Ditto.
(dupGroup): Ditto.
(equalGroup): Ditto.
(topologicallyOut): Rewrite.
(cherry picked from commit
20e6f36771df7e3a8857628dd367eecfe77ba4fc)
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>