<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/CodeGen/CallingConvLower.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>[llvm] Use llvm::equal (NFC) (#169173)</title>
<updated>2025-11-22T23:30:43+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-11-22T23:30:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b296386d2ca8595c23bc2f90eef902f3c485b1a0'/>
<id>b296386d2ca8595c23bc2f90eef902f3c485b1a0</id>
<content type='text'>
While I am at it, this patch uses const l-value references for
std::shared_ptr.  We don't need to increment the reference count by
passing std::shared_ptr by value.

Identified with llvm-use-ranges.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While I am at it, this patch uses const l-value references for
std::shared_ptr.  We don't need to increment the reference count by
passing std::shared_ptr by value.

Identified with llvm-use-ranges.</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Provide original IR type to CC lowering (NFC) (#152709)</title>
<updated>2025-08-11T06:57:53+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2025-08-11T06:57:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e92b7e9641949f9d9c2ca8964c31a437272d15af'/>
<id>e92b7e9641949f9d9c2ca8964c31a437272d15af</id>
<content type='text'>
It is common to have ABI requirements for illegal types: For example,
two i64 argument parts that originally came from an fp128 argument may
have a different call ABI than ones that came from a i128 argument.

The current calling convention lowering does not provide access to this
information, so backends come up with various hacks to support it (like
additional pre-analysis cached in CCState, or bypassing the default
logic entirely).

This PR adds the original IR type to InputArg/OutputArg and passes it
down to CCAssignFn. It is not actually used anywhere yet, this just does
the mechanical changes to thread through the new argument.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is common to have ABI requirements for illegal types: For example,
two i64 argument parts that originally came from an fp128 argument may
have a different call ABI than ones that came from a i128 argument.

The current calling convention lowering does not provide access to this
information, so backends come up with various hacks to support it (like
additional pre-analysis cached in CCState, or bypassing the default
logic entirely).

This PR adds the original IR type to InputArg/OutputArg and passes it
down to CCAssignFn. It is not actually used anywhere yet, this just does
the mechanical changes to thread through the new argument.</pre>
</div>
</content>
</entry>
<entry>
<title>[CallingConvLower] Use MCRegister. NFC</title>
<updated>2025-03-03T07:46:18+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-03-03T06:56:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7cee4c7c59fdbb28fb7b502ea39da521b1e634a2'/>
<id>7cee4c7c59fdbb28fb7b502ea39da521b1e634a2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Remove some implict conversions of MCRegister to unsigned by using(). NFC</title>
<updated>2025-01-19T21:18:04+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-01-19T07:36:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b7eee2c3fe953df5f5aa1f543759d9a1e54d5ef7'/>
<id>b7eee2c3fe953df5f5aa1f543759d9a1e54d5ef7</id>
<content type='text'>
Many of these are indexing BitVectors or something where we can't
using MCRegister and need the register number.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Many of these are indexing BitVectors or something where we can't
using MCRegister and need the register number.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[ARM] musttail fixes"</title>
<updated>2024-08-27T10:17:17+00:00</updated>
<author>
<name>Kiran</name>
<email>kiran.sturt@arm.com</email>
</author>
<published>2024-08-27T10:17:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c50d11e6d95a7d6b9bfe126ca35d4831928c3f69'/>
<id>c50d11e6d95a7d6b9bfe126ca35d4831928c3f69</id>
<content type='text'>
committed by accident, see #104795

This reverts commit a2088a24dad31ebe44c93751db17307fdbe1f0e2.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
committed by accident, see #104795

This reverts commit a2088a24dad31ebe44c93751db17307fdbe1f0e2.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Seperate frontend changes, add debug directives, remove redundant stuff from tests"</title>
<updated>2024-08-27T09:46:18+00:00</updated>
<author>
<name>Kiran</name>
<email>kiran.sturt@arm.com</email>
</author>
<published>2024-08-27T09:46:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ad468da03815478ceab7c553e651c1a39a479738'/>
<id>ad468da03815478ceab7c553e651c1a39a479738</id>
<content type='text'>
This reverts commit 1a908c6be3317bbbac73e6a6fc52cabefbdebf7d.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 1a908c6be3317bbbac73e6a6fc52cabefbdebf7d.
</pre>
</div>
</content>
</entry>
<entry>
<title>Seperate frontend changes, add debug directives, remove redundant stuff from tests</title>
<updated>2024-08-27T09:44:06+00:00</updated>
<author>
<name>Kiran</name>
<email>kiran.sturt@arm.com</email>
</author>
<published>2024-08-27T09:43:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1a908c6be3317bbbac73e6a6fc52cabefbdebf7d'/>
<id>1a908c6be3317bbbac73e6a6fc52cabefbdebf7d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] musttail fixes</title>
<updated>2024-08-27T09:44:06+00:00</updated>
<author>
<name>Kiran</name>
<email>kiran.sturt@arm.com</email>
</author>
<published>2024-08-08T12:07:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a2088a24dad31ebe44c93751db17307fdbe1f0e2'/>
<id>a2088a24dad31ebe44c93751db17307fdbe1f0e2</id>
<content type='text'>
Backend:
- Caller and callee arguments no longer have to match, just to take up the same space, as they can be changed before the call
- Allowed tail calls if callee and callee both (or neither) use sret, wheras before it would be dissalowed if either used sret
- Allowed tail calls if byval args are used
- Added debug trace for IsEligibleForTailCallOptimisation

Frontend (clang):
- Do not generate extra alloca if sret is used with musttail, as the space for the sret is allocated already

Change-Id: Ic7f246a7eca43c06874922d642d7dc44bdfc98ec
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Backend:
- Caller and callee arguments no longer have to match, just to take up the same space, as they can be changed before the call
- Allowed tail calls if callee and callee both (or neither) use sret, wheras before it would be dissalowed if either used sret
- Allowed tail calls if byval args are used
- Added debug trace for IsEligibleForTailCallOptimisation

Frontend (clang):
- Do not generate extra alloca if sret is used with musttail, as the space for the sret is allocated already

Change-Id: Ic7f246a7eca43c06874922d642d7dc44bdfc98ec
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Support allocating of arguments by decreasing offsets</title>
<updated>2023-05-17T18:51:52+00:00</updated>
<author>
<name>Sergei Barannikov</name>
<email>barannikov88@gmail.com</email>
</author>
<published>2023-05-01T08:56:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=da42b2846c82063bd1bce78d6a046f78f218eb72'/>
<id>da42b2846c82063bd1bce78d6a046f78f218eb72</id>
<content type='text'>
Previously, `CCState::AllocateStack` always allocated stack space by increasing
offsets. For targets with stack growing up (away from zero) it is more
convenient to allocate arguments by decreasing offsets, so that the first
argument is at the top of the stack. This is important when calling a function
with variable number of arguments: the callee does not know the size of the
stack, but must be able to access "fixed" arguments. For that to work, the
"fixed" arguments should have fixed offsets relative to the stack top, i.e. the
variadic arguments area should be at the stack bottom (at lowest addresses).

The in-tree target with stack growing up is AMDGPU, but it allocates
arguments by increasing addresses. It does not support variadic arguments.

A drive-by change is to promote stack size/offset to 64-bit integer.
This is what MachineFrameInfo expects.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D149575
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, `CCState::AllocateStack` always allocated stack space by increasing
offsets. For targets with stack growing up (away from zero) it is more
convenient to allocate arguments by decreasing offsets, so that the first
argument is at the top of the stack. This is important when calling a function
with variable number of arguments: the callee does not know the size of the
stack, but must be able to access "fixed" arguments. For that to work, the
"fixed" arguments should have fixed offsets relative to the stack top, i.e. the
variadic arguments area should be at the stack bottom (at lowest addresses).

The in-tree target with stack growing up is AMDGPU, but it allocates
arguments by increasing addresses. It does not support variadic arguments.

A drive-by change is to promote stack size/offset to 64-bit integer.
This is what MachineFrameInfo expects.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D149575
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Replace CCState's getNextStackOffset with getStackSize (NFC)</title>
<updated>2023-05-17T18:51:45+00:00</updated>
<author>
<name>Sergei Barannikov</name>
<email>barannikov88@gmail.com</email>
</author>
<published>2023-05-01T02:39:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=01a796744745d8413d0821c734caf2fbe19f2eca'/>
<id>01a796744745d8413d0821c734caf2fbe19f2eca</id>
<content type='text'>
The term "next stack offset" is misleading because the next argument is
not necessarily allocated at this offset due to alignment constrains.
It also does not make much sense when allocating arguments at negative
offsets (introduced in a follow-up patch), because the returned offset
would be past the end of the next argument.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D149566
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The term "next stack offset" is misleading because the next argument is
not necessarily allocated at this offset due to alignment constrains.
It also does not make much sense when allocating arguments at negative
offsets (introduced in a follow-up patch), because the returned offset
would be past the end of the next argument.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D149566
</pre>
</div>
</content>
</entry>
</feed>
