<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms/IPO/ExpandVariadics.cpp, branch users/nico/python-2</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>[ExpandVariadics] Clean up intrinsic declaration lookup (NFC)</title>
<updated>2025-06-23T13:31:17+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2025-06-23T13:29:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=879a55793a2d9540e9403938e4df6a827028a3ba'/>
<id>879a55793a2d9540e9403938e4df6a827028a3ba</id>
<content type='text'>
The comment was outdated, as getDeclarationIfExists has been
introduced in the meantime.

We also only use this in one place where neither the Tys.empty()
case nor the FT is relevant, so just include the call to
getDeclarationIfExists().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The comment was outdated, as getDeclarationIfExists has been
introduced in the meantime.

We also only use this in one place where neither the Tys.empty()
case nor the FT is relevant, so just include the call to
getDeclarationIfExists().
</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo][RemoveDIs] Delete debug-info-format flag (#143746)</title>
<updated>2025-06-12T10:51:58+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2025-06-12T10:51:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=97ac6483aaead89897d9bda8a12f1f4c11fad621'/>
<id>97ac6483aaead89897d9bda8a12f1f4c11fad621</id>
<content type='text'>
This flag was used to let us incrementally introduce debug records
into LLVM, however everything is now using records. It serves no
purpose now, so delete it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This flag was used to let us incrementally introduce debug records
into LLVM, however everything is now using records. It serves no
purpose now, so delete it.</pre>
</div>
</content>
</entry>
<entry>
<title>[Transforms] Construct SmallVector with iterator ranges (NFC) (#136259)</title>
<updated>2025-04-18T17:27:05+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-04-18T17:27:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b2ba53172e82354e1318ae7e18c637ac2107aeca'/>
<id>b2ba53172e82354e1318ae7e18c637ac2107aeca</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[LLVM] Add `Intrinsic::getDeclarationIfExists` (#112428)</title>
<updated>2024-10-16T14:21:10+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2024-10-16T14:21:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6924fc03260370876f7091ba06cdc350989ac3c5'/>
<id>6924fc03260370876f7091ba06cdc350989ac3c5</id>
<content type='text'>
Add `Intrinsic::getDeclarationIfExists` to lookup an existing
declaration of an intrinsic in a `Module`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `Intrinsic::getDeclarationIfExists` to lookup an existing
declaration of an intrinsic in a `Module`.</pre>
</div>
</content>
</entry>
<entry>
<title>[DataLayout] Change return type of `getStackAlignment` to `MaybeAlign` (#105478)</title>
<updated>2024-08-27T19:59:33+00:00</updated>
<author>
<name>Sergei Barannikov</name>
<email>barannikov88@gmail.com</email>
</author>
<published>2024-08-27T19:59:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4d7a0abae8b40482a44c22257b2e86c6fa89547c'/>
<id>4d7a0abae8b40482a44c22257b2e86c6fa89547c</id>
<content type='text'>
Currently, `getStackAlignment` asserts if the stack alignment wasn't
specified. This makes it inconvenient to use and complicates testing.

This change also makes `exceedsNaturalStackAlignment` method redundant.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, `getStackAlignment` asserts if the stack alignment wasn't
specified. This makes it inconvenient to use and complicates testing.

This change also makes `exceedsNaturalStackAlignment` method redundant.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Construct SmallVector with ArrayRef (NFC) (#102799)</title>
<updated>2024-08-11T15:13:11+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2024-08-11T15:13:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=94e6786b8007b1d9b871cb5750a80973d685580b'/>
<id>94e6786b8007b1d9b871cb5750a80973d685580b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo][RemoveDIs] Use iterators to insert everywhere (#102003)</title>
<updated>2024-08-08T13:25:06+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2024-08-08T13:25:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fd7d7882e7fa5a38d4bfde426120d4663718beb4'/>
<id>fd7d7882e7fa5a38d4bfde426120d4663718beb4</id>
<content type='text'>
These are the final few places in LLVM where we use instruction pointers
to identify the position that we're inserting something. We're trying to
get away from that with a view to deprecating those methods, thus use
iterators in all these places. I believe they're all debug-info safe.

The sketchiest part is the ExtractValueInst copy constructor, where we
cast nullptr to a BasicBlock pointer, so that we take the non-default
insert-into-no-block path for instruction insertion, instead of the
default nullptr-instruction path for UnaryInstruction. Such a hack is
necessary until we get rid of the instruction constructor entirely.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are the final few places in LLVM where we use instruction pointers
to identify the position that we're inserting something. We're trying to
get away from that with a view to deprecating those methods, thus use
iterators in all these places. I believe they're all debug-info safe.

The sketchiest part is the ExtractValueInst copy constructor, where we
cast nullptr to a BasicBlock pointer, so that we take the non-default
insert-into-no-block path for instruction insertion, instead of the
default nullptr-instruction path for UnaryInstruction. Such a hack is
necessary until we get rid of the instruction constructor entirely.</pre>
</div>
</content>
</entry>
<entry>
<title>[NVPTX] Implement variadic functions using IR lowering (#96015)</title>
<updated>2024-07-12T22:09:48+00:00</updated>
<author>
<name>Joseph Huber</name>
<email>huberjn@outlook.com</email>
</author>
<published>2024-07-12T22:09:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=486d00eca6b6ab470e8324b52cdf9f32023c1c9a'/>
<id>486d00eca6b6ab470e8324b52cdf9f32023c1c9a</id>
<content type='text'>
Summary:
This patch implements support for variadic functions for NVPTX targets.
The implementation here mainly follows what was done to implement it for
AMDGPU in https://github.com/llvm/llvm-project/pull/93362.

We change the NVPTX codegen to lower all variadic arguments to functions
by-value. This creates a flattened set of arguments that the IR lowering
pass converts into a struct with the proper alignment.

The behavior of this function was determined by iteratively checking
what the NVCC copmiler generates for its output. See examples like
https://godbolt.org/z/KavfTGY93. I have noted the main methods that
NVIDIA uses to lower variadic functions.

1. All arguments are passed in a pointer to aggregate.
2. The minimum alignment for a plain argument is 4 bytes.
3. Alignment is dictated by the underlying type
4. Structs are flattened and do not have their alignment changed.
5. NVPTX never passes any arguments indirectly, even very large ones.

This patch passes the tests in the `libc` project currently, including
support for `sprintf`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
This patch implements support for variadic functions for NVPTX targets.
The implementation here mainly follows what was done to implement it for
AMDGPU in https://github.com/llvm/llvm-project/pull/93362.

We change the NVPTX codegen to lower all variadic arguments to functions
by-value. This creates a flattened set of arguments that the IR lowering
pass converts into a struct with the proper alignment.

The behavior of this function was determined by iteratively checking
what the NVCC copmiler generates for its output. See examples like
https://godbolt.org/z/KavfTGY93. I have noted the main methods that
NVIDIA uses to lower variadic functions.

1. All arguments are passed in a pointer to aggregate.
2. The minimum alignment for a plain argument is 4 bytes.
3. Alignment is dictated by the underlying type
4. Structs are flattened and do not have their alignment changed.
5. NVPTX never passes any arguments indirectly, even very large ones.

This patch passes the tests in the `libc` project currently, including
support for `sprintf`.</pre>
</div>
</content>
</entry>
<entry>
<title>[Transforms] Fix -Wunused-variable in ExpandVariadics.cpp (NFC)</title>
<updated>2024-06-06T10:41:07+00:00</updated>
<author>
<name>Jie Fu</name>
<email>jiefu@tencent.com</email>
</author>
<published>2024-06-06T10:41:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b3b9f8dd4cad55cf4106570af518c5075c2cdcee'/>
<id>b3b9f8dd4cad55cf4106570af518c5075c2cdcee</id>
<content type='text'>
/llvm-project/llvm/lib/Transforms/IPO/ExpandVariadics.cpp:426:14:
error: unused variable 'OriginalFunctionIsDeclaration' [-Werror,-Wunused-variable]
  const bool OriginalFunctionIsDeclaration = OriginalFunction-&gt;isDeclaration();
             ^
/llvm-project/llvm/lib/Transforms/IPO/ExpandVariadics.cpp:445:13:
error: unused variable 'VariadicWrapperDefine' [-Werror,-Wunused-variable]
  Function *VariadicWrapperDefine =
            ^
2 errors generated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
/llvm-project/llvm/lib/Transforms/IPO/ExpandVariadics.cpp:426:14:
error: unused variable 'OriginalFunctionIsDeclaration' [-Werror,-Wunused-variable]
  const bool OriginalFunctionIsDeclaration = OriginalFunction-&gt;isDeclaration();
             ^
/llvm-project/llvm/lib/Transforms/IPO/ExpandVariadics.cpp:445:13:
error: unused variable 'VariadicWrapperDefine' [-Werror,-Wunused-variable]
  Function *VariadicWrapperDefine =
            ^
2 errors generated.
</pre>
</div>
</content>
</entry>
<entry>
<title>[bazel] Port for 8516f54e6a984a79d1a988ec66a414b5cfbd7ec7</title>
<updated>2024-06-06T10:32:48+00:00</updated>
<author>
<name>Haojian Wu</name>
<email>hokein.wu@gmail.com</email>
</author>
<published>2024-06-06T10:31:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4559d83b24a839e9309378e070c64623f04f1e49'/>
<id>4559d83b24a839e9309378e070c64623f04f1e49</id>
<content type='text'>
Remove some #includes in ExpandVariadics.cpp as it will cause layering
violations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove some #includes in ExpandVariadics.cpp as it will cause layering
violations.
</pre>
</div>
</content>
</entry>
</feed>
