Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6 |
|
#
cd3a4c31 |
| 03-May-2024 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor][NFC] update tests (#91011)
|
Revision tags: llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init |
|
#
02a4fcec |
| 02-Jul-2023 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Port AANonNull to the isImpliedByIR interface
AANonNull is now the first AA that is always queried via the new APIs and not created manually. Others will follow shortly to avoid trivial
[Attributor] Port AANonNull to the isImpliedByIR interface
AANonNull is now the first AA that is always queried via the new APIs and not created manually. Others will follow shortly to avoid trivial AAs whenever possible.
This commit introduced some helper logic that will make it simpler to port the next one. It also untangles AADereferenceable and AANonNull such that the former does not keep a handle on the latter. Finally, we stop deducing `nonnull` for `undef`, which was incorrect.
show more ...
|
#
23dafbb1 |
| 19-Jun-2023 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Remove the iteration count verification
It was never really useful to track #iterations, though it helped during the initial development. What we should track, in a follow up, are poten
[Attributor] Remove the iteration count verification
It was never really useful to track #iterations, though it helped during the initial development. What we should track, in a follow up, are potentially #updates. That is also what we should restrict instead of the #iterations.
show more ...
|
Revision tags: llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4 |
|
#
dbbe9b37 |
| 15-May-2023 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Create `AAMustProgress` for the `mustprogress` attribute
Derive the mustprogress attribute based on the willreturn attribute or the fact that all callers are mustprogress.
Differential
[Attributor] Create `AAMustProgress` for the `mustprogress` attribute
Derive the mustprogress attribute based on the willreturn attribute or the fact that all callers are mustprogress.
Differential Revision: https://reviews.llvm.org/D94740
show more ...
|
Revision tags: llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
96c335e2 |
| 11-Jan-2023 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Always ensure the correct AAIsDead object is used
Since the Attributor::isAssumedDead lookups can jump between functions we need to potentially replace a given FnLivenessAA for it to be
[Attributor] Always ensure the correct AAIsDead object is used
Since the Attributor::isAssumedDead lookups can jump between functions we need to potentially replace a given FnLivenessAA for it to be useful.
show more ...
|
#
b84ea7a4 |
| 14-Dec-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Improve use of dominating writes during reasoning
This resolves a recent regression introduced by a bug fix and allows us to use dominating write information (formerly HasBeenWrittenTo
[Attributor] Improve use of dominating writes during reasoning
This resolves a recent regression introduced by a bug fix and allows us to use dominating write information (formerly HasBeenWrittenTo information) to skip potential interfering accesses.
Generally, there are two changes here: 1) If we have dominating writes they form a chain and we can look at the least one to minimize the distance between the write and the (read) access in question. 2) If such a least dominating write exists, we can ignore writes in other functions as long as they cannot be reached from code between this write and the (read) access in question.
We have all the tools available to make such queries and the positive tests show the result. Note that the negative test from the bug fix is still in tree and not affected.
As a side-effect, we can remove the (arbitrary) treshold now on the number of interfering accesses since we do not iterate over dominating ones anymore.
show more ...
|
#
56be9123 |
| 06-Jan-2023 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor][OpenMP][NFC] Cleanup tests via update script
|
#
23333bb6 |
| 13-Dec-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[NFC] Rerun update test checks on Attributor and OpenMP-Opt tests
|
#
f3a25957 |
| 07-Dec-2022 |
Roman Lebedev <lebedev.ri@gmail.com> |
[NFC] Port all Attributor tests to `-passes=` syntax
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5 |
|
#
304f1d59 |
| 02-Nov-2022 |
Nikita Popov <npopov@redhat.com> |
[IR] Switch everything to use memory attribute
This switches everything to use the memory attribute proposed in https://discourse.llvm.org/t/rfc-unify-memory-effect-attributes/65579. The old argmemo
[IR] Switch everything to use memory attribute
This switches everything to use the memory attribute proposed in https://discourse.llvm.org/t/rfc-unify-memory-effect-attributes/65579. The old argmemonly, inaccessiblememonly and inaccessiblemem_or_argmemonly attributes are dropped. The readnone, readonly and writeonly attributes are restricted to parameters only.
The old attributes are auto-upgraded both in bitcode and IR. The bitcode upgrade is a policy requirement that has to be retained indefinitely. The IR upgrade is mainly there so it's not necessary to update all tests using memory attributes in this patch, which is already large enough. We could drop that part after migrating tests, or retain it longer term, to make it easier to import IR from older LLVM versions.
High-level Function/CallBase APIs like doesNotAccessMemory() or setDoesNotAccessMemory() are mapped transparently to the memory attribute. Code that directly manipulates attributes (e.g. via AttributeList) on the other hand needs to switch to working with the memory attribute instead.
Differential Revision: https://reviews.llvm.org/D135780
show more ...
|
Revision tags: llvmorg-15.0.4, llvmorg-15.0.3 |
|
#
874c0327 |
| 07-Oct-2022 |
Nikita Popov <npopov@redhat.com> |
[Attributor] Use ConstantFoldLoadFromConst()
When determining the initial value of the object, use the constant folding API to load a given type at a given offset in the global initializer. This mak
[Attributor] Use ConstantFoldLoadFromConst()
When determining the initial value of the object, use the constant folding API to load a given type at a given offset in the global initializer. This makes it work for cases where the load doesn't directly correspond to an aggregate member.
Differential Revision: https://reviews.llvm.org/D135435
show more ...
|
Revision tags: working, llvmorg-15.0.2, llvmorg-15.0.1 |
|
#
e1873614 |
| 12-Sep-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Teach AAPointerInfo about atomic cmxchg and rmw
The atomic operations behave similar to a store except that we don't know the new value and we read the result first.
|
#
93e51fa4 |
| 12-Sep-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] AAPointerInfo can model non-escaping call uses
If a call base use will not capture a pointer we can approximate the effects. This is important especially for readnone/only uses. Even ma
[Attributor] AAPointerInfo can model non-escaping call uses
If a call base use will not capture a pointer we can approximate the effects. This is important especially for readnone/only uses. Even may-write uses are not too bad with reachability in place. Capturing is the problem as we loose track of update sides.
show more ...
|
Revision tags: llvmorg-15.0.0 |
|
#
477e8e10 |
| 31-Aug-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Teach AAPointerInfo to look into aggregates
If we have a constant aggregate, e.g., as an initializer, we usually failed to extract the proper value/type from it. This patch provides the
[Attributor] Teach AAPointerInfo to look into aggregates
If we have a constant aggregate, e.g., as an initializer, we usually failed to extract the proper value/type from it. This patch provides the size and offset information necessary to extract the right part of the constant.
show more ...
|
#
844f6c5d |
| 12-Sep-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] AAPointerInfo should allow "harmless" uses
If a call base use will not capture a pointer we can approximate the effects. This is important especially for readnone/only uses.
|
#
4ed0a88c |
| 31-Aug-2022 |
Johannes Doerfert <johannes@jdoerfert.de> |
[Attributor] Teach AAPointerInfo to look into aggregates
If we have a constant aggregate, e.g., as an initializer, we usually failed to extract the proper value/type from it. This patch provides the
[Attributor] Teach AAPointerInfo to look into aggregates
If we have a constant aggregate, e.g., as an initializer, we usually failed to extract the proper value/type from it. This patch provides the size and offset information necessary to extract the right part of the constant.
show more ...
|