Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Jul 19 2023
Jul 18 2023
Jul 17 2023
Jul 13 2023
Add two more test cases
Jul 4 2023
Update to address review comments
Jun 8 2023
@erichkeane Thanks for the comments!
More examples have been identified for the adaptation of IBM XL compiler's -qstatsym option for the hot patch use case, which was mentioned previously. Therefore, this option is extended to cover the following cases.
- Function-local static variables
- Thread-local variables
The test case is updated to add more coverage accordingly.
Since the option is now covering not only the variables with static storage duration, but also those with thread storage duration, the option name is changed to -fkeep-persistent-storage-variables. Any suggestions would be appreciated.
May 26 2023
Update the option text to be more descriptive
May 24 2023
May 18 2023
Refactor as suggested
May 12 2023
This is useful in keeping the static variables in a patchable function (https://clang.llvm.org/docs/AttributeReference.html#patchable-function-entry), so that they can be directly addressed by a hot patch when the optimization to merge them is enabled (https://llvm.org/docs/doxygen/GlobalMerge_8cpp_source.html).
Thanks for the reproducers. This was an issue with epilogue vectorization and I pushed a workaround for now: 3d4eed01338d. I'll work on migrating the code to generate induction resume values based on VPlan ASAP so we can remove the workaround.
May 11 2023
We also see the same error introduced by this patch. A reproducer:
$> opt -passes='loop-vectorize' -epilogue-vectorization-force-VF=4 test.ll
May 9 2023
May 8 2023
Oct 18 2022
I open https://github.com/llvm/llvm-project/issues/58454 for a new failed assertion on SCEV verify in LoopUnrollAndJam, starting with this patch.
Aug 19 2022
Aug 19 2021
Aug 12 2021
Added some minor NFC comments.
Jun 15 2021
When the loop idiom transformation processes a memset instruction in a loop, currently it only handles the memset with a compile-time constant size. The motivation of this work is to relax this limitation, so that a memset with a variable size in a loop may still be processed and promoted to a larger memset if it passes all the eligibility checks. Performance-wise, promoting the memset in a loop to a larger memset reduces the number of calls to memset; hence reducing the overall call overhead.
A similar technique may also apply to the memcpy with a variable size in a loop.
Jan 8 2019
Removed "if (SI)" as comment suggested. Thanks for the review!