<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/flang/lib/Frontend/CompilerInvocation.cpp, branch users/joker-eph-python-bindings-maintainers</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] Add -f[no]-openmp-simd (#150269)</title>
<updated>2025-08-14T13:20:15+00:00</updated>
<author>
<name>Kajetan Puchalski</name>
<email>kajetan.puchalski@arm.com</email>
</author>
<published>2025-08-14T13:20:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d3d96e20573771c9b0f54a07c1557c448b1d9ae1'/>
<id>d3d96e20573771c9b0f54a07c1557c448b1d9ae1</id>
<content type='text'>
Both clang and gfortran support the -fopenmp-simd flag, which enables
OpenMP support only for simd constructs, while disabling the rest of
OpenMP.

Implement the appropriate parse tree rewriting to remove non-SIMD OpenMP
constructs at the parsing stage.

Add a new SimdOnly flang OpenMP IR pass which rewrites generated OpenMP
FIR to handle untangling composite simd constructs, and clean up OpenMP
operations leftover after the parse tree rewriting stage.
With this approach, the two parts of the logic required to make the flag
work can be self-contained within the parse tree rewriter and the MLIR
pass, respectively. It does not need to be implemented within the core
lowering logic itself.

The flag is expected to have no effect if -fopenmp is passed explicitly,
and is only expected to remove OpenMP constructs, not things like OpenMP
library functions calls. This matches the behaviour of other compilers.

---------

Signed-off-by: Kajetan Puchalski &lt;kajetan.puchalski@arm.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Both clang and gfortran support the -fopenmp-simd flag, which enables
OpenMP support only for simd constructs, while disabling the rest of
OpenMP.

Implement the appropriate parse tree rewriting to remove non-SIMD OpenMP
constructs at the parsing stage.

Add a new SimdOnly flang OpenMP IR pass which rewrites generated OpenMP
FIR to handle untangling composite simd constructs, and clean up OpenMP
operations leftover after the parse tree rewriting stage.
With this approach, the two parts of the logic required to make the flag
work can be self-contained within the parse tree rewriter and the MLIR
pass, respectively. It does not need to be implemented within the core
lowering logic itself.

The flag is expected to have no effect if -fopenmp is passed explicitly,
and is only expected to remove OpenMP constructs, not things like OpenMP
library functions calls. This matches the behaviour of other compilers.

---------

Signed-off-by: Kajetan Puchalski &lt;kajetan.puchalski@arm.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][MLIR][OpenMP][llvm]Atomic Control Support (#150860)</title>
<updated>2025-07-28T12:46:10+00:00</updated>
<author>
<name>Anchu Rajendran S</name>
<email>asudhaku@amd.com</email>
</author>
<published>2025-07-28T12:46:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9d642b0ec806d13002e2f0b50091ca9656b238e5'/>
<id>9d642b0ec806d13002e2f0b50091ca9656b238e5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[flang][flang-driver][mlir][OpenMP] atomic control support" (#150504)</title>
<updated>2025-07-24T20:54:26+00:00</updated>
<author>
<name>Kiran Chandramohan</name>
<email>kiran.chandramohan@arm.com</email>
</author>
<published>2025-07-24T20:54:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=efe1aa8904ea3ad8b19ab2aa5660e27a08c7d694'/>
<id>efe1aa8904ea3ad8b19ab2aa5660e27a08c7d694</id>
<content type='text'>
Reverts llvm/llvm-project#143441

Reverting due to CI failure
https://lab.llvm.org/buildbot/#/builders/53/builds/18055.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#143441

Reverting due to CI failure
https://lab.llvm.org/buildbot/#/builders/53/builds/18055.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][flang-driver][mlir][OpenMP] atomic control support (#143441)</title>
<updated>2025-07-24T16:49:38+00:00</updated>
<author>
<name>Anchu Rajendran S</name>
<email>asudhaku@amd.com</email>
</author>
<published>2025-07-24T16:49:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f44346dc1f6252716cfc62bb0687e3932a93089f'/>
<id>f44346dc1f6252716cfc62bb0687e3932a93089f</id>
<content type='text'>
Atomic Control Options are used to specify architectural characteristics
to help lowering of atomic operations. The options used are:
`-f[no-]atomic-remote-memory`, `-f[no-]atomic-fine-grained-memory`,
 `-f[no-]atomic-ignore-denormal-mode`.
Legacy option `-m[no-]unsafe-fp-atomics` is aliased to
`-f[no-]ignore-denormal-mode`.
More details can be found in
https://github.com/llvm/llvm-project/pull/102569. This PR implements the
frontend support for these options with OpenMP atomic in flang.

Backend changes are available in the draft PR:
https://github.com/llvm/llvm-project/pull/143769 which will be raised
after this merged.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Atomic Control Options are used to specify architectural characteristics
to help lowering of atomic operations. The options used are:
`-f[no-]atomic-remote-memory`, `-f[no-]atomic-fine-grained-memory`,
 `-f[no-]atomic-ignore-denormal-mode`.
Legacy option `-m[no-]unsafe-fp-atomics` is aliased to
`-f[no-]ignore-denormal-mode`.
More details can be found in
https://github.com/llvm/llvm-project/pull/102569. This PR implements the
frontend support for these options with OpenMP atomic in flang.

Backend changes are available in the draft PR:
https://github.com/llvm/llvm-project/pull/143769 which will be raised
after this merged.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][driver] add -Wfatal-errors (#147614)</title>
<updated>2025-07-09T19:35:43+00:00</updated>
<author>
<name>Andre Kuhlenschmidt</name>
<email>andre.kuhlenschmidt@gmail.com</email>
</author>
<published>2025-07-09T19:35:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fc9dd587347ee2708ac1eff2716d3edd6b08a873'/>
<id>fc9dd587347ee2708ac1eff2716d3edd6b08a873</id>
<content type='text'>
Adds the flag `-Wfatal-errors` which truncates the error messages at 1 error.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds the flag `-Wfatal-errors` which truncates the error messages at 1 error.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] Add -fcomplex-arithmetic= option and select complex division algorithm (#146641)</title>
<updated>2025-07-09T04:43:54+00:00</updated>
<author>
<name>Shunsuke Watanabe</name>
<email>watanabe.shu-06@fujitsu.com</email>
</author>
<published>2025-07-09T04:43:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c9900015a9a0bc2ccadae5e24b63ddbfe4d508fd'/>
<id>c9900015a9a0bc2ccadae5e24b63ddbfe4d508fd</id>
<content type='text'>
This patch adds an option to select the method for computing complex
number division. It uses `LoweringOptions` to determine whether to lower
complex division to a runtime function call or to MLIR's `complex.div`,
and `CodeGenOptions` to select the computation algorithm for
`complex.div`. The available option values and their corresponding
algorithms are as follows:
- `full`: Lower to a runtime function call. (Default behavior)
- `improved`: Lower to `complex.div` and expand to Smith's algorithm.
- `basic`: Lower to `complex.div` and expand to the algebraic algorithm.

See also the discussion in the following discourse post:
https://discourse.llvm.org/t/optimization-of-complex-number-division/83468

---------

Co-authored-by: Tarun Prabhu &lt;tarunprabhu@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds an option to select the method for computing complex
number division. It uses `LoweringOptions` to determine whether to lower
complex division to a runtime function call or to MLIR's `complex.div`,
and `CodeGenOptions` to select the computation algorithm for
`complex.div`. The available option values and their corresponding
algorithms are as follows:
- `full`: Lower to a runtime function call. (Default behavior)
- `improved`: Lower to `complex.div` and expand to Smith's algorithm.
- `basic`: Lower to `complex.div` and expand to the algebraic algorithm.

See also the discussion in the following discourse post:
https://discourse.llvm.org/t/optimization-of-complex-number-division/83468

---------

Co-authored-by: Tarun Prabhu &lt;tarunprabhu@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] Correctly handle -mframe-pointer=reserved (#146937)</title>
<updated>2025-07-07T16:15:47+00:00</updated>
<author>
<name>Daniel Paoliello</name>
<email>danpao@microsoft.com</email>
</author>
<published>2025-07-07T16:15:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=71ffa2a4d3c220c97fbffa6078a446cc17bbaada'/>
<id>71ffa2a4d3c220c97fbffa6078a446cc17bbaada</id>
<content type='text'>
Fixes `#146802`

#146582 started using the `Reserved` Frame Pointer kind for Arm64
Windows, but this revealed a bug in Flang where it copied the
`-mframe-pointer=reserved` flag from Clang, but didn't correctly handle
it in its own command line parser and subsequent compilation pipeline.

This change adds support for `-mframe-pointer=reserved` and adds a test
to make sure that functions are correctly marked when the flag is set.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes `#146802`

#146582 started using the `Reserved` Frame Pointer kind for Arm64
Windows, but this revealed a bug in Flang where it copied the
`-mframe-pointer=reserved` flag from Clang, but didn't correctly handle
it in its own command line parser and subsequent compilation pipeline.

This change adds support for `-mframe-pointer=reserved` and adds a test
to make sure that functions are correctly marked when the flag is set.</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang] Introduce `--offload-targets` for `-fopenmp-targets` (#146594)</title>
<updated>2025-07-04T21:20:53+00:00</updated>
<author>
<name>Joseph Huber</name>
<email>huberjn@outlook.com</email>
</author>
<published>2025-07-04T21:20:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6db02dc4311b3ee52ec6e7e5e5cafb2600e7b30f'/>
<id>6db02dc4311b3ee52ec6e7e5e5cafb2600e7b30f</id>
<content type='text'>
Summary:
This patch is mostly an NFC that renames the existing `-fopenmp-targets`
into `--offload-targets`. Doing this early to simplify a follow-up patch
that will hopefully allow this syntax to be used more generically over
the existing `--offload` syntax (which I think is mostly unmaintained
now.). Following in the well-trodden path of trying to pull language
specific offload options into generic ones, but right now this is still
just OpenMP specific.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
This patch is mostly an NFC that renames the existing `-fopenmp-targets`
into `--offload-targets`. Doing this early to simplify a follow-up patch
that will hopefully allow this syntax to be used more generically over
the existing `--offload` syntax (which I think is mostly unmaintained
now.). Following in the well-trodden path of trying to pull language
specific offload options into generic ones, but right now this is still
just OpenMP specific.</pre>
</div>
</content>
</entry>
<entry>
<title>[flang] add option to generate runtime type info as external (#146071)</title>
<updated>2025-06-30T07:58:00+00:00</updated>
<author>
<name>jeanPerier</name>
<email>jperier@nvidia.com</email>
</author>
<published>2025-06-30T07:58:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=faefe7cf7daf585a781af151726d31981cee9e4f'/>
<id>faefe7cf7daf585a781af151726d31981cee9e4f</id>
<content type='text'>
Reland #145901 with a fix for shared library builds.

So far flang generates runtime derived type info global definitions (as
opposed to declarations) for all the types used in the current
compilation unit even when the derived types are defined in other
compilation units. It is using linkonce_odr to achieve derived type
descriptor address "uniqueness" aspect needed to match two derived type
inside the runtime.

This comes at a big compile time cost because of all the extra globals
and their definitions in apps with many and complex derived types.

This patch adds and experimental option to only generate the rtti
definition for the types defined in the current compilation unit and to
only generate external declaration for the derived type descriptor
object of types defined elsewhere.

Note that objects compiled with this option are not compatible with
object files compiled without because files compiled without it may drop
the rtti for type they defined if it is not used in the compilation unit
because of the linkonce_odr aspect.

I am adding the option so that we can better measure the extra cost of
the current approach on apps and allow speeding up some compilation
where devirtualization does not matter (and the build config links to
all module file object anyway).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reland #145901 with a fix for shared library builds.

So far flang generates runtime derived type info global definitions (as
opposed to declarations) for all the types used in the current
compilation unit even when the derived types are defined in other
compilation units. It is using linkonce_odr to achieve derived type
descriptor address "uniqueness" aspect needed to match two derived type
inside the runtime.

This comes at a big compile time cost because of all the extra globals
and their definitions in apps with many and complex derived types.

This patch adds and experimental option to only generate the rtti
definition for the types defined in the current compilation unit and to
only generate external declaration for the derived type descriptor
object of types defined elsewhere.

Note that objects compiled with this option are not compatible with
object files compiled without because files compiled without it may drop
the rtti for type they defined if it is not used in the compilation unit
because of the linkonce_odr aspect.

I am adding the option so that we can better measure the extra cost of
the current approach on apps and allow speeding up some compilation
where devirtualization does not matter (and the build config links to
all module file object anyway).</pre>
</div>
</content>
</entry>
<entry>
<title>[flang][OpenMP] Remove experimental warning (#144915)</title>
<updated>2025-06-26T13:09:21+00:00</updated>
<author>
<name>Tom Eccles</name>
<email>tom.eccles@arm.com</email>
</author>
<published>2025-06-26T13:09:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cc1eae6ea2de5ccadb81a182b9f0de2128b9fefc'/>
<id>cc1eae6ea2de5ccadb81a182b9f0de2128b9fefc</id>
<content type='text'>
RFC:
https://discourse.llvm.org/t/rfc-removing-the-openmp-experimental-warning-for-llvm-21/86455

Fixes: #110008</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RFC:
https://discourse.llvm.org/t/rfc-removing-the-openmp-experimental-warning-for-llvm-21/86455

Fixes: #110008</pre>
</div>
</content>
</entry>
</feed>
