<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/flang/lib/Semantics/check-omp-loop.cpp, branch users/fmayer/spr/main.ubsan-add-fsanitize-preserve-runtime-flag</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>[flang][OpenMP] Store Block in OpenMPLoopConstruct, add access functions (#168078)</title>
<updated>2025-11-17T14:02:36+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-11-17T14:02:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e70e9ec3b83757761ccbba217a566d77b561ec53'/>
<id>e70e9ec3b83757761ccbba217a566d77b561ec53</id>
<content type='text'>
Instead of storing a variant with specific types, store parser::Block as
the body. Add two access functions to make the traversal of the nest
simpler.

This will allow storing loop-nest sequences in the future.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of storing a variant with specific types, store parser::Block as
the body. Add two access functions to make the traversal of the nest
simpler.

This will allow storing loop-nest sequences in the future.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] Move parse tree tool to Parser/tools.h (#163998)</title>
<updated>2025-10-20T20:20:33+00:00</updated>
<author>
<name>Peter Klausler</name>
<email>pklausler@nvidia.com</email>
</author>
<published>2025-10-20T20:20:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5cd9f0f655ac2ab9da4fbd049fbcba6eb0d793b9'/>
<id>5cd9f0f655ac2ab9da4fbd049fbcba6eb0d793b9</id>
<content type='text'>
Move the parse tree utility function
semantics::getDesignatorNameIfDataRef to Parser/tools.h and rename it to
comply with the local style.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the parse tree utility function
semantics::getDesignatorNameIfDataRef to Parser/tools.h and rename it to
comply with the local style.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP]: Allow orphaned distribute construct (#163546)</title>
<updated>2025-10-20T14:40:22+00:00</updated>
<author>
<name>CHANDRA GHALE</name>
<email>chandra.nitdgp@gmail.com</email>
</author>
<published>2025-10-20T14:40:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6dda3b1848435a62bdb84edb6474e69369ce6e8c'/>
<id>6dda3b1848435a62bdb84edb6474e69369ce6e8c</id>
<content type='text'>
If there is a call inside a TEAMS construct, and that call contains a
DISTRIBUTE construct, the DISTRIBUTE region is considered to be enclosed
by the TEAMS region (based on the dynamic extent of the construct).
Currently, Flang diagnoses this as an error, which is incorrect.
For eg :
```
 subroutine f
  !$omp distribute
  do i = 1, 100
    ...
  end do
end subroutine

subroutine g
  !$omp teams
  call f ! this call is ok, distribute enclosed by teams
  !$omp end teams
end subroutine
```
This patch adjusts the nesting check for the OpenMP DISTRIBUTE
directive. It retains the error for DISTRIBUTE directives that are
incorrectly nested lexically but downgrades it to a warning for orphaned
directives to allow dynamic nesting, such as when a subroutine with
DISTRIBUTE is called from within a TEAMS region.

Co-authored-by: Chandra Ghale &lt;ghale@pe31.hpc.amslabs.hpecorp.net&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If there is a call inside a TEAMS construct, and that call contains a
DISTRIBUTE construct, the DISTRIBUTE region is considered to be enclosed
by the TEAMS region (based on the dynamic extent of the construct).
Currently, Flang diagnoses this as an error, which is incorrect.
For eg :
```
 subroutine f
  !$omp distribute
  do i = 1, 100
    ...
  end do
end subroutine

subroutine g
  !$omp teams
  call f ! this call is ok, distribute enclosed by teams
  !$omp end teams
end subroutine
```
This patch adjusts the nesting check for the OpenMP DISTRIBUTE
directive. It retains the error for DISTRIBUTE directives that are
incorrectly nested lexically but downgrades it to a warning for orphaned
directives to allow dynamic nesting, such as when a subroutine with
DISTRIBUTE is called from within a TEAMS region.

Co-authored-by: Chandra Ghale &lt;ghale@pe31.hpc.amslabs.hpecorp.net&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Reject blank common blocks more gracefully (#159626)</title>
<updated>2025-09-22T14:56:31+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-09-22T14:56:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d89de09cb1e51dd0da77734d787628b3db4cd665'/>
<id>d89de09cb1e51dd0da77734d787628b3db4cd665</id>
<content type='text'>
Parse them as "invalid" OmpObjects, then emit a diagnostic in semantic
checks.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Parse them as "invalid" OmpObjects, then emit a diagnostic in semantic
checks.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Use OmpDirectiveSpecification in Omp[Begin|End]LoopDi… (#159087)</title>
<updated>2025-09-16T16:38:03+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-09-16T16:38:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e75e28ad3c9558c2cca32cd16cd5681b5219ff8d'/>
<id>e75e28ad3c9558c2cca32cd16cd5681b5219ff8d</id>
<content type='text'>
…rective

This makes accessing directive components, such as directive name or the
list of clauses simpler and more uniform across different directives. It
also makes the parser simpler, since it reuses existing parsing
functionality.

The changes are scattered over a number of files, but they all share the
same nature:
- getting the begin/end directive from OpenMPLoopConstruct,
- getting the llvm::omp::Directive enum, and the source location,
- getting the clause list.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
…rective

This makes accessing directive components, such as directive name or the
list of clauses simpler and more uniform across different directives. It
also makes the parser simpler, since it reuses existing parsing
functionality.

The changes are scattered over a number of files, but they all share the
same nature:
- getting the begin/end directive from OpenMPLoopConstruct,
- getting the llvm::omp::Directive enum, and the source location,
- getting the clause list.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Replace OpenMPBlockConstruct with OmpBlockConstruct (#155872)</title>
<updated>2025-08-29T12:37:48+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-08-29T12:37:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=88b71e20488ae0987b7ec7cfa9d49d9358b1f38c'/>
<id>88b71e20488ae0987b7ec7cfa9d49d9358b1f38c</id>
<content type='text'>
OpenMPBlockConstruct, somewhat confusingly, represents most but not all
block-associated constructs. It's derived from OmpBlockConstruct, as are
all the remaining block-associated constructs.

It does not correspond to any well-defined group of constructs. It's the
collection of constructs that don't have their own types (and those that
do have their own types do so for their own reasons).

Using the broader OmpBlockConstruct in type-based visitors won't cause
issues, because the specific overloads (for classes derived from it)
will always be preferred.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
OpenMPBlockConstruct, somewhat confusingly, represents most but not all
block-associated constructs. It's derived from OmpBlockConstruct, as are
all the remaining block-associated constructs.

It does not correspond to any well-defined group of constructs. It's the
collection of constructs that don't have their own types (and those that
do have their own types do so for their own reasons).

Using the broader OmpBlockConstruct in type-based visitors won't cause
issues, because the specific overloads (for classes derived from it)
will always be preferred.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Make OpenMPCriticalConstruct follow block structure (#152007)</title>
<updated>2025-08-07T13:10:25+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-08-07T13:10:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e368b5343d037c89051097c2a87a6fb76548014e'/>
<id>e368b5343d037c89051097c2a87a6fb76548014e</id>
<content type='text'>
This allows not having the END CRITICAL directive in certain situations.
Update semantic checks and symbol resolution.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows not having the END CRITICAL directive in certain situations.
Update semantic checks and symbol resolution.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Make all block constructs share the same structure (#150956)</title>
<updated>2025-08-01T12:52:59+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-08-01T12:52:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6533ad04edcbc02d012cdb181d8745ca0d2f2e75'/>
<id>6533ad04edcbc02d012cdb181d8745ca0d2f2e75</id>
<content type='text'>
The structure is
- OmpBeginDirective (aka OmpDirectiveSpecification)
- Block
- optional&lt;OmpEndDirective&gt; (aka optional&lt;OmpDirectiveSpecification&gt;)

The OmpBeginDirective and OmpEndDirective are effectively different
names for OmpDirectiveSpecification. They exist to allow the semantic
analyses to distinguish between the beginning and the ending of a block
construct without maintaining additional context.

The actual changes are in the parser: parse-tree.h and openmp-parser.cpp
in particular. The rest is simply changing the way the directive/clause
information is accessed (typically for the simpler).

All standalone and block constructs now use OmpDirectiveSpecification to
store the directive/clause information.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The structure is
- OmpBeginDirective (aka OmpDirectiveSpecification)
- Block
- optional&lt;OmpEndDirective&gt; (aka optional&lt;OmpDirectiveSpecification&gt;)

The OmpBeginDirective and OmpEndDirective are effectively different
names for OmpDirectiveSpecification. They exist to allow the semantic
analyses to distinguish between the beginning and the ending of a block
construct without maintaining additional context.

The actual changes are in the parser: parse-tree.h and openmp-parser.cpp
in particular. The rest is simply changing the way the directive/clause
information is accessed (typically for the simpler).

All standalone and block constructs now use OmpDirectiveSpecification to
store the directive/clause information.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Split check-omp-structure.cpp into smaller files, NFC (#146359)</title>
<updated>2025-07-01T16:12:00+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-07-01T16:12:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ba116a8bed9ae093575bd316bf8847bb016177dd'/>
<id>ba116a8bed9ae093575bd316bf8847bb016177dd</id>
<content type='text'>
Create these new files in flang/lib/Semantics:
  openmp-utils.cpp/.h         - Common utilities
  check-omp-atomic.cpp        - Atomic-related checks
  check-omp-loop.cpp          - Loop constructs/clauses
  check-omp-metadirective.cpp - Metadirective-related checks

Update lists of included headers, std in particular.

---------

Co-authored-by: Jack Styles &lt;jack.styles@arm.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Create these new files in flang/lib/Semantics:
  openmp-utils.cpp/.h         - Common utilities
  check-omp-atomic.cpp        - Atomic-related checks
  check-omp-loop.cpp          - Loop constructs/clauses
  check-omp-metadirective.cpp - Metadirective-related checks

Update lists of included headers, std in particular.

---------

Co-authored-by: Jack Styles &lt;jack.styles@arm.com&gt;</pre>
</div>
</content>
</entry>
</feed>
