)]}'
{
  "commit": "598ae4fa2e4da8b0a4b839c8c26b6cd3f672a968",
  "tree": "a42814e786626dd74bd3d1fee4221a2eab71c60e",
  "parents": [
    "1496b0e710aa010a384910b36d10a257cdeae2b7"
  ],
  "author": {
    "name": "Tom Stellard",
    "email": "tstellar@redhat.com",
    "time": "Wed Nov 22 15:06:35 2017 +0000"
  },
  "committer": {
    "name": "Tom Stellard",
    "email": "tstellar@redhat.com",
    "time": "Wed Nov 22 15:06:35 2017 +0000"
  },
  "message": "Merging r315994:\n\n------------------------------------------------------------------------\nr315994 | ericwf | 2017-10-17 06:03:17 -0700 (Tue, 17 Oct 2017) | 18 lines\n\n[libc++] Fix PR34898 - vector iterator constructors and assign method perform push_back instead of emplace_back.\n\nSummary:\nThe constructors `vector(Iter, Iter, Alloc \u003d Alloc{})` and `assign(Iter, Iter)` don\u0027t correctly perform EmplaceConstruction from the result of dereferencing the iterator. This results in them performing an additional and unneeded copy.\n\nThis patch addresses the issue by correctly using `emplace_back` in C++11 and newer.\n\nThere are also some bugs in our `insert` implementation, but those will be handled separately.\n\n@mclow.lists We should probably merge this into 5.1, agreed?\n\nReviewers: mclow.lists, dlj, EricWF\n\nReviewed By: mclow.lists, EricWF\n\nSubscribers: cfe-commits, mclow.lists\n\nDifferential Revision: https://reviews.llvm.org/D38757\n------------------------------------------------------------------------\n\ngit-svn-id: https://llvm.org/svn/llvm-project/libcxx/branches/release_50@318837 91177308-0d34-0410-b5e6-96231b3b80d8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f795b489edc64158eedb0f2c683146a33f113dc5",
      "old_mode": 33188,
      "old_path": "include/deque",
      "new_id": "fee75614b97f2e654cf399252e5657b147a06207",
      "new_mode": 33188,
      "new_path": "include/deque"
    },
    {
      "type": "modify",
      "old_id": "20a66c36002df66964ed53dd8b95a4798b7a9c43",
      "old_mode": 33188,
      "old_path": "include/list",
      "new_id": "9c70fff946c7df803dddc679e42a8f6aa408f857",
      "new_mode": 33188,
      "new_path": "include/list"
    },
    {
      "type": "modify",
      "old_id": "6e9920a0f80f06ed08131d4ca8895b330c350e07",
      "old_mode": 33188,
      "old_path": "include/vector",
      "new_id": "b2f8f092c63da336dfcda67ec4ccd0544d9fa8aa",
      "new_mode": 33188,
      "new_path": "include/vector"
    },
    {
      "type": "modify",
      "old_id": "f06067786cfde6640540cd05938e9ae7d44f05b0",
      "old_mode": 33188,
      "old_path": "test/std/containers/sequences/deque/deque.cons/assign_iter_iter.pass.cpp",
      "new_id": "940d4e8d681544b76c1026993b0e2057af5285ee",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/deque/deque.cons/assign_iter_iter.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "87445c5b2b6738d1ecdf836fc719fc5e412cecad",
      "old_mode": 33188,
      "old_path": "test/std/containers/sequences/deque/deque.cons/iter_iter.pass.cpp",
      "new_id": "793f2b12a2ded40c2589caef841e6d072d0514fe",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/deque/deque.cons/iter_iter.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "54227ebc12d8df1d603d2416ff2a3b662f4544d5",
      "old_mode": 33188,
      "old_path": "test/std/containers/sequences/deque/deque.cons/iter_iter_alloc.pass.cpp",
      "new_id": "9ac342a8f7678b4b10076176b4614a464608e6d5",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/deque/deque.cons/iter_iter_alloc.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "3b3c2f7ef1abd04ef63a18d1a66063d133b9f1f9",
      "old_mode": 33188,
      "old_path": "test/std/containers/sequences/list/list.cons/input_iterator.pass.cpp",
      "new_id": "3cdcc73627b876dd434135d36b012586e43e03fc",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/list/list.cons/input_iterator.pass.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f07495637aa736f864889d3985ad5c6928605da5",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/vector/vector.cons/assign_iter_iter.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "ec4944d1ad1c7098a910b5e41ba357e94d610033",
      "old_mode": 33188,
      "old_path": "test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp",
      "new_id": "88613efe7a2bd543b5c298aaa051749a8263b767",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "b4482ddb2727c3b4be8efbe1a1475efb3b029449",
      "old_mode": 33188,
      "old_path": "test/std/containers/sequences/vector/vector.cons/construct_iter_iter_alloc.pass.cpp",
      "new_id": "71743b31d44c7ee97e32cc874e0e536f48e8ef0d",
      "new_mode": 33188,
      "new_path": "test/std/containers/sequences/vector/vector.cons/construct_iter_iter_alloc.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "08e88f09146164c9e1c4966abea2d9855cdc6797",
      "old_mode": 33188,
      "old_path": "test/support/container_test_types.h",
      "new_id": "b8422ec4602d21faf41ac1c6a7096ebdc4adf2a0",
      "new_mode": 33188,
      "new_path": "test/support/container_test_types.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f2bc0ec6a3672c7d0340ea42df8e2745bd55bc7a",
      "new_mode": 33188,
      "new_path": "test/support/emplace_constructible.h"
    }
  ]
}
