https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99243

--- Comment #5 from Egor Pugin <egor.pugin at gmail dot com> ---
Possible naive fix is to change in module.cc (void module_state::set_filename
(const Cody::Packet &packet)):

-      error_at (loc, "unknown Compiled Module Interface: %s",
                packet.GetString ().c_str ());
+      fatal_error (loc, "unknown Compiled Module Interface: %s",
                packet.GetString ().c_str ());

If we do not fail here, tons of ICEs come later because other code does not
expect such mismatches. (There can be communication error, so we do not get
same number of packets sent about querying modules, or another error.)

For example, the following function

static void
name_pending_imports (cpp_reader *reader)

iterates over responses and does not check for r_iter == response.end()

              module->set_filename (*r_iter);
              ++r_iter;

Reply via email to