Ensure SmallVector::insert doesn't overwrite the last element in the range with the...
authorDavid Blaikie <dblaikie@gmail.com>
Sun, 8 Jun 2014 16:00:02 +0000 (16:00 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Sun, 8 Jun 2014 16:00:02 +0000 (16:00 +0000)
commit789df06f876b5cc5ccd940ed76cb0b25f2fdb585
tree81639a40807c8f2a134d6243b573257de6612818
parent8804e5cb499ab48ede014515f59cb557810ec29a
Ensure SmallVector::insert doesn't overwrite the last element in the range with the already-moved-from value

This would cause the last element in a range to be in a moved-from state
after an insert at a non-end position, losing that value entirely in the
process.

Side note: move_backward is subtle. It copies [A, B) to C-1 and down.
(the fact that it decrements both the second and third iterators before
the first movement is the subtle part... kind of surprising, anyway)

llvm-svn: 210426
llvm/include/llvm/ADT/SmallVector.h
llvm/unittests/ADT/SmallVectorTest.cpp