Reporting source errors from MCCodeEmitter::encodeInstruction() ?

We have a backend for a target that at present only detects some
assembler errors when emitting instructions (basically because the
platform has configurable properties with dependencies between
instructions and it was easier to check for their interaction late
than try to detect them earlier, e.g. through custom encoder methods
and tablegen). Emitting diagnostics through
SourceManager::PrintMessage() "works" in the limited sense of
communicating the problem to a human, however it doesn't prevent
generation of an incorrect output file or change the process exit

We'd prefer not to resort to report_fatal_error() since that isn't a
polite way to diagnose problems in the source.

Is there a sensible way to properly signal a source error from the
level of encodeInstruction()? Or is it expected that all such errors
are reported earlier?

This is the LLDB mailing list but your questions seems to be just about Clang (?).

+cfe-dev and -lldb-dev