llvm-project/clang/lib
Gabor Marton 56b9b97c1e [clang][analyzer][ctu] Make CTU a two phase analysis
This new CTU implementation is the natural extension of the normal single TU
analysis. The approach consists of two analysis phases. During the first phase,
we do a normal single TU analysis. During this phase, if we find a foreign
function (that could be inlined from another TU) then we don’t inline that
immediately, we rather mark that to be analysed later.
When the first phase is finished then we start the second phase, the CTU phase.
In this phase, we continue the analysis from that point (exploded node)
which had been enqueued during the first phase. We gradually extend the
exploded graph of the single TU analysis with the new node that was
created by the inlining of the foreign function.

We count the number of analysis steps of the first phase and we limit the
second (ctu) phase with this number.

This new implementation makes it convenient for the users to run the
single-TU and the CTU analysis in one go, they don't need to run the two
analysis separately. Thus, we name this new implementation as "onego" CTU.

Discussion:
https://discourse.llvm.org/t/rfc-much-faster-cross-translation-unit-ctu-analysis-implementation/61728

Differential Revision: https://reviews.llvm.org/D123773
2022-05-18 10:35:52 +02:00
..
APINotes
ARCMigrate [clang] Use true/false instead of 1/0 (NFC) 2022-01-09 00:19:47 -08:00
AST [clang][ASTImporter] Add isNewDecl 2022-05-18 10:35:52 +02:00
ASTMatchers [ASTMatchers][clang-tidy][NFC] Hoist `forEachTemplateArgument` matcher into the core library 2022-05-13 12:55:48 +02:00
Analysis [clang][dataflow] Fix double visitation of nested logical operators 2022-05-17 20:28:48 +00:00
Basic [clang] Require including config.h for CLANG_DEFAULT_STD_C 2022-05-14 01:48:14 -07:00
CodeGen Revert "[dwarf] Emit a DIGlobalVariable for constant strings." 2022-05-16 19:07:38 -07:00
CrossTU [clang][analyzer][ctu] Make CTU a two phase analysis 2022-05-18 10:35:52 +02:00
DirectoryWatcher [clang] [DirectoryWatcher] Remove leading \\?\ from GetFinalPathNameByHandleW 2021-11-08 22:21:30 +02:00
Driver [clang-cl] Add /Zc:wchar_t- option 2022-05-17 09:40:30 -07:00
Edit [clang] Use true/false instead of 1/0 (NFC) 2022-01-09 00:19:47 -08:00
ExtractAPI Revert ""Re-apply 4b6c2cd642 "Deferred Concept Instantiation Implementation""""" 2022-05-09 09:12:05 -07:00
Format Revert "[clang-format] Fix WhitespaceSensitiveMacros not being honoured when macro closing parenthesis is followed by a newline." 2022-05-18 07:27:45 +02:00
Frontend [clang] Add the flag -ffile-reproducible 2022-05-11 23:04:36 +02:00
FrontendTool [C++20][Modules][HU 1/5] Introduce header units as a module type. 2022-03-25 09:17:14 +00:00
Headers [OpenCL] Do not guard vload/store_half builtins 2022-05-17 10:57:23 +01:00
Index [AST] Improve traversal of concepts and concept requirements 2022-04-28 09:33:26 +00:00
IndexSerialization
Interpreter [ORC] Return ExecutorAddrs rather than JITEvaluatedSymbols from LLJIT::lookup. 2022-05-05 13:56:00 -07:00
Lex [clang] Avoid suggesting typoed directives in `.S` files 2022-05-16 15:46:59 -07:00
Parse [MSVC] Add support for pragma alloc_text 2022-05-16 07:00:17 -07:00
Rewrite Add assert on End iteration distance to Rewriter::getRewrittenText. 2022-01-25 17:26:13 +00:00
Sema [concepts] Implement dcl.decl.general p4: No constraints on non-template funcs 2022-05-17 06:21:51 -07:00
Serialization [clang] serialize ORIGINAL_PCH_DIR relative to BaseDirectory 2022-05-12 07:31:19 -07:00
StaticAnalyzer [clang][analyzer][ctu] Make CTU a two phase analysis 2022-05-18 10:35:52 +02:00
Support [RISCV][NFC] Fix build issue 2022-05-16 16:00:23 +08:00
Testing [include-cleaner] Include-cleaner library structure, and simplistic AST walking. 2022-04-29 11:04:11 +02:00
Tooling [Tooling/DependencyScanning] Make skipping excluded PP ranges during dependency scanning the default 2022-04-28 15:23:03 -07:00
CMakeLists.txt [RISCV] Moving RVV intrinsic type related util to clang/Support 2022-04-20 21:13:13 +08:00