[all-commits] [llvm/llvm-project] 4ddf34: [clang] Define convergence in C++ languages such a...
Sameer Sahasrabuddhe via All-commits
all-commits at lists.llvm.org
Thu Apr 17 23:55:02 PDT 2025
Branch: refs/heads/users/ssahasra/clang-convergence-spec
Home: https://github.com/llvm/llvm-project
Commit: 4ddf344b77cc01282571c643d621af34e6a7d8ad
https://github.com/llvm/llvm-project/commit/4ddf344b77cc01282571c643d621af34e6a7d8ad
Author: Sameer Sahasrabuddhe <sameer.sahasrabuddhe at amd.com>
Date: 2025-04-18 (Fri, 18 Apr 2025)
Changed paths:
A clang/docs/ThreadConvergence.rst
M clang/docs/conf.py
M clang/docs/index.rst
M clang/include/clang/AST/ParentMap.h
A clang/include/clang/Analysis/Analyses/ConvergenceCheck.h
M clang/include/clang/Analysis/CFG.h
M clang/include/clang/Basic/AttrDocs.td
M clang/include/clang/Basic/DiagnosticGroups.td
M clang/include/clang/Basic/DiagnosticSemaKinds.td
M clang/lib/AST/ParentMap.cpp
M clang/lib/Analysis/AnalysisDeclContext.cpp
M clang/lib/Analysis/CMakeLists.txt
A clang/lib/Analysis/ConvergenceCheck.cpp
M clang/lib/Sema/AnalysisBasedWarnings.cpp
A clang/test/SemaHIP/convergence-warnings.hip
Log Message:
-----------
[clang] Define convergence in C++ languages such as HIP, CUDA, OpenCL
The proposed definition closely follows the existing definition of convergence
in LLVM IR, but using C++ terms to describe language constructs.
There is no undefined behaviour. For each situation, convergence is either fully
specified or implementation-defined.
Two important limitations where LLVM IR requires convergence control tokens to
correctly express the convergence specified here:
1. Some combinations of loops, continue and break statements have different
convergence specified for the statements inside that region of code, but
result in the same loops in LLVM IR, thus producing ambiguous convergence in
LLVM IR.
2. When a divergent condition inside a loop contains a convergent call followed
by a break statement, these statements are lexically inside the loop, but in
LLVM IR, they are outside the corresponding CFG loop.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list