Errors encountered while processing the templates and m3makefiles are immediately reported and stop m3build. When processing the source files, (compiling to intermediate language, translating to assembly, producing object code), if errors are encountered they are reported and subsequent compilation phases for the offending file are suppressed. The processing continues with the other files, but the final link step is skipped.
The compiler's error recovery is limited; it is often the case that errors following the first one are bogus or redundant. Error messages ending with a question mark are internal errors, and probably represent compiler bugs.