[libcxx-commits] [libcxx] [libc++] Allow the use of extensions in the implementation (PR #79532)

Sam McCall via libcxx-commits libcxx-commits at lists.llvm.org
Thu Mar 14 07:38:00 PDT 2024


sam-mccall wrote:

My approximate understanding is that any query of diagnostic overrides ends up loading all the mappings (which is a bunch of work), and in order to understand the region they apply to it has to page in source-level information (since they are source-location based).
Maybe this can be fixed eventually in clang, but we need some solution meanwhile.

@philnik777 thanks for the context!

> I'm pretty sure I've checked compile times before and after and didn't see any significant regression

(I would assume this is using libc++ textually rather than as modules, but just want to check)

> We're already depending on this in parts of the code base. IMO we should fix forward instead if this is actually a problem with this approach.

Can you tell me how to check how much would break? (I know how to test llvm but not libcxx specifically).
As a short-term fix, we could enable extensions for just those regions/files until we find a way to do it globally that scales well.

> I've done it this way to avoid introducing extensions in the test suite, since that shouldn't be using extensions as much as possible as a conformance test suite and it's used by other implementations

It seems nice to enforce this, but if we can't revert and there isn't another obvious fix-forward, is it possible to live without this enforcement? Or move the pragmas out of libc++ proper and into the testsuite?

https://github.com/llvm/llvm-project/pull/79532


More information about the libcxx-commits mailing list