mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-06 02:29:51 +00:00
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247259 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cd31ffda2a
commit
790d0549ef
@ -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];
|
||||
|
Loading…
x
Reference in New Issue
Block a user