Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, 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
# e6a1657f 27-Sep-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add A < B if A is an increasing phi for A != B.

This patch adds additional logic to add additional facts for A != B, if
A is a monotonically increasing induction phi. The motivating

[ConstraintElim] Add A < B if A is an increasing phi for A != B.

This patch adds additional logic to add additional facts for A != B, if
A is a monotonically increasing induction phi. The motivating use case
for this is removing checks when using iterators with hardened libc++,
e.g. https://godbolt.org/z/zhKEP37vG.

The patch pulls in SCEV to detect AddRecs. If possible, the patch adds
the following facts for a AddRec phi PN with StartValue as incoming
value from the loo preheader and B being an upper bound for PN from a
condition in the loop header.

* (ICMP_UGE, PN, StartValue)
* (ICMP_ULT, PN, B) [if (ICMP_ULE, StartValue, B)]

The patch also adds an optional precondition to FactOrCheck (the new
DoesHold field) , which can be used to only add a fact if the
precondition holds at the point the fact is added to the constraint
system.

Depends on D151799.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D152730

show more ...


Revision tags: llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3
# 9851edfc 16-Aug-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add ptr phi tests without inbounds.

Extra test coverage for D152730.


Revision tags: llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init
# cbacab26 30-Jun-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add extra tests and split up test file.

Extra tests for D152730, including more tests where the step GEP doesn't
use the phi and inbounds are missing.

Also split up test file to ma

[ConstraintElim] Add extra tests and split up test file.

Extra tests for D152730, including more tests where the step GEP doesn't
use the phi and inbounds are missing.

Also split up test file to make it easier to verify for Alive2.

show more ...


# c92c9462 29-Jun-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add pointer induction tests with struct types.

Extra tests for D152730.


# 36999318 28-Jun-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add tests with phis and different alloc sizes/end ptrs.

Extra tests for D152730


# 82aeec65 28-Jun-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add additional induction phi tests with end argument.

Extra tests for D152730 with different GEP step sizes and the end pointer
being an argument.


# 72c826cf 27-Jun-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add additional induction phi tests.

Extra tests with different GEP step sizes for D152730.


Revision tags: llvmorg-16.0.6
# 6162f6e9 10-Jun-2023 Florian Hahn <flo@fhahn.com>

[ConstraintElim] Add additional monotonic phi tests.

Add extra test coverage with cases that showed mis-compiles in earlier
versions of an upcoming patch. Also add tests for integer phis