)]}'
{
  "commit": "3109d03cffac663e4bd297095c382bc83d1216a4",
  "tree": "bd823fe542a37febe84d83a3597a6a48ec46ec30",
  "parents": [
    "dd429fa8c88bd8a1f416ab7a456b0ac984f99473"
  ],
  "author": {
    "name": "Florian Hahn",
    "email": "flo@fhahn.com",
    "time": "Sat Apr 17 18:16:07 2021 +0100"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Sat Apr 17 21:34:50 2021 -0700"
  },
  "message": "[ADT] Update RPOT to work with specializations of different types.\n\nAt the moment, ReversePostOrderTraversal performs a post-order walk on\nthe entry node of the passed in graph, rather than the graph type\nitself.\n\nIf GT::NodeRef is the same as GraphT, everything works as expected and\nthis is the case for the current uses in-tree. But it does not work as\nexpected if GraphT !\u003d GT::NodeRef. In that case, we either fail to build\n(if there is no GraphTrait specialization for GT:NodeRef) or we pick the\nGraphTrait specialization for GT::NodeRef, instead of the specialization\nof GraphT.\n\nBoth the depth-first and post-order iterators pick the expected\nspecalization and this patch updates ReversePostOrderTraversal to\ndelegate to po_begin \u0026 po_end to pick the right specialization, rather\nthan forcing using GraphTraits\u003cGT::NodeRef\u003e, by first getting the entry\nnode.\n\nThis makes `ReversePostOrderTraversal\u003cGraph\u003c6\u003e\u003e RPOT(G);` build and\nwork as expected in the test.\n\nReviewed By: dexonsmith\n\nDifferential Revision: https://reviews.llvm.org/D100169\n\nGitOrigin-RevId: d91f864ced6eebe8db35c092c8da29e87cd882b2\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3ab76d7cf7402c945bb16a8e13f945aad53be31d",
      "old_mode": 33188,
      "old_path": "include/llvm/ADT/PostOrderIterator.h",
      "new_id": "74314d39d825b2fe1cffa1fc20fe91dfcf864b33",
      "new_mode": 33188,
      "new_path": "include/llvm/ADT/PostOrderIterator.h"
    },
    {
      "type": "modify",
      "old_id": "8e53247fc2f6f7403974bab514cecde01f8b4ecd",
      "old_mode": 33188,
      "old_path": "unittests/ADT/PostOrderIteratorTest.cpp",
      "new_id": "e9ab251f4229aece04e52c208d0e403e8cdf0329",
      "new_mode": 33188,
      "new_path": "unittests/ADT/PostOrderIteratorTest.cpp"
    }
  ]
}
