[PATCH] D127107: llvm-reduce: Add reduction pass for MachineBasicBlocks

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 6 05:42:42 PDT 2022


arsenm created this revision.
arsenm added reviewers: markus, aeubanks, qcolombet, reames, paquette, aemerson, craig.topper.
Herald added subscribers: StephenFan, mgorny.
Herald added a project: All.
arsenm requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

Tries to follow the same basic strategy as the IR block reduction, but
producing plausibly valid MIR is a lot harder than the IR. We can't
replace block references with undef, so use a dummy empty block
inserted at the end of the function. We also have to figure out a
place to place IMPLICIT_DEFs and try to handle non-SSA liveness.

      

This doesn't completely handle everything necessary. It currently
doesn't really try to maintain physical register liveness, cleanup
gMIR control flow gMIR, or non-control flow block references.

      

This will also leave a lot of kept blocks as dead code if all blocks
between the entry and the kept block are deleted. It should probably
figure out some way to reconnect them to the CFG.


https://reviews.llvm.org/D127107

Files:
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-basic-phi.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-bundle-liveness.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-dominator-is-deleted.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-entry-fallthrough.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-existing-undef-block.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-g_br.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-g_brjt.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-live-through-idom.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-phi-live-throughs.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-phi-loop.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-redef-reg-in-deleted-block.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-remove-multi-pred-undef-block.mir
  llvm/test/tools/llvm-reduce/mir/reduce-blocks-si-if.mir
  llvm/tools/llvm-reduce/CMakeLists.txt
  llvm/tools/llvm-reduce/DeltaManager.cpp
  llvm/tools/llvm-reduce/ReducerWorkItem.cpp
  llvm/tools/llvm-reduce/deltas/ReduceBlocksMIR.cpp
  llvm/tools/llvm-reduce/deltas/ReduceBlocksMIR.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D127107.434446.patch
Type: text/x-patch
Size: 48001 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220606/f3b660b2/attachment.bin>


More information about the llvm-commits mailing list