summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-09-10 09:46:47 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-09-10 09:46:47 +0000
commit9e1c0c15004a3a059586cd013177abe332dfb491 (patch)
tree93cf604414a8585c2baca8aa8f533adade55c95d
parentf4e8b92ff528917460b0578fbe764d48383aa29d (diff)
downloadbcm5719-llvm-9e1c0c15004a3a059586cd013177abe332dfb491.tar.gz
bcm5719-llvm-9e1c0c15004a3a059586cd013177abe332dfb491.zip
[ADT] Force inline several super boring and unusually hot methods on
SmallVector to further help debug builds not waste their time calling one line functions. To give you an idea of why this is worthwhile, this change alone gets another >10% reduction in the runtime of TripleTest.Normalization! It's now under 9 seconds for me. Sadly, this is the end of the easy wins for that test. Anything further will require some different architecture of the test itself. Still, I'm pretty happy. 'check-llvm' now is under 35s for me. llvm-svn: 247259
-rw-r--r--llvm/include/llvm/ADT/SmallVector.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/SmallVector.h b/llvm/include/llvm/ADT/SmallVector.h
index b9384702c3b..d1062acbbb6 100644
--- a/llvm/include/llvm/ADT/SmallVector.h
+++ b/llvm/include/llvm/ADT/SmallVector.h
@@ -109,9 +109,13 @@ public:
typedef const T *const_pointer;
// forward iterator creation methods.
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
iterator begin() { return (iterator)this->BeginX; }
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
const_iterator begin() const { return (const_iterator)this->BeginX; }
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
iterator end() { return (iterator)this->EndX; }
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
const_iterator end() const { return (const_iterator)this->EndX; }
protected:
iterator capacity_ptr() { return (iterator)this->CapacityX; }
@@ -124,6 +128,7 @@ public:
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const { return const_reverse_iterator(begin());}
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
size_type size() const { return end()-begin(); }
size_type max_size() const { return size_type(-1) / sizeof(T); }
@@ -135,10 +140,12 @@ public:
/// Return a pointer to the vector's buffer, even if empty().
const_pointer data() const { return const_pointer(begin()); }
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
reference operator[](size_type idx) {
assert(idx < size());
return begin()[idx];
}
+ LLVM_ATTRIBUTE_ALWAYS_INLINE
const_reference operator[](size_type idx) const {
assert(idx < size());
return begin()[idx];
OpenPOWER on IntegriCloud