https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90109
--- Comment #5 from Jim Wilson <wilson at gcc dot gnu.org> --- Stabs requires that we emit info for all of the base types at the start. But if one of the base types does not exist for a 32-bit K&R C target, then we are struck, as that can't be described. And if we can't describe one or more of the base types, then we can't safely describe derived types. Currently, we just lie about the base types we can't describe, which lets us emit debug info for the derived types that we can describe. It is possible to describe some things as derived types that can't be described as base types. But if we aren't allowed to lie about base types, then we probably have to refuse to emit any debug info at all for the file, which doesn't help. You can get correct debug info for this testcase if you use stabs-plus-gdb-extensions. At least until you try to use some language feature invented in the last decade or two that we never added stabs-plus-gdb-extensions support for, and then you are screwed again. Which takes me back to don't use stabs again.