<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/FuzzMutate/IRMutator.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>[FuzzMutate] Properly handle intrinsics and avoid illegal code genertion (#145495)</title>
<updated>2025-06-24T16:52:55+00:00</updated>
<author>
<name>Manuel Carrasco</name>
<email>Manuel.Carrasco@amd.com</email>
</author>
<published>2025-06-24T16:52:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7377410ddaf2932643849f918ceaff851917f5b5'/>
<id>7377410ddaf2932643849f918ceaff851917f5b5</id>
<content type='text'>
This PR addresses issues related to the `amdgcn_cs_chain` intrinsic:

1. Ensures the intrinsic's special attribute and calling convention
requirements are not violated by the mutator.
2. Enforces the necessary unreachable statement following this type of
intrinsic, preventing the fuzzer from generating invalid code.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR addresses issues related to the `amdgcn_cs_chain` intrinsic:

1. Ensures the intrinsic's special attribute and calling convention
requirements are not violated by the mutator.
2. Enforces the necessary unreachable statement following this type of
intrinsic, preventing the fuzzer from generating invalid code.</pre>
</div>
</content>
</entry>
<entry>
<title>[FuzzMutate] Use llvm::any_of (NFC) (#143227)</title>
<updated>2025-06-07T05:55:34+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-06-07T05:55:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8829503f7a15ce8e6560000b9d49ec500e48ca76'/>
<id>8829503f7a15ce8e6560000b9d49ec500e48ca76</id>
<content type='text'>
Note that llvm::any_of can accommodate std::begin(Range), not just
Range.begin().</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Note that llvm::any_of can accommodate std::begin(Range), not just
Range.begin().</pre>
</div>
</content>
</entry>
<entry>
<title>[FuzzMutate] Prevent UB caused by parameter ABI attributes (#139737)</title>
<updated>2025-06-05T16:27:55+00:00</updated>
<author>
<name>Manuel Carrasco</name>
<email>Manuel.Carrasco@amd.com</email>
</author>
<published>2025-06-05T16:27:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8a386fef1b331cac24bc10bc34e6999d8c561db5'/>
<id>8a386fef1b331cac24bc10bc34e6999d8c561db5</id>
<content type='text'>
This PR prevents the IRMutator from incorrectly calling functions that
have ABI attributes, otherwise the mutations introduce UB.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR prevents the IRMutator from incorrectly calling functions that
have ABI attributes, otherwise the mutations introduce UB.</pre>
</div>
</content>
</entry>
<entry>
<title>[FuzzMutate] Match the callee's and callsite's calling conventions. (#139100)</title>
<updated>2025-05-12T17:14:59+00:00</updated>
<author>
<name>Manuel Carrasco</name>
<email>Manuel.Carrasco@amd.com</email>
</author>
<published>2025-05-12T17:14:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5e7ad630b09b1c1f7e666f2432ba027a0879981e'/>
<id>5e7ad630b09b1c1f7e666f2432ba027a0879981e</id>
<content type='text'>
The mutator can generate calls with undefined behavior because it is not
matching the calling conventions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The mutator can generate calls with undefined behavior because it is not
matching the calling conventions.</pre>
</div>
</content>
</entry>
<entry>
<title>[FuzzMutate] Prevent the mutator from generating invalid IR caused by non-callable CCs (#139080)</title>
<updated>2025-05-12T17:14:49+00:00</updated>
<author>
<name>Manuel Carrasco</name>
<email>Manuel.Carrasco@amd.com</email>
</author>
<published>2025-05-12T17:14:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f638f86384691052c30eda074e6d199d5a691223'/>
<id>f638f86384691052c30eda074e6d199d5a691223</id>
<content type='text'>
The current implementation can generate invalid IR due to illegal use of
CCs. This matches the behaviour of the IRVerifier.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current implementation can generate invalid IR due to illegal use of
CCs. This matches the behaviour of the IRVerifier.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Construct SmallVector with iterator ranges (NFC) (#136460)</title>
<updated>2025-04-20T02:07:10+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-04-20T02:07:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e9487fed29f386bd67e468b6c7a9c86684a6247d'/>
<id>e9487fed29f386bd67e468b6c7a9c86684a6247d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][DebugInfo] Use iterator moveBefore at many call-sites (#123583)</title>
<updated>2025-01-24T10:53:11+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2025-01-24T10:53:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8e702735090388a3231a863e343f880d0f96fecb'/>
<id>8e702735090388a3231a863e343f880d0f96fecb</id>
<content type='text'>
As part of the "RemoveDIs" project, BasicBlock::iterator now carries a
debug-info bit that's needed when getFirstNonPHI and similar feed into
instruction insertion positions. Call-sites where that's necessary were
updated a year ago; but to ensure some type safety however, we'd like to
have all calls to moveBefore use iterators.

This patch adds a (guaranteed dereferenceable) iterator-taking
moveBefore, and changes a bunch of call-sites where it's obviously safe
to change to use it by just calling getIterator() on an instruction
pointer. A follow-up patch will contain less-obviously-safe changes.

We'll eventually deprecate and remove the instruction-pointer
insertBefore, but not before adding concise documentation of what
considerations are needed (very few).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As part of the "RemoveDIs" project, BasicBlock::iterator now carries a
debug-info bit that's needed when getFirstNonPHI and similar feed into
instruction insertion positions. Call-sites where that's necessary were
updated a year ago; but to ensure some type safety however, we'd like to
have all calls to moveBefore use iterators.

This patch adds a (guaranteed dereferenceable) iterator-taking
moveBefore, and changes a bunch of call-sites where it's obviously safe
to change to use it by just calling getIterator() on an instruction
pointer. A follow-up patch will contain less-obviously-safe changes.

We'll eventually deprecate and remove the instruction-pointer
insertBefore, but not before adding concise documentation of what
considerations are needed (very few).</pre>
</div>
</content>
</entry>
<entry>
<title>[FuzzMutate] Avoid repeated hash lookups (NFC) (#109903)</title>
<updated>2024-09-25T08:30:03+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2024-09-25T08:30:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ba3d174d3f9ec4fb98a837e4e5089094405e1d33'/>
<id>ba3d174d3f9ec4fb98a837e4e5089094405e1d33</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 iterator-insertion in unittests and fuzzer (#102015)</title>
<updated>2024-08-08T14:18:34+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2024-08-08T14:18:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2b1122eaec0d0b335feeac4adfaab2e3e04b7bd9'/>
<id>2b1122eaec0d0b335feeac4adfaab2e3e04b7bd9</id>
<content type='text'>
These are the final few places in LLVM that use instruction pointers to
insert instructions -- use iterators instead, which is needed for
debug-info correctness in the future. Most of this is a gentle
scattering of getIterator calls or not deref-then-addrofing iterators.
libfuzzer does require a storage change to keep built instruction
positions in a container though. The unit-test changes are very
straightforwards.

This leaves us in a position where libfuzzer can't fuzz on either of
debug-info records, however I don't believe that fuzzing of debug-info
is in scope for the library.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are the final few places in LLVM that use instruction pointers to
insert instructions -- use iterators instead, which is needed for
debug-info correctness in the future. Most of this is a gentle
scattering of getIterator calls or not deref-then-addrofing iterators.
libfuzzer does require a storage change to keep built instruction
positions in a container though. The unit-test changes are very
straightforwards.

This leaves us in a position where libfuzzer can't fuzz on either of
debug-info records, however I don't believe that fuzzing of debug-info
is in scope for the library.</pre>
</div>
</content>
</entry>
<entry>
<title>[IR] Don't include PassInstrumentation.h in PassManager.h (NFC) (#96219)</title>
<updated>2024-06-21T06:41:16+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-06-21T06:41:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=36c6632eb43bf67e19c8a6a21981cf66e06389b4'/>
<id>36c6632eb43bf67e19c8a6a21981cf66e06389b4</id>
<content type='text'>
Move PassInstrumentationAnalysis into PassInstrumentation.h and stop
including it in PassManager.h (effectively inverting the direction of
the dependency).

Most places using PassManager are not interested in PassInstrumentation,
and we no longer have any uses of it in PassManager.h itself (only in
PassManagerImpl.h).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move PassInstrumentationAnalysis into PassInstrumentation.h and stop
including it in PassManager.h (effectively inverting the direction of
the dependency).

Most places using PassManager are not interested in PassInstrumentation,
and we no longer have any uses of it in PassManager.h itself (only in
PassManagerImpl.h).</pre>
</div>
</content>
</entry>
</feed>
