[PATCH] D50311: [WIP!][DomTreeUpdater/Auto[3]] A new Auto UpdateStrategy candidate

Chijun Sima via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 5 08:16:44 PDT 2018


NutshellySima created this revision.
NutshellySima added a reviewer: kuhar.
Herald added a subscriber: llvm-commits.

> This patch is a work-in-process and I don't intend to commit it. If you are automatically subscribed to this patch, please ignore it.

This patch is the most promising one of the Auto UpdateStrategy implementations.

This patch is an approach to solve the problems in the current `DomTreeUpdater` and `JumpThreading` pass. (We need to figure out the previous state of the CFG when we call `applyUpdates()/insertEdge()/deleteEdge()` or we need to concern about the internal state of the `DomTreeUpdater`). It shows a similar performance on bitcode files with the current `DomTreeUpdater` working under Lazy UpdateStrategy after converting `CorrelatedValuePropagation/RewriteStatepointsForGC/JumpThreading` and testing under the `-O3` pipeline.
This patch implements the Auto UpdateStrategy by getting a snapshot of the single from point if it didn't get one when user calls `DTU.isAboutToChange()`. Then use the information submitted by users (especially the From points) to narrow down the changes needs to be applied. When a flush() happens, it diffs the narrowed down range of points, thus it shows a rather good performance in line with the current one.


Repository:
  rL LLVM

https://reviews.llvm.org/D50311

Files:
  include/llvm/IR/DomTreeUpdater.h
  lib/IR/DomTreeUpdater.cpp
  unittests/IR/DomTreeUpdaterTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50311.159216.patch
Type: text/x-patch
Size: 13059 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180805/99d62756/attachment.bin>


More information about the llvm-commits mailing list