| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[llvm][support] Move make_absolute from sys::fs to sys::path (#161459) The llvm::sys::fs::make_absolute(const Twine &, SmallVectorImpl<char> &) functions doesn't perform any FS access - it only modifies the second parameter via path/string operations. This function should live in the llvm::sys::path namespace for consistency and for making it easier to spot function calls that perform IO. | 9 个月前 | |
[clang] Improve nested name specifier AST representation (#147835) This is a major change on how we represent nested name qualifications in the AST. * The nested name specifier itself and how it's stored is changed. The prefixes for types are handled within the type hierarchy, which makes canonicalization for them super cheap, no memory allocation required. Also translating a type into nested name specifier form becomes a no-op. An identifier is stored as a DependentNameType. The nested name specifier gains a lightweight handle class, to be used instead of passing around pointers, which is similar to what is implemented for TemplateName. There is still one free bit available, and this handle can be used within a PointerUnion and PointerIntPair, which should keep bit-packing aficionados happy. * The ElaboratedType node is removed, all type nodes in which it could previously apply to can now store the elaborated keyword and name qualifier, tail allocating when present. * TagTypes can now point to the exact declaration found when producing these, as opposed to the previous situation of there only existing one TagType per entity. This increases the amount of type sugar retained, and can have several applications, for example in tracking module ownership, and other tools which care about source file origins, such as IWYU. These TagTypes are lazily allocated, in order to limit the increase in AST size. This patch offers a great performance benefit. It greatly improves compilation time for [stdexec](https://github.com/NVIDIA/stdexec). For one datapoint, for test_on2.cpp in that project, which is the slowest compiling test, this patch improves -c compilation time by about 7.2%, with the -fsyntax-only improvement being at ~12%. This has great results on compile-time-tracker as well:  This patch also further enables other optimziations in the future, and will reduce the performance impact of template specialization resugaring when that lands. It has some other miscelaneous drive-by fixes. About the review: Yes the patch is huge, sorry about that. Part of the reason is that I started by the nested name specifier part, before the ElaboratedType part, but that had a huge performance downside, as ElaboratedType is a big performance hog. I didn't have the steam to go back and change the patch after the fact. There is also a lot of internal API changes, and it made sense to remove ElaboratedType in one go, versus removing it from one type at a time, as that would present much more churn to the users. Also, the nested name specifier having a different API avoids missing changes related to how prefixes work now, which could make existing code compile but not work. How to review: The important changes are all in clang/include/clang/AST and clang/lib/AST, with also important changes in clang/lib/Sema/TreeTransform.h. The rest and bulk of the changes are mostly consequences of the changes in API. PS: TagType::getDecl is renamed to getOriginalDecl in this patch, just for easier to rebasing. I plan to rename it back after this lands. Fixes #136624 Fixes https://github.com/llvm/llvm-project/issues/43179 Fixes https://github.com/llvm/llvm-project/issues/68670 Fixes https://github.com/llvm/llvm-project/issues/92757 | 11 个月前 | |
[clang-doc] Add definition information to class templates (#169109) | 8 个月前 | |
[clang][headers] Need a way for math.h to share the definitions of INIFINITY and NAN with float.h (#164348) In C23 mode, both float.h and math.h are required to define INIFINITY and NAN. However, with clang modules, there needs to be a single owner for the declarations. Let that be float.h since that's the suggested true owner in Annex F.2.2 of ISO/IEC 9899:2024, and introduce __need_infinity_nan so that math.h can pick up the compiler definitions. | 9 个月前 | |
[llvm][support] Move make_absolute from sys::fs to sys::path (#161459) The llvm::sys::fs::make_absolute(const Twine &, SmallVectorImpl<char> &) functions doesn't perform any FS access - it only modifies the second parameter via path/string operations. This function should live in the llvm::sys::path namespace for consistency and for making it easier to spot function calls that perform IO. | 9 个月前 | |
Reapply "[clang] Remove intrusive reference count from DiagnosticOptions (#139584)" This reverts commit e2a885537f11f8d9ced1c80c2c90069ab5adeb1d. Build failures were fixed right away and reverting the original commit without the fixes breaks the build again. | 1 年前 | |
[clang-reorder-fields] Check for flexible array member (#160262) A flexible array member must remain the last field in the struct. | 9 个月前 | |
Revert "[ASTMatchers] Make isExpandedFromMacro accept llvm::StringRef… (#167060)" (#169238) This reverts commit a52e1af7f766e26a78d10d31da98af041dd66410. That commit reverted a change (making isExpandedFromMacro take a std::string) that was explicitly added to avoid lifetime issues. We ran into issues with some internal matchers due to this, and it probably is not an uncommon downstream use case. This patch restroes the original functionality and adds a test to ensure that the functionality is preserved. https://reviews.llvm.org/D90303 contains more discussion. | 8 个月前 | |
Revert " [clang] Refactor to remove clangDriver dependency from clangFrontend and flangFrontend (#165277)" (#169397) This reverts commit 3773bbe and relands the last revert attempt 40334b8. 3773bbe broke the build for the build configuration described in here: https://github.com/llvm/llvm-project/pull/165277#issuecomment-3572432250 | 8 个月前 | |
[clang-tidy] Add IgnoredFilesList option to readability-duplicate-include (#168196) Closes [#166938](https://github.com/llvm/llvm-project/issues/166938) | 8 个月前 | |
[include-cleaner] Use lit internal shell by default for tests (#169092) All of the tests seem to be compatible with the internal shell and the internal shell is typically faster by 10-15% on top of providing a better debugging experience. | 8 个月前 | |
Reland "[clang] Refactor option-related code from clangDriver into new clangOptions library" (#167374) This relands #167348. The original PR was reverted due to a reported build failure, which was later diagnosed as a local issue in the developer’s checkout or build state. See discussion here: https://github.com/llvm/llvm-project/pull/163659#discussion_r2511546964 No additional changes have been made in this reland. | 8 个月前 | |
Reland "[clang] Refactor option-related code from clangDriver into new clangOptions library" (#167374) This relands #167348. The original PR was reverted due to a reported build failure, which was later diagnosed as a local issue in the developer’s checkout or build state. See discussion here: https://github.com/llvm/llvm-project/pull/163659#discussion_r2511546964 No additional changes have been made in this reland. | 8 个月前 | |
[clang-doc] Add definition information to class templates (#169109) | 8 个月前 | |
[OpenMP] "UnFix" layering problem with FrontendOpenMP This reverts commit 97aa593a8387586095b7eac12974ba2fdd08f4c3 as it causes problems (PR45453) https://reviews.llvm.org/D77574#1966321. This additionally adds an explicit reference to FrontendOpenMP to clang-tidy where ASTMatchers is used. This is hopefully just a temporary solution. The dependence on FrontendOpenMP from ASTMatchers should be handled by CMake implicitly, not us explicitly. Reviewed By: aheejin Differential Revision: https://reviews.llvm.org/D77666 | 6 年前 | |
[clang-doc] remove FullName from serialization (#166595) An Info's FullName was not being used anywhere in clang-doc. It seems to have been superseded by other types like QualName. Removing FullName also orphans getRecordPrototype, which constructs a record's full declaration (template<...> class ...). There are better ways to construct this documentation in templates. Fixes #143086 | 8 个月前 | |
.gitignore: ignore docs/_build That is where the documentation gets built to. I'm pretty much clueless about SVN; I would appreciate if someone more knowledgeable about SVN made the equivalent change. llvm-svn: 176417 | 13 年前 | |
| 10 个月前 | ||
Fix typos throughout the license files that somehow I and my reviewers all missed! Thanks to Alex Bradbury for pointing this out, and the fact that I never added the intended legacy anchor to the developer policy. Add that anchor too. With hope, this will cause the links to all resolve successfully. llvm-svn: 351731 | 7 年前 | |
[Docs][clang-tools-extra] Convert maintainers list to .rst format (#165171) [Clang maintainers list](https://github.com/llvm/llvm-project/blob/main/clang/Maintainers.rst) is already in .rst format, which gives nice visuals. I think we should convert clang-tools-extra maintainers too to .rst. | 8 个月前 | |
[clang-tools-extra][NFC] Fix link to code review in README.txt (#148384) | 1 年前 |
//===----------------------------------------------------------------------===// // Clang Tools repository //===----------------------------------------------------------------------===//
Welcome to the repository of extra Clang Tools. This repository holds tools that are developed as part of the LLVM compiler infrastructure project and the Clang frontend. These tools are kept in a separate "extra" repository to allow lighter weight checkouts of the core Clang codebase.
All discussion regarding Clang, Clang-based tools, and code in this repository should be held using the standard Clang forums: https://discourse.llvm.org/c/clang https://discourse.llvm.org/c/clang/clang-tidy/71 https://discourse.llvm.org/c/clang/clangd/34
Code review for this tree should take place on Github: https://github.com/llvm/llvm-project/pulls?q=label%3Aclang-tools-extra
If you find a bug in these tools, please file it in the LLVM bug tracker: https://github.com/llvm/llvm-project/issues/