<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/flang/lib/Lower/ConvertCall.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>[flang] Implement !DIR$ IVDEP directive (#133728)</title>
<updated>2025-11-14T13:06:46+00:00</updated>
<author>
<name>Jean-Didier PAILLEUX</name>
<email>jean-didier.pailleux@sipearl.com</email>
</author>
<published>2025-11-14T13:06:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3b83e7fa4ec18991a25d49741418e2b3d325692c'/>
<id>3b83e7fa4ec18991a25d49741418e2b3d325692c</id>
<content type='text'>
This directive tells the compiler to ignore vector dependencies in the
following loop and it must be placed before a `do loop`.

Sometimes the compiler may not have sufficient information to decide
whether a particular loop is vectorizable due to potential dependencies
between iterations and the directive is here to tell to the compiler
that vectorization is safe with `parallelAccesses` metadata.

This directive is also equivalent to `#pragma clang loop assume(safety)`
in C++</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This directive tells the compiler to ignore vector dependencies in the
following loop and it must be placed before a `do loop`.

Sometimes the compiler may not have sufficient information to decide
whether a particular loop is vectorizable due to potential dependencies
between iterations and the directive is here to tell to the compiler
that vectorization is safe with `parallelAccesses` metadata.

This directive is also equivalent to `#pragma clang loop assume(safety)`
in C++</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] Fixed regression in copy-in/copy-out (#161259)</title>
<updated>2025-11-12T19:37:27+00:00</updated>
<author>
<name>Eugene Epshteyn</name>
<email>eepshteyn@nvidia.com</email>
</author>
<published>2025-11-12T19:37:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e7bccc7cebd4342b51e04ff2683a76c9baebfbcf'/>
<id>e7bccc7cebd4342b51e04ff2683a76c9baebfbcf</id>
<content type='text'>
Fixed the polymprphic check for copy-in/copy-out, added regression
tests.

Changed MayNeedCopy() to return std::optional&lt;bool&gt; and renamed it to
ActualArgNeedsCopy(). This function now returns true/false when it's
known that actual arguments needs copy in/out, or std::nullopt to
signify that it's now known, whether copy in/out is needed.

Fixes #159149</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixed the polymprphic check for copy-in/copy-out, added regression
tests.

Changed MayNeedCopy() to return std::optional&lt;bool&gt; and renamed it to
ActualArgNeedsCopy(). This function now returns true/false when it's
known that actual arguments needs copy in/out, or std::nullopt to
signify that it's now known, whether copy in/out is needed.

Fixes #159149</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] Implement !DIR$ [NO]INLINE and FORCEINLINE directives (#134350)</title>
<updated>2025-10-28T07:02:15+00:00</updated>
<author>
<name>Jean-Didier PAILLEUX</name>
<email>jean-didier.pailleux@sipearl.com</email>
</author>
<published>2025-10-28T07:02:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c1779f33bdada6e478e882cc23a647ef9abaad96'/>
<id>c1779f33bdada6e478e882cc23a647ef9abaad96</id>
<content type='text'>
This patch adds the support of these two directives : `!dir$ inline` and
`!dir$ noinline`.
- `!dir$ noinline` tells to the compiler to not perform inlining on
specific function calls by adding the `noinline` metadata on the call.
- `!dir$ inline` tells to the compiler to attempt inlining on specific
function calls by adding the `inlinehint` metadata on the call.
- `!dir$ forceinline` tells to the compiler to always perfom inlining on
specific function calls by adding the `alwaysinline` metadata on the
call.

Currently, these directives can be placed before a `DO LOOP`, call
functions or assignments. Maybe other statements can be added in the
future if needed.

For the `inline` directive the correct name might be `forceinline` but
I'm not sure ?</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds the support of these two directives : `!dir$ inline` and
`!dir$ noinline`.
- `!dir$ noinline` tells to the compiler to not perform inlining on
specific function calls by adding the `noinline` metadata on the call.
- `!dir$ inline` tells to the compiler to attempt inlining on specific
function calls by adding the `inlinehint` metadata on the call.
- `!dir$ forceinline` tells to the compiler to always perfom inlining on
specific function calls by adding the `alwaysinline` metadata on the
call.

Currently, these directives can be placed before a `DO LOOP`, call
functions or assignments. Maybe other statements can be added in the
future if needed.

For the `inline` directive the correct name might be `forceinline` but
I'm not sure ?</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][cuda] Do not add contiguity check with ignore_tkr(c) is present (#160363)</title>
<updated>2025-09-23T19:02:04+00:00</updated>
<author>
<name>Valentin Clement (バレンタイン クレメン)</name>
<email>clementval@gmail.com</email>
</author>
<published>2025-09-23T19:02:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6d0f1e0346d1f88f90492869b17c0dd7cf677172'/>
<id>6d0f1e0346d1f88f90492869b17c0dd7cf677172</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[Flang] Make handling of %VAL consistent with gfortran (#157873)</title>
<updated>2025-09-15T17:16:02+00:00</updated>
<author>
<name>Carlos Seo</name>
<email>carlos.seo@linaro.org</email>
</author>
<published>2025-09-15T17:16:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b154b050de7ad868874d5b717e46ffa38b89efe1'/>
<id>b154b050de7ad868874d5b717e46ffa38b89efe1</id>
<content type='text'>
Prevent fir.convert operation from being generated between logical and pointer types.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prevent fir.convert operation from being generated between logical and pointer types.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][cuda] Make sure stream is a i64 reference (#157957)</title>
<updated>2025-09-11T05:08:46+00:00</updated>
<author>
<name>Valentin Clement (バレンタイン クレメン)</name>
<email>clementval@gmail.com</email>
</author>
<published>2025-09-11T05:08:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7e38793795006df01f77e0ad44fed3a9198e2d2a'/>
<id>7e38793795006df01f77e0ad44fed3a9198e2d2a</id>
<content type='text'>
When the stream is a scalar constant, it is lowered as i32. Stream needs
to be i64 to pass the verifier. Detect and update the stream reference
when it is i32.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the stream is a scalar constant, it is lowered as i32. Stream needs
to be i64 to pass the verifier. Detect and update the stream reference
when it is i32.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] Add hlfir.index op to represent index intrinsic function (#157575)</title>
<updated>2025-09-10T17:05:50+00:00</updated>
<author>
<name>Valery Dmitriev</name>
<email>valeryd@nvidia.com</email>
</author>
<published>2025-09-10T17:05:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1495ceacbf511a0694df90341772d286fbcf2032'/>
<id>1495ceacbf511a0694df90341772d286fbcf2032</id>
<content type='text'>
The change adds a new HLFIR operation. A call to index intrinsic now
becomes lowered into the hlfir.index op and then naive lowering of the
op translates it back to appropriate runtime call. The change set is
aimed to be functionally equivalent to exiting index functionality, but
is much more efficient in a case of presence of the 'kind' intrinsic
parameter.
Also fixed couple of parameter lowering issues which were revealed while
working on the index-related functional parts.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The change adds a new HLFIR operation. A call to index intrinsic now
becomes lowered into the hlfir.index op and then naive lowering of the
op translates it back to appropriate runtime call. The change set is
aimed to be functionally equivalent to exiting index functionality, but
is much more efficient in a case of presence of the 'kind' intrinsic
parameter.
Also fixed couple of parameter lowering issues which were revealed while
working on the index-related functional parts.</pre>
</div>
</content>
</entry>
<entry>
<title>[Flang] Handle %VAL arguments correctly (#157186)</title>
<updated>2025-09-09T13:50:12+00:00</updated>
<author>
<name>Carlos Seo</name>
<email>carlos.seo@linaro.org</email>
</author>
<published>2025-09-09T13:50:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=225f181d75b0783a4a20dc101d87fc62070d0280'/>
<id>225f181d75b0783a4a20dc101d87fc62070d0280</id>
<content type='text'>
Internal procedures expect reference parameters. However, when %VAL is
used, the argument should be passed by value. Forward the loaded address
and skip conversion to avoid a type conversion error.

Fixes #118239</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Internal procedures expect reference parameters. However, when %VAL is
used, the argument should be passed by value. Forward the loaded address
and skip conversion to avoid a type conversion error.

Fixes #118239</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] add missing header include after 156661 (#157431)</title>
<updated>2025-09-08T12:31:47+00:00</updated>
<author>
<name>jeanPerier</name>
<email>jperier@nvidia.com</email>
</author>
<published>2025-09-08T12:31:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e93baad414fd25dbca26b0de2f0cb4e2878eebb9'/>
<id>e93baad414fd25dbca26b0de2f0cb4e2878eebb9</id>
<content type='text'>
There is a missing header dependency in #156661.

https://lab.llvm.org/buildbot/#/builders/207/builds/6634</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is a missing header dependency in #156661.

https://lab.llvm.org/buildbot/#/builders/207/builds/6634</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][lowering] fix vector subscripts in character elemental procedures (#156661)</title>
<updated>2025-09-08T10:07:37+00:00</updated>
<author>
<name>jeanPerier</name>
<email>jperier@nvidia.com</email>
</author>
<published>2025-09-08T10:07:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a103b9b207f67e0afbaf41647a56a4cb716414c6'/>
<id>a103b9b207f67e0afbaf41647a56a4cb716414c6</id>
<content type='text'>
Fixes https://github.com/llvm/llvm-project/issues/145151

Character elemental procedures require evaluating the result
specification expression outside of the elemental loops when the
function result length is not a constant. This is needed so that the
array result storage can be allocated before the evaluation if a storage
is needed.

Because the result specification expression may depend on inquires about
the dummy argument (but not usages of values thanks to F2023 C15121),
some representation of the dummy must be created. Since this is an
elemental call, this requires providing an element, and not the whole
array actual argument (we only care about the properties of such element
it does not matter which element is being used).

The previous code was creating the element with a type cast from the
base array, but this did not work with vector subscripted arrays where
the lowering representation is more complex. This caused a compiler
assert to fire.

Switch the code to only copy the properties that can be inquired from
the actual argument to the mock dummy (length parameters, dynamic type
and presence). A mock one address is used instead of addressing the
actual argument before the loop (one is used instead of NULL so that
presence inquiry will work as expected for OPTIONAL arguments).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes https://github.com/llvm/llvm-project/issues/145151

Character elemental procedures require evaluating the result
specification expression outside of the elemental loops when the
function result length is not a constant. This is needed so that the
array result storage can be allocated before the evaluation if a storage
is needed.

Because the result specification expression may depend on inquires about
the dummy argument (but not usages of values thanks to F2023 C15121),
some representation of the dummy must be created. Since this is an
elemental call, this requires providing an element, and not the whole
array actual argument (we only care about the properties of such element
it does not matter which element is being used).

The previous code was creating the element with a type cast from the
base array, but this did not work with vector subscripted arrays where
the lowering representation is more complex. This caused a compiler
assert to fire.

Switch the code to only copy the properties that can be inquired from
the actual argument to the mock dummy (length parameters, dynamic type
and presence). A mock one address is used instead of addressing the
actual argument before the loop (one is used instead of NULL so that
presence inquiry will work as expected for OPTIONAL arguments).</pre>
</div>
</content>
</entry>
</feed>
