|
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, 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, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4 |
|
| #
f5dbbf49 |
| 15-May-2023 |
khei4 <kk.asano.luxy@gmail.com> |
[ConstantFold] use StoreSize for VectorType folding Differential Revision: https://reviews.llvm.org/D150515 Reviewed By: nikic
|
|
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 |
|
| #
a4753f5d |
| 19-Jan-2023 |
Jannik Silvanus <jannik.silvanus@amd.com> |
[IR] Avoid creation of GEPs into vectors (in one place)
The method DataLayout::getGEPIndexForOffset(Type *&ElemTy, APInt &Offset) allows to generate GEP indices for a given byte-based offset. This a
[IR] Avoid creation of GEPs into vectors (in one place)
The method DataLayout::getGEPIndexForOffset(Type *&ElemTy, APInt &Offset) allows to generate GEP indices for a given byte-based offset. This allows to generate "natural" GEPs using the given type structure if the byte offset happens to match a nested element object.
With opaque pointers and a general move towards byte-based GEPs [1], this function may be questionable in the future.
This patch avoids creation of GEPs into vectors in routines that use DataLayout::getGEPIndexForOffset by not returning indices in that case.
The reason is that A) GEPs into vectors have been discouraged for a long time [2], and B) that GEPs into vectors are currently broken if the element type is overaligned [1]. This is also demonstrated by a lit test where previously InstCombine replaced valid loads by poison. Note that the result of InstCombine on that test is *still* invalid, because padding bytes are assumed. Moreover, GEPs into vectors may be outright forbidden in the future [1].
[1]: https://discourse.llvm.org/t/67497 [2]: https://llvm.org/docs/GetElementPtr.html
The test case is new. It will be precommitted if this patch is accepted.
Differential Revision: https://reviews.llvm.org/D142146
show more ...
|
| #
eb197e3e |
| 19-Jan-2023 |
Jannik Silvanus <jannik.silvanus@amd.com> |
[Transforms] Add lit test for instcombine on load into vector of overaligned elements.
The result is currently broken in two ways:
- Valid loads are replaced by poison - An array-like layout with
[Transforms] Add lit test for instcombine on load into vector of overaligned elements.
The result is currently broken in two ways:
- Valid loads are replaced by poison - An array-like layout with padding bytes is assumed
This commit serves as precommit for a patch that addresses the first issue. The second issue will remain a TODO.
Contributors: Sebastian Neubauer <sebastian.neubauer@amd.com>
show more ...
|