llvm-project/mlir
Nicolas Vasilache 4911978f7e [MLIR] Value types for AffineXXXExpr
This CL makes AffineExprRef into a value type.

Notably:
1. drops llvm isa, cast, dyn_cast on pointer type and uses member functions on
the value type. It may be possible to still use classof  (in a followup CL)
2. AffineBaseExprRef aggressively casts constness away: if we mean the type is
immutable then let's jump in with both feet;
3. Drop implicit casts to the underlying pointer type because that always
results in surprising behavior and is not needed in practice once enough
cleanup has been applied.

The remaining negative I see is that we still need to mix operator. and
operator->. There is an ugly solution that forwards the methods but that ends
up duplicating the class hierarchy which I tried to avoid as much as
possible. But maybe it's not that bad anymore since AffineExpr.h would still
contain a single class hierarchy (the duplication would be impl detail in.cpp)

PiperOrigin-RevId: 216188003
2019-03-29 13:24:31 -07:00
..
include/mlir [MLIR] Value types for AffineXXXExpr 2019-03-29 13:24:31 -07:00
lib [MLIR] Value types for AffineXXXExpr 2019-03-29 13:24:31 -07:00
test Rename affineint type to index type. The name 'index' may not be perfect, but is better than the old name. Here is some justification: 2019-03-29 13:24:16 -07:00
tools Introduce loop body skewing / loop pipelining / loop shifting utility. 2019-03-29 13:21:26 -07:00
utils Rename affineint type to index type. The name 'index' may not be perfect, but is better than the old name. Here is some justification: 2019-03-29 13:24:16 -07:00
.clang-format [mlir] add .clang-format 2019-03-29 12:41:43 -07:00
LICENSE.TXT Continue sketching out basic infrastructure, including an input and output 2019-03-29 12:23:51 -07:00