Add new utilities for RTTI Operation casting: dyn_cast_or_null and isa_nonnull
authorRiver Riddle <riverriddle@google.com>
Fri, 5 Apr 2019 19:24:03 +0000 (12:24 -0700)
committerMehdi Amini <joker.eph@gmail.com>
Mon, 8 Apr 2019 01:20:07 +0000 (18:20 -0700)
commite4628b79fb810be529157cdf1197bea78f059c3e
tree0250df1394c04ca7056dab5ea1da23fec81d848c
parent4cda344e7b92d965525df15b1193eb6e7370ba7e
Add new utilities for RTTI Operation casting: dyn_cast_or_null and isa_nonnull
    * dyn_cast_or_null
      - This will first check if the operation is null before trying to 'dyn_cast':

        Value *v = ...;
        if (auto forOp = dyn_cast_or_null<AffineForOp>(v->getDefiningOp()))
          ...
    * isa_nonnull
      - This will first check if the pointer is null before trying to 'isa':

        Value *v = ...;
        if (isa_nonnull<AffineForOp>(v->getDefiningOp());
          ...

--

PiperOrigin-RevId: 242171343
mlir/examples/Linalg/Linalg1/lib/SliceOp.cpp
mlir/examples/Linalg/Linalg1/lib/Utils.cpp
mlir/examples/toy/Ch4/mlir/ToyCombine.cpp
mlir/include/mlir/IR/Operation.h
mlir/lib/AffineOps/AffineOps.cpp
mlir/lib/Analysis/AffineAnalysis.cpp
mlir/lib/Analysis/AffineStructures.cpp
mlir/lib/Analysis/Utils.cpp
mlir/lib/EDSC/Builders.cpp
mlir/lib/StandardOps/Ops.cpp
mlir/lib/Transforms/LoopFusion.cpp