mirror-llvm-project/polly
Ryotaro Kasuga 4538987e5e
[Polly] Cast delinearization terms to matching types (#206711)
#204146 revealed that Polly can call `SCEVDivision::divide` with a
numerator and denominator of different types. I believe such divisions
are not meaningful and should be avoided. As far as I can tell, the root
cause is that `SCEVRemoveMax::rewrite` may collect terms whose types
differ from that of the original expression.

Before this patch, the terms gathered by `SCEVRemoveMax::rewrite` were
used for delinearization as they are. This patch applies
`getTruncateOrSignExtend` to them to matching their types with that of
the original expression.
2026-07-13 15:33:08 +00:00
..
ci [Polly] Forward VFS from PassBuilder for IO sandboxing (#188657) 2026-03-28 23:55:05 +01:00
cmake
docs [docs] Create utils/docs (#203962) 2026-06-24 15:12:48 -04:00
include/polly [Polly] Remove unused DenseMapInfo::getEmptyKey (#201992) 2026-06-06 11:18:12 -07:00
lib [Polly] Cast delinearization terms to matching types (#206711) 2026-07-13 15:33:08 +00:00
test [Polly] Fix infinite recursion in ScopExpander::visitAddRecExpr (#206063) 2026-07-13 16:10:53 +05:30
unittests [Polly] Disable PCH reuse for unit tests (#193209) 2026-04-21 12:43:13 +00:00
utils
www
.arclint
.gitattributes
.gitignore
CMakeLists.txt [CMake] Warn when the version of CMake is older than 3.31.0 (#204203) 2026-06-29 11:16:27 -07:00
CREDITS.txt
LICENSE.TXT
Maintainers.md
README

Polly - Polyhedral optimizations for LLVM
-----------------------------------------
http://polly.llvm.org/

Polly uses a mathematical representation, the polyhedral model, to represent and
transform loops and other control flow structures. Using an abstract
representation it is possible to reason about transformations in a more general
way and to use highly optimized linear programming libraries to figure out the
optimal loop structure. These transformations can be used to do constant
propagation through arrays, remove dead loop iterations, optimize loops for
cache locality, optimize arrays, apply advanced automatic parallelization, drive
vectorization, or they can be used to do software pipelining.