[PATCH] D19669: [RewriteStatepointsForGC] Use SetVector/MapVector instead of DenseSet/DenseMap to guarantee stable ordering

Igor Laevsky via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 28 10:03:21 PDT 2016


igor-laevsky created this revision.
igor-laevsky added reviewers: sanjoy, reames.
igor-laevsky added a subscriber: llvm-commits.
Herald added a subscriber: sanjoy.

Goal of this change is to guarantee stable ordering of the statepoint arguments and other newly inserted values such as gc.relocates. Previously we had explicit sorting in a couple of places. However for unnamed values ordering was partial and we didn't have any strong invariant regarding ordering. This change switches all data structures to use SetVector's and MapVector's which provide possibility for deterministic iteration over them. Explicit sorting is now redundant and was removed.

http://reviews.llvm.org/D19669

Files:
  include/llvm/ADT/SetOperations.h
  lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
  test/Transforms/RewriteStatepointsForGC/base-vector.ll
  test/Transforms/RewriteStatepointsForGC/basics.ll
  test/Transforms/RewriteStatepointsForGC/rematerialize-derived-pointers.ll
  test/Transforms/RewriteStatepointsForGC/statepoint-format.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19669.55430.patch
Type: text/x-patch
Size: 16656 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160428/08949203/attachment.bin>


More information about the llvm-commits mailing list