<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/clang/lib/CIR/CodeGen/CIRGenDecl.cpp, branch users/mingmingl-llvm/samplefdo-profile-format</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>[CIR] Add support for copy elision (#157713)</title>
<updated>2025-09-09T20:32:44+00:00</updated>
<author>
<name>Andy Kaylor</name>
<email>akaylor@nvidia.com</email>
</author>
<published>2025-09-09T20:32:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=aa9af2a3ec4c986fc8a7103a2fbbcdc4ccc079e4'/>
<id>aa9af2a3ec4c986fc8a7103a2fbbcdc4ccc079e4</id>
<content type='text'>
This adds basic support for eliding copy constructors. In order to make
this possible, it also adds support for returning structures. This
support does not include setting an NRVO flag when the class whose copy
is being elided has a non-trivial destructor.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds basic support for eliding copy constructors. In order to make
this possible, it also adds support for returning structures. This
support does not include setting an NRVO flag when the class whose copy
is being elided has a non-trivial destructor.</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Add constant attribute to GlobalOp (#154359)</title>
<updated>2025-08-20T10:53:00+00:00</updated>
<author>
<name>Morris Hafner</name>
<email>mmha@users.noreply.github.com</email>
</author>
<published>2025-08-20T10:53:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0989ff5de8daa5b5689f975141e720e0bc8afcad'/>
<id>0989ff5de8daa5b5689f975141e720e0bc8afcad</id>
<content type='text'>
This patch adds the constant attribute to cir.global, the appropriate
lowering to LLVM constant and updates the tests.

---------

Co-authored-by: Andy Kaylor &lt;akaylor@nvidia.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds the constant attribute to cir.global, the appropriate
lowering to LLVM constant and updates the tests.

---------

Co-authored-by: Andy Kaylor &lt;akaylor@nvidia.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[OpenACC] Implement 'firstprivate' clause copy lowering (#154150)</title>
<updated>2025-08-19T13:02:10+00:00</updated>
<author>
<name>Erich Keane</name>
<email>ekeane@nvidia.com</email>
</author>
<published>2025-08-19T13:02:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=dab8c88f1533e6f2b4c788fc1c4a67ceb2e6c1e5'/>
<id>dab8c88f1533e6f2b4c788fc1c4a67ceb2e6c1e5</id>
<content type='text'>
This patch is the last of the 'firstprivate' clause lowering patches. It
takes the already generated 'copy' init from Sema and uses it to
generate the IR for the copy section of the recipe.

However, one thing that this patch had to do, was come up with a way to
hijack the decl registration in CIRGenFunction. Because these decls are
being created in a 'different' place, we need to remove the things we've
added. We could alternatively generate these 'differently', but it seems
worth a little extra effort here to avoid having to re-implement
variable initialization.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch is the last of the 'firstprivate' clause lowering patches. It
takes the already generated 'copy' init from Sema and uses it to
generate the IR for the copy section of the recipe.

However, one thing that this patch had to do, was come up with a way to
hijack the decl registration in CIRGenFunction. Because these decls are
being created in a 'different' place, we need to remove the things we've
added. We could alternatively generate these 'differently', but it seems
worth a little extra effort here to avoid having to re-implement
variable initialization.</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Upstream EHScopeStack memory allocator (#152215)</title>
<updated>2025-08-07T19:42:51+00:00</updated>
<author>
<name>Andy Kaylor</name>
<email>akaylor@nvidia.com</email>
</author>
<published>2025-08-07T19:42:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ca52d9b8bebd9214db8ab71f87a1d5eb6d2ad42e'/>
<id>ca52d9b8bebd9214db8ab71f87a1d5eb6d2ad42e</id>
<content type='text'>
When the cleanup handling code was initially upstreamed, a SmallVector
was used to simplify the handling of the stack of cleanup objects.
However, that mechanism won't scale well enough for the rate at which
cleanup handlers are going to be pushed and popped while compiling a
large program. This change introduces the custom memory allocator which
is used in classic codegen and the CIR incubator.

Thiis does not otherwise change the cleanup handling implementation and
many parts of the infrastructure are still missing.

This is not intended to have any observable effect on the generated CIR,
but it does change the internal implementation significantly, so it's
not exactly an NFC change. The functionality is covered by existing
tests.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the cleanup handling code was initially upstreamed, a SmallVector
was used to simplify the handling of the stack of cleanup objects.
However, that mechanism won't scale well enough for the rate at which
cleanup handlers are going to be pushed and popped while compiling a
large program. This change introduces the custom memory allocator which
is used in classic codegen and the CIR incubator.

Thiis does not otherwise change the cleanup handling implementation and
many parts of the infrastructure are still missing.

This is not intended to have any observable effect on the generated CIR,
but it does change the internal implementation significantly, so it's
not exactly an NFC change. The functionality is covered by existing
tests.</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Use getDefiningOp&lt;OpTy&gt;() instead of dyn_cast&lt;OpTy&gt;(getDefiningOp()) (NFC) (#151217)</title>
<updated>2025-08-02T07:21:05+00:00</updated>
<author>
<name>Henrich Lauko</name>
<email>xlauko@mail.muni.cz</email>
</author>
<published>2025-08-02T07:21:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=44500ae265cb537905e53b02d8c1e6ef7154a3bd'/>
<id>44500ae265cb537905e53b02d8c1e6ef7154a3bd</id>
<content type='text'>
This applies similar changes to llvm/llvm-project#150428</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This applies similar changes to llvm/llvm-project#150428</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Handle expression with cleanups (#151600)</title>
<updated>2025-08-01T18:38:35+00:00</updated>
<author>
<name>Andy Kaylor</name>
<email>akaylor@nvidia.com</email>
</author>
<published>2025-08-01T18:38:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a304e09fe767eb6e15680602cdabf5c405894061'/>
<id>a304e09fe767eb6e15680602cdabf5c405894061</id>
<content type='text'>
This adds code to handle expressions with cleanup, including
materializing a temporary object for the expression.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds code to handle expressions with cleanup, including
materializing a temporary object for the expression.</pre>
</div>
</content>
</entry>
<entry>
<title>[OpenACC][CIR] Implement 'private' clause lowering. (#151360)</title>
<updated>2025-08-01T16:27:15+00:00</updated>
<author>
<name>Erich Keane</name>
<email>ekeane@nvidia.com</email>
</author>
<published>2025-08-01T16:27:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=25c07763f76700fdfe8fa568ae2b1e36bc8a7e84'/>
<id>25c07763f76700fdfe8fa568ae2b1e36bc8a7e84</id>
<content type='text'>
The private clause is the first with 'recipes', so a lot of
infrastructure is included here, including some MLIR dialect changes
that allow simple adding of a privatization. We'll likely get similar
for firstprivate and reduction.

Also, we have quite a bit of infrastructure in clause lowering to make
sure we have most cases we could think of covered.

At the moment, ONLY private is implemented, so all it requires is an
'init' segment (that doesn't call any copy operations), and potentially
a 'destroy' segment. However, actually calling 'init' functions on each
of the elements in them are not properly implemented, and will be in a
followup patch.

This patch implements all of that, and adds tests in a way that will be
useful for firstprivate as well.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The private clause is the first with 'recipes', so a lot of
infrastructure is included here, including some MLIR dialect changes
that allow simple adding of a privatization. We'll likely get similar
for firstprivate and reduction.

Also, we have quite a bit of infrastructure in clause lowering to make
sure we have most cases we could think of covered.

At the moment, ONLY private is implemented, so all it requires is an
'init' segment (that doesn't call any copy operations), and potentially
a 'destroy' segment. However, actually calling 'init' functions on each
of the elements in them are not properly implemented, and will be in a
followup patch.

This patch implements all of that, and adds tests in a way that will be
useful for firstprivate as well.</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Upstream support for function-level variable decompositions (#151073)</title>
<updated>2025-07-31T15:34:41+00:00</updated>
<author>
<name>Morris Hafner</name>
<email>mmha@users.noreply.github.com</email>
</author>
<published>2025-07-31T15:34:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8a5d3631230ab4ce7ede76df2faf8b6494fc876e'/>
<id>8a5d3631230ab4ce7ede76df2faf8b6494fc876e</id>
<content type='text'>
This implements support for structured bindings on a function scope
level. It does not add support for global structured bindings.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This implements support for structured bindings on a function scope
level. It does not add support for global structured bindings.</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Add support for array cleanups (#150499)</title>
<updated>2025-07-29T16:21:15+00:00</updated>
<author>
<name>Andy Kaylor</name>
<email>akaylor@nvidia.com</email>
</author>
<published>2025-07-29T16:21:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=88620aee98dd677bfb94712f957c752bfab2077f'/>
<id>88620aee98dd677bfb94712f957c752bfab2077f</id>
<content type='text'>
This adds support for array cleanups, including the ArrayDtor op.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds support for array cleanups, including the ArrayDtor op.</pre>
</div>
</content>
</entry>
<entry>
<title>[CIR] Add support for normal cleanups (#149948)</title>
<updated>2025-07-24T18:38:42+00:00</updated>
<author>
<name>Andy Kaylor</name>
<email>akaylor@nvidia.com</email>
</author>
<published>2025-07-24T18:38:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=47b5917348332ca5d51eb893abe53e42cabb8b1d'/>
<id>47b5917348332ca5d51eb893abe53e42cabb8b1d</id>
<content type='text'>
This change adds basic handling for normal cleanups. This is a very
minimal implemention. In particular, it uses a naive substitute for the
rich cleanup and EH stack handling that is present in classic codegen
and the CIR incubator. This is intended as a temporary implementation to
allow incremental progress. It is not expected to scale well enough to
be used in a production environment. It will be replaced with the full
EHScopeStack handling when such an implementation is needed.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change adds basic handling for normal cleanups. This is a very
minimal implemention. In particular, it uses a naive substitute for the
rich cleanup and EH stack handling that is present in classic codegen
and the CIR incubator. This is intended as a temporary implementation to
allow incremental progress. It is not expected to scale well enough to
be used in a production environment. It will be replaced with the full
EHScopeStack handling when such an implementation is needed.</pre>
</div>
</content>
</entry>
</feed>
