<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/clang/lib/AST/StmtOpenMP.cpp, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[Clang][OpenMP][LoopTransformations] Implement "#pragma omp fuse" loop transformation directive and "looprange" clause (#139293)</title>
<updated>2025-09-29T05:48:18+00:00</updated>
<author>
<name>Walter J.T.V</name>
<email>81811777+eZWALT@users.noreply.github.com</email>
</author>
<published>2025-09-29T05:48:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cd4c5280c73d42fd41819cc8927d00787ade88e0'/>
<id>cd4c5280c73d42fd41819cc8927d00787ade88e0</id>
<content type='text'>
This change implements the fuse directive, `#pragma omp fuse`, as specified in the OpenMP 6.0, along with the `looprange` clause in clang.

This change also adds minimal stubs so flang keeps compiling (a full implementation in flang of this directive is still pending).

---------

Co-authored-by: Roger Ferrer Ibanez &lt;roger.ferrer@bsc.es&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change implements the fuse directive, `#pragma omp fuse`, as specified in the OpenMP 6.0, along with the `looprange` clause in clang.

This change also adds minimal stubs so flang keeps compiling (a full implementation in flang of this directive is still pending).

---------

Co-authored-by: Roger Ferrer Ibanez &lt;roger.ferrer@bsc.es&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang][OpenMP] Add an additional class to hold data that will be shared between all loop transformations (#155849)</title>
<updated>2025-09-16T09:25:05+00:00</updated>
<author>
<name>Roger Ferrer Ibáñez</name>
<email>rofirrim@gmail.com</email>
</author>
<published>2025-09-16T09:25:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b9f84bce6797d846b065827e8acd5c8b41631e75'/>
<id>b9f84bce6797d846b065827e8acd5c8b41631e75</id>
<content type='text'>
This is preparatory work for the implementation of `#pragma omp fuse` in
https://github.com/llvm/llvm-project/pull/139293

**Note**: this change builds on top of
https://github.com/llvm/llvm-project/pull/155848

This change adds an additional class to hold data that will be shared
between all loop transformations: those that apply to canonical loop
nests (the majority) and those that apply to canonical loop sequences
(`fuse` in OpenMP 6.0).
    
This class is not a statement by itself and its goal is to avoid having
to replicate information between classes.
    
Also simplfiy the way we handle the "generated loops" information as we
currently only need to know if it is zero or non-zero.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is preparatory work for the implementation of `#pragma omp fuse` in
https://github.com/llvm/llvm-project/pull/139293

**Note**: this change builds on top of
https://github.com/llvm/llvm-project/pull/155848

This change adds an additional class to hold data that will be shared
between all loop transformations: those that apply to canonical loop
nests (the majority) and those that apply to canonical loop sequences
(`fuse` in OpenMP 6.0).
    
This class is not a statement by itself and its goal is to avoid having
to replicate information between classes.
    
Also simplfiy the way we handle the "generated loops" information as we
currently only need to know if it is zero or non-zero.</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang][NFC] Rename OMPLoopTransformationDirective to OMPCanonicalLoopNestTransformationDirective (#155848)</title>
<updated>2025-09-08T08:47:01+00:00</updated>
<author>
<name>Roger Ferrer Ibáñez</name>
<email>rofirrim@gmail.com</email>
</author>
<published>2025-09-08T08:47:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0833493603e44d27771de23e9c925d04fb4a0525'/>
<id>0833493603e44d27771de23e9c925d04fb4a0525</id>
<content type='text'>
This is preparatory work for the implementation of `#pragma omp fuse` in
https://github.com/llvm/llvm-project/pull/139293

Not all OpenMP loop transformations makes sense to make them inherit
from `OMPLoopBasedDirective`, in particular in OpenMP 6.0 'fuse' (to be
implemented later) is a transformation of a canonical loop sequence.

This change renames class `OMPLoopTransformationDirective` to
`OMPCanonicalLoopNestTransformationDirective` so we can reclaim that
name in a later change.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is preparatory work for the implementation of `#pragma omp fuse` in
https://github.com/llvm/llvm-project/pull/139293

Not all OpenMP loop transformations makes sense to make them inherit
from `OMPLoopBasedDirective`, in particular in OpenMP 6.0 'fuse' (to be
implemented later) is a transformation of a canonical loop sequence.

This change renames class `OMPLoopTransformationDirective` to
`OMPCanonicalLoopNestTransformationDirective` so we can reclaim that
name in a later change.</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang][OpenMP][LoopTransformations] Fix incorrect number of generated loops for Tile and Reverse directives (#140532)</title>
<updated>2025-06-18T18:52:41+00:00</updated>
<author>
<name>Walter J.T.V</name>
<email>81811777+eZWALT@users.noreply.github.com</email>
</author>
<published>2025-06-18T18:52:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8c3fbaf0ee7322e948403d2234a7230bd6137c98'/>
<id>8c3fbaf0ee7322e948403d2234a7230bd6137c98</id>
<content type='text'>
This patch is closely related to #139293 and addresses an existing issue
in the loop transformation codebase. Specifically, it corrects the
handling of the `NumGeneratedLoops` variable in
`OMPLoopTransformationDirective` AST nodes and its inheritors (such as
OMPUnrollDirective, OMPTileDirective, etc.).

Previously, this variable was inaccurately set for certain
transformations like reverse or tile. While this did not lead to
functional bugs, since the value was only checked to determine whether
it was greater than zero or equal to zero, the inconsistency could
introduce problems when supporting more complex directives in the
future.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch is closely related to #139293 and addresses an existing issue
in the loop transformation codebase. Specifically, it corrects the
handling of the `NumGeneratedLoops` variable in
`OMPLoopTransformationDirective` AST nodes and its inheritors (such as
OMPUnrollDirective, OMPTileDirective, etc.).

Previously, this variable was inaccurately set for certain
transformations like reverse or tile. While this did not lead to
functional bugs, since the value was only checked to determine whether
it was greater than zero or equal to zero, the inconsistency could
introduce problems when supporting more complex directives in the
future.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][Clang] Adopt `TrailingObjects` API to build ArrayRef (#139639)</title>
<updated>2025-05-13T13:04:11+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-05-13T13:04:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4ee6f74e5540d634199a2cbf1602fdf5cff69330'/>
<id>4ee6f74e5540d634199a2cbf1602fdf5cff69330</id>
<content type='text'>
Adopt `getTrailingObjects()` overload that returns an ArrayRef that was
added in https://github.com/llvm/llvm-project/pull/138970.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adopt `getTrailingObjects()` overload that returns an ArrayRef that was
added in https://github.com/llvm/llvm-project/pull/138970.</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang] [OpenMP] Add support for '#pragma omp stripe'. (#126927)</title>
<updated>2025-02-13T12:14:36+00:00</updated>
<author>
<name>Zahira Ammarguellat</name>
<email>zahira.ammarguellat@intel.com</email>
</author>
<published>2025-02-13T12:14:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cf69b4c66898cab9eb0f745f034eaf5b3ffcee0d'/>
<id>cf69b4c66898cab9eb0f745f034eaf5b3ffcee0d</id>
<content type='text'>
This patch was reviewed and approved here:
https://github.com/llvm/llvm-project/pull/119891
However it has been reverted here:
https://github.com/alejandro-alvarez-sonarsource/llvm-project/commit/083df25dc256154cccbc0e127d79fbac4d0583c5
due to a build issue here:
https://lab.llvm.org/buildbot/#/builders/51/builds/10694

This patch is reintroducing the support.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch was reviewed and approved here:
https://github.com/llvm/llvm-project/pull/119891
However it has been reverted here:
https://github.com/alejandro-alvarez-sonarsource/llvm-project/commit/083df25dc256154cccbc0e127d79fbac4d0583c5
due to a build issue here:
https://lab.llvm.org/buildbot/#/builders/51/builds/10694

This patch is reintroducing the support.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[Clang] [OpenMP] Add support for '#pragma omp stripe'. (#119891)"</title>
<updated>2025-02-11T20:39:01+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-02-11T20:39:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=67e1e98811ccb438e951ae59dd3041a2baf84437'/>
<id>67e1e98811ccb438e951ae59dd3041a2baf84437</id>
<content type='text'>
This reverts commit 070f84ebc89b11df616a83a56df9ac56efbab783.

Buildbot failure:
https://lab.llvm.org/buildbot/#/builders/51/builds/10694
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 070f84ebc89b11df616a83a56df9ac56efbab783.

Buildbot failure:
https://lab.llvm.org/buildbot/#/builders/51/builds/10694
</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang] [OpenMP] Add support for '#pragma omp stripe'. (#119891)</title>
<updated>2025-02-11T18:58:21+00:00</updated>
<author>
<name>Zahira Ammarguellat</name>
<email>zahira.ammarguellat@intel.com</email>
</author>
<published>2025-02-11T18:58:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=070f84ebc89b11df616a83a56df9ac56efbab783'/>
<id>070f84ebc89b11df616a83a56df9ac56efbab783</id>
<content type='text'>
Implement basic parsing and semantic support for `#pragma omp stripe`
constuct introduced in
https://www.openmp.org/wp-content/uploads/[OpenMP-API-Specification-6-0.pdf](https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-6-0.pdf),
section 11.7.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implement basic parsing and semantic support for `#pragma omp stripe`
constuct introduced in
https://www.openmp.org/wp-content/uploads/[OpenMP-API-Specification-6-0.pdf](https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-6-0.pdf),
section 11.7.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang] Use {} instead of std::nullopt to initialize empty ArrayRef (#109399)</title>
<updated>2024-10-24T09:23:40+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2024-10-24T09:23:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4dd55c567aaed30c6842812e0798a70fee324c98'/>
<id>4dd55c567aaed30c6842812e0798a70fee324c98</id>
<content type='text'>
Follow up to #109133.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Follow up to #109133.</pre>
</div>
</content>
</entry>
<entry>
<title>[OpenMP] OpenMP 5.1 "assume" directive parsing support (#92731)</title>
<updated>2024-08-05T11:37:07+00:00</updated>
<author>
<name>Julian Brown</name>
<email>julian.brown@amd.com</email>
</author>
<published>2024-08-05T11:37:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a42e515e3a9f3bb4e44389c097b89104d95b9b29'/>
<id>a42e515e3a9f3bb4e44389c097b89104d95b9b29</id>
<content type='text'>
This is a minimal patch to support parsing for "omp assume" directives.
These are meant to be hints to a compiler's optimisers: as such, it is
legitimate (if not very useful) to ignore them. The patch builds on top
of the existing support for "omp assumes" directives (note spelling!).

Unlike the "omp [begin/end] assumes" directives, "omp assume" is
associated with a compound statement, i.e. it can appear within a
function. The "holds" assumption could (theoretically) be mapped onto
the existing builtin "__builtin_assume", though the latter applies to a
single point in the program, and the former to a range (i.e. the whole
of the associated compound statement).

This patch fixes sollve's OpenMP 5.1 "omp assume"-based tests.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a minimal patch to support parsing for "omp assume" directives.
These are meant to be hints to a compiler's optimisers: as such, it is
legitimate (if not very useful) to ignore them. The patch builds on top
of the existing support for "omp assumes" directives (note spelling!).

Unlike the "omp [begin/end] assumes" directives, "omp assume" is
associated with a compound statement, i.e. it can appear within a
function. The "holds" assumption could (theoretically) be mapped onto
the existing builtin "__builtin_assume", though the latter applies to a
single point in the program, and the former to a range (i.e. the whole
of the associated compound statement).

This patch fixes sollve's OpenMP 5.1 "omp assume"-based tests.</pre>
</div>
</content>
</entry>
</feed>
