From 434dde9996e759756012f1daacc8d16b3450516f Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Tue, 5 Mar 2013 11:58:25 +0000 Subject: [PATCH] [Sanitizer] Add methods back() and pop_back() to InternalVector. Patch by Sergey Matveev llvm-svn: 176478 --- compiler-rt/lib/sanitizer_common/sanitizer_common.h | 8 ++++++++ compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h index ce04919..021da70 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common.h @@ -287,6 +287,14 @@ class InternalVector { } data_[size_++] = element; } + T &back() { + CHECK_GT(size_, 0); + return data_[size_ - 1]; + } + void pop_back() { + CHECK_GT(size_, 0); + size_--; + } uptr size() { return size_; } diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc b/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc index 1ffcde22..7b2232bf 100644 --- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc +++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc @@ -105,6 +105,11 @@ TEST(SanitizerCommon, InternalVector) { for (uptr i = 0; i < 100; i++) { EXPECT_EQ(vector[i], i); } + for (int i = 99; i >= 0; i--) { + EXPECT_EQ(vector.back(), i); + vector.pop_back(); + EXPECT_EQ(vector.size(), i); + } } } // namespace __sanitizer -- 2.7.4