Skip to content
  1. Mar 19, 2021
    • Andrew Young's avatar
      [mlir] Support use-def cycles in graph regions during regionDCE · f178c13f
      Andrew Young authored
      When deleting operations in DCE, the algorithm uses a post-order walk of
      the IR to ensure that value uses were erased before value defs. Graph
      regions do not have the same structural invariants as SSA CFG, and this
      post order walk could delete value defs before uses.  This problem is
      guaranteed to occur when there is a cycle in the use-def graph.
      
      This change stops DCE from visiting the operations and blocks in any
      meaningful order.  Instead, we rely on explicitly dropping all uses of a
      value before deleting it.
      
      Reviewed By: mehdi_amini, rriddle
      
      Differential Revision: https://reviews.llvm.org/D98919
      f178c13f
  2. Feb 12, 2021
  3. Jun 12, 2020
  4. May 05, 2020
  5. Mar 30, 2020
  6. Mar 05, 2020
    • River Riddle's avatar
      [mlir] Remove successor operands from the Operation class · cb177712
      River Riddle authored
      Summary:
      This revision removes all of the functionality related to successor operands on the core Operation class. This greatly simplifies a lot of handling of operands, as well as successors. For example, DialectConversion no longer needs a special "matchAndRewrite" for branching terminator operations.(Note, the existing method was also broken for operations with variadic successors!!)
      
      This also enables terminator operations to define their own relationships with successor arguments, instead of the hardcoded "pass-through" behavior that exists today.
      
      Differential Revision: https://reviews.llvm.org/D75318
      cb177712
  7. Nov 21, 2019
  8. Nov 20, 2019
    • Sean Silva's avatar
      Add multi-level DCE pass. · e4f83c6c
      Sean Silva authored
      This is a simple multi-level DCE pass that operates pretty generically on
      the IR. Its key feature compared to the existing peephole dead op folding
      that happens during canonicalization is being able to delete recursively
      dead cycles of the use-def graph, including block arguments.
      
      PiperOrigin-RevId: 281568202
      e4f83c6c
Loading