[libcxx-commits] [PATCH] D140359: [ItaniumDemangle] Fix substitution failure of _BitInt

John McCall via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Jan 5 13:42:57 PST 2023


rjmccall added a comment.

That's an interesting question.  The ABI says:

  There are two exceptions that appear to be substitution candidates from the grammar, but are explicitly excluded:
  
  - `<builtin-type>` other than vendor extended types, and
  - function and operator names other than `extern "C"` functions.

The intent here, I think, is to not waste substitution entries on builtin types, most of which are encoded more compactly than substitutions anyway.  That is why vendor extended types are an exception to the exception: they're not particularly compact and so are still useful to compress.  (I don't know if we reliably get that right in the frontend, actually.)  It's in keeping with that intent for `_BigInt` to be a substitution candidate, since it's a relatively long encoding.  That's not what the ABI actually says, though, so we should fix it either in the frontend or in the ABI document.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140359/new/

https://reviews.llvm.org/D140359



More information about the libcxx-commits mailing list