Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
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 ...