commit | d324d427bdde2b3825d623ceee4367dc3535ddac | [log] [tgz] |
---|---|---|
author | Jan Voung <jvoung@google.com> | Fri Dec 20 09:01:13 2024 -0500 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Dec 20 06:06:31 2024 -0800 |
tree | 400f3ab479f391d93ebb3dcbc68a890f2f4a9784 | |
parent | 819d701fb41d947b93935d4a1eac9af631e1b41c [diff] |
[clang][dataflow] Add matchers for smart pointer accessors to be cached (#120102) This is part 1 of caching for smart pointer accessors, building on top of the CachedConstAccessorsLattice, which caches "normal" accessors. Smart pointer accessors are a bit different in that they may: - have aliases to access the same underlying data (but potentially returning slightly different types like `&` vs `*`). Within a "checked" sequence users may mix uses of the different aliases and the check should apply to any of the spellings. - may have non-const overloads in addition to the const version, where the non-const doesn't actually modify the container Part 2 will follow and add transfer functions utilities. It will also add a user UncheckedOptionalAccessModel. We'd seen false positives when nesting StatusOr<optional<T>> and optional<StatusOr<T>>, etc. which this can help address. GitOrigin-RevId: 54309b1c2f7a9acdb91ae1735cf4eb0877eadfc0
Welcome to Clang.
This is a compiler front-end for the C family of languages (C, C++ and Objective-C) which is built as part of the LLVM compiler infrastructure project.
Unlike many other compiler frontends, Clang is useful for a number of things beyond just compiling code: we intend for Clang to be host to a number of different source-level tools. One example of this is the Clang Static Analyzer.
If you're interested in more (including how to build Clang) it is best to read the relevant websites. Here are some pointers:
Information on Clang: http://clang.llvm.org/
Building and using Clang: http://clang.llvm.org/get_started.html
Clang Static Analyzer: http://clang-analyzer.llvm.org/
Information on the LLVM project: http://llvm.org/
If you have questions or comments about Clang, a great place to discuss them is on the Clang forums:
If you find a bug in Clang, please file it in the LLVM bug tracker: