llvm/clang-tools-extra
Sam McCall af89e4792d [pseudo] Add crude heuristics to choose taken preprocessor branches.
In files where different preprocessing paths are possible, our goal is to
choose a preprocessed token sequence which we can parse that pins down as much
of the grammatical structure as possible.
This forms the "primary parse", and the not-taken branches get parsed later,
and are constrained to be compatible with the primary parse.

Concretely:
  int x =
    #ifdef // TAKEN
      2 + 2 + 2 // determined during primary parse to be an expression
    #else
      2 // constrained to be an expression during a secondary parse
    #endif
    ;

Differential Revision: https://reviews.llvm.org/D121165
2022-04-06 17:22:35 +02:00
..
clang-apply-replacements [clang-tools-extra] Remove unused forward declarations (NFC) 2022-01-30 16:05:00 -08:00
clang-change-namespace
clang-doc [clang-doc] SerializeIndex - pass Index param by constant reference 2022-02-17 13:28:02 +00:00
clang-include-fixer
clang-move
clang-query
clang-reorder-fields
clang-tidy Fix typo in new -config-file option 2022-04-05 16:28:49 -04:00
clangd [clangd] Add code action to generate a constructor for a C++ class 2022-04-06 16:23:50 +02:00
docs [clang-tidy] Add release notes for changes made in 2b21fc5520 2022-04-03 15:48:39 +02:00
modularize
pp-trace [clang][lex] Remove PPCallbacks::FileNotFound() 2022-02-15 09:48:25 +01:00
pseudo [pseudo] Add crude heuristics to choose taken preprocessor branches. 2022-04-06 17:22:35 +02:00
test [clang-tidy] Add modernize-macro-to-enum check 2022-04-01 15:24:21 -06:00
tool-template
unittests [libTooling] Generalize string explanation as templated metadata 2022-03-21 20:39:35 +00:00
.gitignore
CMakeLists.txt Reapply [pseudo] Move pseudoparser from clang to clang-tools-extra" 2022-03-16 01:10:55 +01:00
CODE_OWNERS.TXT
LICENSE.TXT
README.txt Replace links to archived mailing lists by links to Discourse forums 2022-03-23 10:10:20 -04:00

//===----------------------------------------------------------------------===//
// 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.

This repository is only intended to be checked out inside of a full LLVM+Clang
tree, and in the 'tools/extra' subdirectory of the Clang checkout.

All discussion regarding Clang, Clang-based tools, and code in this repository
should be held using the standard Clang forum:
  https://discourse.llvm.org/c/clang

Code review for this tree should take place on the standard Clang patch and
commit lists:
  http://lists.llvm.org/mailman/listinfo/cfe-commits

If you find a bug in these tools, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/