<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/IR/Verifier.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>Add new llvm.dbg.declare_value intrinsic. (#168132)</title>
<updated>2025-11-22T08:49:35+00:00</updated>
<author>
<name>Shubham Sandeep Rastogi</name>
<email>Shubham.Rastogi@sony.com</email>
</author>
<published>2025-11-22T08:49:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=20ebc7ea8209cb8f1ff3916706b6e7d8232c9f3f'/>
<id>20ebc7ea8209cb8f1ff3916706b6e7d8232c9f3f</id>
<content type='text'>
For swift async code, we need to use a debug intrinsic that behaves like
an llvm.dbg.declare but can take any location type rather than just a
pointer or integer.

To solve this, a new debug instrinsic called llvm.dbg.declare_value has
been created, which behaves exactly like an llvm.dbg.declare but can
take non pointer and integer location types.

More information here:
https://discourse.llvm.org/t/rfc-introduce-new-llvm-dbg-coroframe-entry-intrinsic/88269

This is the first patch as part of a stack of patches, with the one
succeeding it being: https://github.com/llvm/llvm-project/pull/168134</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For swift async code, we need to use a debug intrinsic that behaves like
an llvm.dbg.declare but can take any location type rather than just a
pointer or integer.

To solve this, a new debug instrinsic called llvm.dbg.declare_value has
been created, which behaves exactly like an llvm.dbg.declare but can
take non pointer and integer location types.

More information here:
https://discourse.llvm.org/t/rfc-introduce-new-llvm-dbg-coroframe-entry-intrinsic/88269

This is the first patch as part of a stack of patches, with the one
succeeding it being: https://github.com/llvm/llvm-project/pull/168134</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo][IR] Verifier checks for the extraData (#167971)</title>
<updated>2025-11-18T19:33:40+00:00</updated>
<author>
<name>Laxman Sole</name>
<email>lsole@nvidia.com</email>
</author>
<published>2025-11-18T19:33:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=58b8e6e4241ba71c8ffeef4578f1bebb9cec9db9'/>
<id>58b8e6e4241ba71c8ffeef4578f1bebb9cec9db9</id>
<content type='text'>
LLVM IR verifier checks for `extraData` in debug info metadata. 

This is a follow-up PR based on discussions in #165023</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
LLVM IR verifier checks for `extraData` in debug info metadata. 

This is a follow-up PR based on discussions in #165023</pre>
</div>
</content>
</entry>
<entry>
<title>[IR] "modular-format" attribute for functions using format strings (#147429)</title>
<updated>2025-11-11T19:52:56+00:00</updated>
<author>
<name>Daniel Thornburgh</name>
<email>dthorn@google.com</email>
</author>
<published>2025-11-11T19:52:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c9ff2df8c3233dcb1d3e45039569dd1b9235ad52'/>
<id>c9ff2df8c3233dcb1d3e45039569dd1b9235ad52</id>
<content type='text'>
A new InstCombine transform uses this attribute to rewrite calls to a
modular version of the implementation along with llvm.reloc.none
relocations against aspects of the implementation needed by the call.

This change only adds support for the 'float' aspect, but it also builds
the structure needed for others.

See issue #146159</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A new InstCombine transform uses this attribute to rewrite calls to a
modular version of the implementation along with llvm.reloc.none
relocations against aspects of the implementation needed by the call.

This change only adds support for the 'float' aspect, but it also builds
the structure needed for others.

See issue #146159</pre>
</div>
</content>
</entry>
<entry>
<title>Add FramePointerKind::NonLeafNoReserve (#163775)</title>
<updated>2025-11-11T17:25:49+00:00</updated>
<author>
<name>Nabeel Omer</name>
<email>nabeel.omer@sony.com</email>
</author>
<published>2025-11-11T17:25:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7a58b417bc9ba19d05d4c5c2de26b0359827277b'/>
<id>7a58b417bc9ba19d05d4c5c2de26b0359827277b</id>
<content type='text'>
This patch adds a new `FramePointerKind::NonLeafNoReserve` and makes it
the default for `-momit-leaf-frame-pointer`.

It also adds a new commandline option `-m[no-]reserve-frame-pointer-reg`.

This should fix #154379, the main impact of this patch can be found in
`clang/lib/Driver/ToolChains/CommonArgs.cpp`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds a new `FramePointerKind::NonLeafNoReserve` and makes it
the default for `-momit-leaf-frame-pointer`.

It also adds a new commandline option `-m[no-]reserve-frame-pointer-reg`.

This should fix #154379, the main impact of this patch can be found in
`clang/lib/Driver/ToolChains/CommonArgs.cpp`.</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo] Add Verifier check for incorrectly-scoped retainedNodes (#166855)</title>
<updated>2025-11-10T12:13:49+00:00</updated>
<author>
<name>Vladislav Dzhidzhoev</name>
<email>vdzhidzhoev@accesssoftek.com</email>
</author>
<published>2025-11-10T12:13:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e2a2c03eefc0f0d2844065949591acb5bafc69b3'/>
<id>e2a2c03eefc0f0d2844065949591acb5bafc69b3</id>
<content type='text'>
These checks ensure that retained nodes of a DISubprogram belong to the
subprogram.

Tests with incorrect IR are fixed. We should not have variables of one subprogram present in retained nodes of other subprograms.

Also, interface for accessing DISubprogram's retained nodes is slightly
refactored. `DISubprogram::visitRetainedNodes` and
`DISubprogram::forEachRetainedNode` are added to avoid repeating checks
like
```
if (const auto *LV = dyn_cast&lt;DILocalVariable&gt;(N))
  ...
else if (const auto *L = dyn_cast&lt;DILabel&gt;(N))
  ...
else if (const auto *IE = dyn_cast&lt;DIImportedEntity&gt;(N))
  ...
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These checks ensure that retained nodes of a DISubprogram belong to the
subprogram.

Tests with incorrect IR are fixed. We should not have variables of one subprogram present in retained nodes of other subprograms.

Also, interface for accessing DISubprogram's retained nodes is slightly
refactored. `DISubprogram::visitRetainedNodes` and
`DISubprogram::forEachRetainedNode` are added to avoid repeating checks
like
```
if (const auto *LV = dyn_cast&lt;DILocalVariable&gt;(N))
  ...
else if (const auto *L = dyn_cast&lt;DILabel&gt;(N))
  ...
else if (const auto *IE = dyn_cast&lt;DIImportedEntity&gt;(N))
  ...
```</pre>
</div>
</content>
</entry>
<entry>
<title>Add `llvm.vector.partial.reduce.fadd` intrinsic (#159776)</title>
<updated>2025-11-07T15:36:54+00:00</updated>
<author>
<name>Damian Heaton</name>
<email>Damian.Heaton@arm.com</email>
</author>
<published>2025-11-07T15:36:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=70f4b596cf453369ce4111c23e7e93633e5fe4b1'/>
<id>70f4b596cf453369ce4111c23e7e93633e5fe4b1</id>
<content type='text'>
With this intrinsic, and supporting SelectionDAG nodes, we can better
make use of instructions such as AArch64's `FDOT`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With this intrinsic, and supporting SelectionDAG nodes, we can better
make use of instructions such as AArch64's `FDOT`.</pre>
</div>
</content>
</entry>
<entry>
<title>[IR] llvm.reloc.none intrinsic for no-op symbol references (#147427)</title>
<updated>2025-11-06T16:52:46+00:00</updated>
<author>
<name>Daniel Thornburgh</name>
<email>dthorn@google.com</email>
</author>
<published>2025-11-06T16:52:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5f08fb4d72f6cdccc0d605bedae076962a6523d7'/>
<id>5f08fb4d72f6cdccc0d605bedae076962a6523d7</id>
<content type='text'>
This intrinsic emits a BFD_RELOC_NONE relocation at the point of call,
which allows optimizations and languages to explicitly pull in symbols
from static libraries without there being any code or data that has an
effectual relocation against such a symbol.

See issue #146159 for context.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This intrinsic emits a BFD_RELOC_NONE relocation at the point of call,
which allows optimizations and languages to explicitly pull in symbols
from static libraries without there being any code or data that has an
effectual relocation against such a symbol.

See issue #146159 for context.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][LLVM][IR] Cleanup namespace usage in LLVM IR cpp files (#166477)</title>
<updated>2025-11-05T19:06:22+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-11-05T19:06:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=37fff6e17ee29e790f850f6e133d14a73c08a0f8'/>
<id>37fff6e17ee29e790f850f6e133d14a73c08a0f8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>IR/Verifier: Allow vector type in atomic load and store (#148893)</title>
<updated>2025-10-23T05:33:57+00:00</updated>
<author>
<name>jofrn</name>
<email>jofernau@amd.com</email>
</author>
<published>2025-10-23T05:33:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5c666f559ca7c8ea0058b5b80d8b6059dc358fa7'/>
<id>5c666f559ca7c8ea0058b5b80d8b6059dc358fa7</id>
<content type='text'>
Vector types on atomics are assumed to be invalid by the verifier. However,
this type can be valid if it is lowered by codegen.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Vector types on atomics are assumed to be invalid by the verifier. However,
this type can be valid if it is lowered by codegen.</pre>
</div>
</content>
</entry>
<entry>
<title>[IR] Replace alignment argument with attribute on masked intrinsics (#163802)</title>
<updated>2025-10-20T08:50:09+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2025-10-20T08:50:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=573ca36753e9141f25b941ea9a84d0599e3baae7'/>
<id>573ca36753e9141f25b941ea9a84d0599e3baae7</id>
<content type='text'>
The `masked.load`, `masked.store`, `masked.gather` and `masked.scatter`
intrinsics currently accept a separate alignment immarg. Replace this
with an `align` attribute on the pointer / vector of pointers argument.

This is the standard representation for alignment information on
intrinsics, and is already used by all other memory intrinsics. This
means the signatures now match llvm.expandload, llvm.vp.load, etc.
(Things like llvm.memcpy used to have a separate alignment argument as
well, but were already migrated a long time ago.)

It's worth noting that the masked.gather and masked.scatter intrinsics
previously accepted a zero alignment to indicate the ABI type alignment
of the element type. This special case is gone now: If the align
attribute is omitted, the implied alignment is 1, as usual. If ABI
alignment is desired, it needs to be explicitly emitted (which the
IRBuilder API already requires anyway).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `masked.load`, `masked.store`, `masked.gather` and `masked.scatter`
intrinsics currently accept a separate alignment immarg. Replace this
with an `align` attribute on the pointer / vector of pointers argument.

This is the standard representation for alignment information on
intrinsics, and is already used by all other memory intrinsics. This
means the signatures now match llvm.expandload, llvm.vp.load, etc.
(Things like llvm.memcpy used to have a separate alignment argument as
well, but were already migrated a long time ago.)

It's worth noting that the masked.gather and masked.scatter intrinsics
previously accepted a zero alignment to indicate the ABI type alignment
of the element type. This special case is gone now: If the align
attribute is omitted, the implied alignment is 1, as usual. If ABI
alignment is desired, it needs to be explicitly emitted (which the
IRBuilder API already requires anyway).</pre>
</div>
</content>
</entry>
</feed>
