Skip to content

[AutoBump] Merge with 08195f31 (Jan 23) (18) #556

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 80 commits into
base: bump_to_7e622b61
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
719f0d9
[HLSL] Fix global resource initialization (#123394)
hekota Jan 22, 2025
1cf0af3
[AMDGPU][True16][MC] true16 for v_cmpx_class_f16 (#123251)
broxigarchen Jan 22, 2025
18e9d3d
[AMDGPU][True16][MC] true16 for v_cmpx_xx_u/i16 (#123424)
broxigarchen Jan 22, 2025
213e03c
[Clang] Fix handling of immediate escalation for inherited constructo…
cor3ntin Jan 22, 2025
c6e7b4a
[flang][cuda][NFC] Add kernel name in translation error (#123987)
clementval Jan 22, 2025
2656928
Reland "[HLSL] Implement the `reflect` HLSL function" (#123853)
Icohedron Jan 22, 2025
8fb4230
[SYCL] AST support for SYCL kernel entry point functions. (#122379)
tahonermann Jan 22, 2025
517334b
[TableGen] Add maps from Write/ReadType to the parent WriteRes/ReadAd…
topperc Jan 22, 2025
ac94fad
[SPIR-V] Rename internal command line flags for optimization level an…
VyacheslavLevytskyy Jan 22, 2025
68c6b2e
[ASTMatchers][NFC] use `Matcher<QualType>` instead of `DynTypedMatche…
HerrCai0907 Jan 22, 2025
a2c683b
[LLD][COFF] Use EC symbol table for exports defined in module definit…
cjacek Jan 22, 2025
4e9d5a3
[LLD][COFF] Add support for the -defArm64Native argument (#123850)
cjacek Jan 22, 2025
a77250f
[mlir] Add C and Python interface for file range (#123276)
jpienaar Jan 22, 2025
223bd0c
[libc++] Avoid unnecessary instantiations for __copy_cvref_t (#123718)
philnik777 Jan 22, 2025
27ccc99
[RISCV][VLOpt] Minor worklist invariant cleanup [NFC] (#123989)
preames Jan 22, 2025
e0ae889
[SandboxIR][Doc] Add Quick start notes (#123992)
vporpo Jan 22, 2025
630177c
[compiler-rt][rtsan] Fix madvise/posix_madvise for macOs. (#124020)
devnexen Jan 22, 2025
939f290
[compiler-rt][rtsan] getsockopt/setsockopt interception. (#124004)
devnexen Jan 22, 2025
fd08713
[SandboxVec][Legality] Diamond reuse multi input (#123426)
vporpo Jan 22, 2025
6436089
[BoundsSafety][Doc] Add BoundsSafetyAdoptionGuide.rst (#120674)
rapidsna Jan 22, 2025
a939a9f
[LLDB-DAP] Send Progress update message over DAP (#123837)
Jlalond Jan 22, 2025
6e498bc
[flang][cuda] Handle simple device pointer allocation (#123996)
clementval Jan 22, 2025
98de5df
[mlir] Add NamedAttribute ctor taking StringRef. NFC. (#123974)
kuhar Jan 23, 2025
2dc1c95
[SandboxVec][VecUtils] Implement VecUtils::getLowest() (#124024)
vporpo Jan 23, 2025
96dbd00
[RISCV] Re-generate test checks so we pick up implicit on whole regi…
topperc Jan 22, 2025
9fbf5cf
[clang][modules] Partially revert 48d0eb518 to fix -gmodules output (…
benlangmuir Jan 23, 2025
8f45452
workflows/release-binaries: Restrict jobs based on owner instead of r…
tstellar Jan 23, 2025
8110af7
[SandboxVec][BottomUpVec] Fix codegen when packing constants. (#124033)
vporpo Jan 23, 2025
d5457e4
[NFC][Index] Disable LSAN on crash recovery tests (#124035)
vitalybuka Jan 23, 2025
eaaac05
[Sema] Fix a warning
kazutakahirata Jan 23, 2025
a9d2834
[llvm][CodeGen] Fix the issue caused by live interval checking in win…
huaatian Jan 23, 2025
847acbb
[ExceptionDemo] Transition example from MCJIT to ORC and fix errors (…
epitavy Jan 23, 2025
23d2a18
PeepholeOpt: Remove unnecessary check for null TargetInstrInfo (#123929)
arsenm Jan 23, 2025
d3aea77
[SLP] Move transformMaskAfterShuffle into BaseShuffleAnalysis and use…
HanKuanChen Jan 23, 2025
1042ddc
[gn] port ec15b242505
nico Jan 23, 2025
6f69ade
PeepholeOpt: Remove null TargetRegisterInfo check (#123933)
arsenm Jan 23, 2025
2646e2d
PeepholeOpt: Stop allocating tiny helper classes (NFC) (#123936)
arsenm Jan 23, 2025
ba70368
[Clang][Driver] Support linker relaxation options for LoongArch (#123…
zhaoqi5 Jan 23, 2025
15c2d4b
PeepholeOpt: Remove check for subreg index on a def operand (#123943)
arsenm Jan 23, 2025
9cefa3e
[msan] Generalize handleIntrinsicByApplyingToShadow by adding bitcast…
thurstond Jan 23, 2025
ba3e6f0
[RISCV][VLOPT] Remove dead passthru check in getOperandLog2EEW. NFC (…
lukel97 Jan 23, 2025
0fe8e70
Revert "Reland "[HLSL] Implement the `reflect` HLSL function"" (#124046)
inbelic Jan 23, 2025
3ef90f8
[emitc] Fix the translation switchop with argument of expressionop (#…
jacquesguan Jan 23, 2025
b46fcb9
[Clang] Implement CWG 2628 "Implicit deduction guides should propagat…
zyn0217 Jan 23, 2025
652ff20
[flang][cuda] Adding atomicadd as a cudadevice intrinsic and converti…
Renaud-K Jan 23, 2025
892a804
[NVPTX] Stop using 16-bit CAS instructions from PTX (#120220)
akshayrdeodhar Jan 23, 2025
1c5d971
[Signals] Exclude dladdr for AIX after #123879
MaskRay Jan 23, 2025
7575072
[llvm-exegesis] Disable exhaustive tests on Windows
boomanaiden154 Jan 23, 2025
19834b4
[LoongArch] Support sc.q instruction for 128bit cmpxchg operation (#1…
tangaac Jan 23, 2025
0bcf34e
[Clang] [NFC] Mark `UnresolvedSetImpl`'s move operations as defaulted…
MagentaTreehouse Jan 23, 2025
d80b814
[LoongArch] Summary llvm20 release notes
SixWeining Jan 23, 2025
3c7a878
[LoongArch] Summary clang20 release notes
SixWeining Jan 23, 2025
aa273fd
[LoongArch] Update lld20 release notes
SixWeining Jan 23, 2025
163935a
[RISCV] Add Qualcomm uC Xqcilo (Large Offset Load Store) extension (#…
hchandel Jan 23, 2025
de209fa
[CodeGen] Introduce Static Data Splitter pass (#122183)
mingmingl-llvm Jan 23, 2025
d15f3e8
[LoopInterchange] Constrain LI within supported loop nest depth (#118…
madhur13490 Jan 23, 2025
646f034
[gn build] Port de209fa11b54
llvmgnsyncbot Jan 23, 2025
daa1820
[Flang][OpenMP] Fix copyin allocatable lowering to MLIR (#122097)
kaviya2510 Jan 23, 2025
ea49d47
Specify triple for llc test
mingmingl-llvm Jan 23, 2025
5d8390d
Temporarily disable test on Fuchsia
mingmingl-llvm Jan 23, 2025
c3dfd34
[WebAssembly] Add unreachable before catch destinations (#123915)
aheejin Jan 23, 2025
ba17485
[clang][CodeComplete] Use HeuristicResolver to resolve DependentNameT…
HighCommander4 Jan 23, 2025
220004d
[GISel] Add more FP opcodes to CSE (#123949)
lialan Jan 23, 2025
3fb8c5b
[X86] Fix invalid instructions on x32 with large stack frames (#124041)
mconst Jan 23, 2025
8eb99bb
Reland [LLD] [COFF] Fix linking MSVC generated implib header objects …
mstorsjo Jan 23, 2025
cd5694e
[StrTable] Switch the option parser to `llvm::StringTable` (#123308)
chandlerc Jan 23, 2025
2b67ece
Android no longer supports arm < 7 (#123952)
hiraditya Jan 23, 2025
2a51a0d
Remove reference to android-mips (#124021)
hiraditya Jan 23, 2025
091741a
[libfuzzer] Clarify -max_len behavior on bigger files (#123095)
chfast Jan 23, 2025
70d7c84
[mlir][docs] Add usage/example of OpAsmOpInterface (#123610)
ZenithalHourlyRate Jan 23, 2025
4b0df28
[clang][Tooling] Prefer <atomic> for atomic_* family in C++
kadircet Jan 23, 2025
7781381
[SDAG] Use BatchAAResults for querying alias analysis (AA) results (#…
MacDue Jan 23, 2025
d7c14c8
[IR] Replace of PointerType::getUnqual(Type) with opaque version (NFC…
junlarsen Jan 23, 2025
9fd9263
[libc++abi] Remove support for Android 4 and older (#124054)
brad0 Jan 23, 2025
6bc68d0
[libc++] Remove support for Android 4 and older (#124062)
brad0 Jan 23, 2025
0429bfe
[libc++] Remove a few unused includes (#124025)
philnik777 Jan 23, 2025
ee99c4d
[LLVM][Clang][AArch64] Implement AArch64 build attributes (#123990)
sivan-shani Jan 23, 2025
7fb97be
[ConstraintElimination] Add eq/ne facts to signed constraint system (…
zsrkmyn Jan 23, 2025
08195f3
[libc++] Inline basic_streambuf functions (#123379)
philnik777 Jan 23, 2025
d21dbbb
[AutoBump] Merge with 08195f31 (Jan 23)
jorickert May 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .github/workflows/release-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
prepare:
name: Prepare to build binaries
runs-on: ${{ inputs.runs-on }}
if: github.repository == 'llvm/llvm-project'
if: github.repository_owner == 'llvm'
outputs:
release-version: ${{ steps.vars.outputs.release-version }}
ref: ${{ steps.vars.outputs.ref }}
Expand Down Expand Up @@ -177,7 +177,7 @@ jobs:
build-release-package:
name: "Build Release Package"
needs: prepare
if: github.repository == 'llvm/llvm-project'
if: github.repository_owner == 'llvm'
runs-on: ${{ needs.prepare.outputs.build-runs-on }}
steps:

Expand Down Expand Up @@ -327,7 +327,7 @@ jobs:
- prepare
- build-release-package
if: >-
github.repository == 'llvm/llvm-project'
github.repository_owner == 'llvm'
runs-on: ${{ needs.prepare.outputs.test-runs-on }}
steps:
- name: Checkout Actions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/Lex/Lexer.h"

using namespace clang::ast_matchers;
Expand Down
9 changes: 8 additions & 1 deletion clang/docs/BoundsSafety.rst
Original file line number Diff line number Diff line change
Expand Up @@ -996,4 +996,11 @@ and the soundness of the type system. This may incur significant code size
overhead in unoptimized builds and leaving some of the adoption mistakes to be
caught only at run time. This is not a fundamental limitation, however, because
incrementally adding necessary static analysis will allow us to catch issues
early on and remove unnecessary bounds checks in unoptimized builds.
early on and remove unnecessary bounds checks in unoptimized builds.

Try it out
==========

Your feedback on the programming model is valuable. You may want to follow the
instruction in :doc:`BoundsSafetyAdoptionGuide` to play with ``-fbounds-safety``
and please send your feedback to `Yeoul Na <mailto:[email protected]>`_.
90 changes: 90 additions & 0 deletions clang/docs/BoundsSafetyAdoptionGuide.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
======================================
Adoption Guide for ``-fbounds-safety``
======================================

.. contents::
:local:

Where to get ``-fbounds-safety``
================================

The open sourcing to llvm.org's ``llvm-project`` is still on going and the
feature is not available yet. In the mean time, the preview implementation is
available
`here <https://github.com/swiftlang/llvm-project/tree/stable/20240723>`_ in a
fork of ``llvm-project``. Please follow
`Building LLVM with CMake <https://llvm.org/docs/CMake.html>`_ to build the
compiler.

Feature flag
============

Pass ``-fbounds-safety`` as a Clang compilation flag for the C file that you
want to adopt. We recommend adopting the model file by file, because adoption
requires some effort to add bounds annotations and fix compiler diagnostics.

Include ``ptrcheck.h``
======================

``ptrcheck.h`` is a Clang toolchain header to provide definition of the bounds
annotations such as ``__counted_by``, ``__counted_by_or_null``, ``__sized_by``,
etc. In the LLVM source tree, the header is located in
``llvm-project/clang/lib/Headers/ptrcheck.h``.


Add bounds annotations on pointers as necessary
===============================================

Annotate pointers on struct fields and function parameters if they are pointing
to an array of object, with appropriate bounds annotations. Please see
:doc:`BoundsSafety` to learn what kind of bounds annotations are available and
their semantics. Note that local pointer variables typically don't need bounds
annotations because they are implicitely a wide pointer (``__bidi_indexable``)
that automatically carries the bounds information.

Address compiler diagnostics
============================

Once you pass ``-fbounds-safety`` to compiler a C file, you will see some new
compiler warnings and errors, which guide adoption of ``-fbounds-safety``.
Consider the following example:

.. code-block:: c

#include <ptrcheck.h>

void init_buf(int *p, int n) {
for (int i = 0; i < n; ++i)
p[i] = 0; // error: array subscript on single pointer 'p' must use a constant index of 0 to be in bounds
}

The parameter ``int *p`` doesn't have a bounds annotation, so the compiler will
complain about the code indexing into it (``p[i]``) as it assumes that ``p`` is
pointing to a single ``int`` object or null. To address the diagnostics, you
should add a bounds annotation on ``int *p`` so that the compiler can reason
about the safety of the array subscript. In the following example, ``p`` is now
``int *__counted_by(n)``, so the compiler will allow the array subscript with
additional run-time checks as necessary.

.. code-block:: c

#include <ptrcheck.h>

void init_buf(int *__counted_by(n) p, int n) {
for (int i = 0; i < n; ++i)
p[i] = 0; // ok; `p` is now has a type with bounds annotation.
}

Run test suites to fix new run-time traps
=========================================

Adopting ``-fbounds-safety`` may cause your program to trap if it violates
bounds safety or it has incorrect adoption. Thus, it is necessary to perform
run-time testing of your program to gain confidence that it won't trap at
run time.

Repeat the process for each remaining file
==========================================

Once you've done with adopting a single C file, please repeat the same process
for each remaining C file that you want to adopt.
25 changes: 25 additions & 0 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,9 @@ Resolutions to C++ Defect Reports
- Clang now allows trailing requires clause on explicit deduction guides.
(`CWG2707: Deduction guides cannot have a trailing requires-clause <https://cplusplus.github.io/CWG/issues/2707.html>`_).

- Respect constructor constraints during CTAD.
(`CWG2628: Implicit deduction guides should propagate constraints <https://cplusplus.github.io/CWG/issues/2628.html>`_).

- Clang now diagnoses a space in the first production of a ``literal-operator-id``
by default.
(`CWG2521: User-defined literals and reserved identifiers <https://cplusplus.github.io/CWG/issues/2521.html>`_).
Expand Down Expand Up @@ -971,6 +974,7 @@ Bug Fixes to C++ Support
- Fixed canonicalization of pack indexing types - Clang did not always recognized identical pack indexing. (#GH123033)
- Fixed a nested lambda substitution issue for constraint evaluation. (#GH123441)
- Fixed various false diagnostics related to the use of immediate functions. (#GH123472)
- Fix immediate escalation not propagating through inherited constructors. (#GH112677)

Bug Fixes to AST Handling
^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -1131,6 +1135,20 @@ Windows Support
LoongArch Support
^^^^^^^^^^^^^^^^^

- Types of parameters and return value of ``__builtin_lsx_vorn_v`` and ``__builtin_lasx_xvorn_v``
are changed from ``signed char`` to ``unsigned char``. (#GH114514)

- ``-mrelax`` and ``-mno-relax`` are supported now on LoongArch that can be used
to enable / disable the linker relaxation optimization. (#GH123587)

- Fine-grained la64v1.1 options are added including ``-m{no-,}frecipe``, ``-m{no-,}lam-bh``,
``-m{no-,}ld-seq-sa``, ``-m{no-,}div32``, ``-m{no-,}lamcas`` and ``-m{no-,}scq``.

- Two options ``-m{no-,}annotate-tablejump`` are added to enable / disable
annotating table jump instruction to correlate it with the jump table. (#GH102411)

- FreeBSD support is added for LoongArch64 and has been tested by building kernel-toolchain. (#GH119191)

RISC-V Support
^^^^^^^^^^^^^^

Expand Down Expand Up @@ -1254,6 +1272,13 @@ libclang
- Added ``clang_getOffsetOfBase``, which allows computing the offset of a base
class in a class's layout.


Code Completion
---------------

- Use ``HeuristicResolver`` (upstreamed from clangd) to improve code completion results
in dependent code

Static Analyzer
---------------

Expand Down
1 change: 1 addition & 0 deletions clang/docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Using Clang as a Compiler
SanitizerStats
SanitizerSpecialCaseList
BoundsSafety
BoundsSafetyAdoptionGuide
BoundsSafetyImplPlans
ControlFlowIntegrity
LTOVisibility
Expand Down
16 changes: 14 additions & 2 deletions clang/include/clang/AST/ASTNodeTraverser.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ class ASTNodeTraverser
ConstStmtVisitor<Derived>::Visit(S);

// Some statements have custom mechanisms for dumping their children.
if (isa<DeclStmt>(S) || isa<GenericSelectionExpr>(S) ||
isa<RequiresExpr>(S) || isa<OpenACCWaitConstruct>(S))
if (isa<DeclStmt, GenericSelectionExpr, RequiresExpr,
OpenACCWaitConstruct, SYCLKernelCallStmt>(S))
return;

if (Traversal == TK_IgnoreUnlessSpelledInSource &&
Expand Down Expand Up @@ -585,6 +585,12 @@ class ASTNodeTraverser

void VisitTopLevelStmtDecl(const TopLevelStmtDecl *D) { Visit(D->getStmt()); }

void VisitOutlinedFunctionDecl(const OutlinedFunctionDecl *D) {
for (const ImplicitParamDecl *Parameter : D->parameters())
Visit(Parameter);
Visit(D->getBody());
}

void VisitCapturedDecl(const CapturedDecl *D) { Visit(D->getBody()); }

void VisitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D) {
Expand Down Expand Up @@ -815,6 +821,12 @@ class ASTNodeTraverser
Visit(Node->getCapturedDecl());
}

void VisitSYCLKernelCallStmt(const SYCLKernelCallStmt *Node) {
Visit(Node->getOriginalStmt());
if (Traversal != TK_IgnoreUnlessSpelledInSource)
Visit(Node->getOutlinedFunctionDecl());
}

void VisitOMPExecutableDirective(const OMPExecutableDirective *Node) {
for (const auto *C : Node->clauses())
Visit(C);
Expand Down
77 changes: 77 additions & 0 deletions clang/include/clang/AST/Decl.h
Original file line number Diff line number Diff line change
Expand Up @@ -4688,6 +4688,83 @@ class BlockDecl : public Decl, public DeclContext {
}
};

/// Represents a partial function definition.
///
/// An outlined function declaration contains the parameters and body of
/// a function independent of other function definition concerns such
/// as function name, type, and calling convention. Such declarations may
/// be used to hold a parameterized and transformed sequence of statements
/// used to generate a target dependent function definition without losing
/// association with the original statements. See SYCLKernelCallStmt as an
/// example.
class OutlinedFunctionDecl final
: public Decl,
public DeclContext,
private llvm::TrailingObjects<OutlinedFunctionDecl, ImplicitParamDecl *> {
private:
/// The number of parameters to the outlined function.
unsigned NumParams;

/// The body of the outlined function.
llvm::PointerIntPair<Stmt *, 1, bool> BodyAndNothrow;

explicit OutlinedFunctionDecl(DeclContext *DC, unsigned NumParams);

ImplicitParamDecl *const *getParams() const {
return getTrailingObjects<ImplicitParamDecl *>();
}

ImplicitParamDecl **getParams() {
return getTrailingObjects<ImplicitParamDecl *>();
}

public:
friend class ASTDeclReader;
friend class ASTDeclWriter;
friend TrailingObjects;

static OutlinedFunctionDecl *Create(ASTContext &C, DeclContext *DC,
unsigned NumParams);
static OutlinedFunctionDecl *
CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NumParams);

Stmt *getBody() const override;
void setBody(Stmt *B);

bool isNothrow() const;
void setNothrow(bool Nothrow = true);

unsigned getNumParams() const { return NumParams; }

ImplicitParamDecl *getParam(unsigned i) const {
assert(i < NumParams);
return getParams()[i];
}
void setParam(unsigned i, ImplicitParamDecl *P) {
assert(i < NumParams);
getParams()[i] = P;
}

// Range interface to parameters.
using parameter_const_iterator = const ImplicitParamDecl *const *;
using parameter_const_range = llvm::iterator_range<parameter_const_iterator>;
parameter_const_range parameters() const {
return {param_begin(), param_end()};
}
parameter_const_iterator param_begin() const { return getParams(); }
parameter_const_iterator param_end() const { return getParams() + NumParams; }

// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
static bool classofKind(Kind K) { return K == OutlinedFunction; }
static DeclContext *castToDeclContext(const OutlinedFunctionDecl *D) {
return static_cast<DeclContext *>(const_cast<OutlinedFunctionDecl *>(D));
}
static OutlinedFunctionDecl *castFromDeclContext(const DeclContext *DC) {
return static_cast<OutlinedFunctionDecl *>(const_cast<DeclContext *>(DC));
}
};

/// Represents the body of a CapturedStmt, and serves as its DeclContext.
class CapturedDecl final
: public Decl,
Expand Down
14 changes: 14 additions & 0 deletions clang/include/clang/AST/RecursiveASTVisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#include "clang/AST/StmtObjC.h"
#include "clang/AST/StmtOpenACC.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/AST/StmtSYCL.h"
#include "clang/AST/TemplateBase.h"
#include "clang/AST/TemplateName.h"
#include "clang/AST/Type.h"
Expand Down Expand Up @@ -1581,6 +1582,11 @@ DEF_TRAVERSE_DECL(BlockDecl, {
ShouldVisitChildren = false;
})

DEF_TRAVERSE_DECL(OutlinedFunctionDecl, {
TRY_TO(TraverseStmt(D->getBody()));
ShouldVisitChildren = false;
})

DEF_TRAVERSE_DECL(CapturedDecl, {
TRY_TO(TraverseStmt(D->getBody()));
ShouldVisitChildren = false;
Expand Down Expand Up @@ -2904,6 +2910,14 @@ DEF_TRAVERSE_STMT(SEHFinallyStmt, {})
DEF_TRAVERSE_STMT(SEHLeaveStmt, {})
DEF_TRAVERSE_STMT(CapturedStmt, { TRY_TO(TraverseDecl(S->getCapturedDecl())); })

DEF_TRAVERSE_STMT(SYCLKernelCallStmt, {
if (getDerived().shouldVisitImplicitCode()) {
TRY_TO(TraverseStmt(S->getOriginalStmt()));
TRY_TO(TraverseDecl(S->getOutlinedFunctionDecl()));
ShouldVisitChildren = false;
}
})

DEF_TRAVERSE_STMT(CXXOperatorCallExpr, {})
DEF_TRAVERSE_STMT(CXXRewrittenBinaryOperator, {
if (!getDerived().shouldVisitImplicitCode()) {
Expand Down
Loading