From: Chandler Carruth Date: Mon, 14 Apr 2014 06:42:56 +0000 (+0000) Subject: [Allocator] Hoist the external helper function into a namespace scope X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=1907f75445f4757f91d4a52f8a857a1f412fffce [Allocator] Hoist the external helper function into a namespace scope declaration. GCC 4.7 appears to get hopelessly confused by declaring this function within a member function of a class template. Go figure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206152 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Support/Allocator.h b/include/llvm/Support/Allocator.h index 4a5e1b32a50..19ef4e834a5 100644 --- a/include/llvm/Support/Allocator.h +++ b/include/llvm/Support/Allocator.h @@ -67,6 +67,14 @@ public: void Deallocate(void *Slab, size_t Size) { Allocator.Deallocate(Slab); } }; +namespace detail { + +// We call out to an external function to actually print the message as the +// printing code uses Allocator.h in its implementation. +void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated, + size_t TotalMemory); +} // End namespace detail. + /// \brief Allocate memory in an ever growing pool, as if by bump-pointer. /// /// This isn't strictly a bump-pointer allocator as it uses backing slabs of @@ -200,12 +208,8 @@ public: } void PrintStats() const { - // We call out to an external function to actually print the message as the - // printing code uses Allocator.h in its implementation. - extern void printBumpPtrAllocatorStats( - unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory); - - printBumpPtrAllocatorStats(Slabs.size(), BytesAllocated, getTotalMemory()); + detail::printBumpPtrAllocatorStats(Slabs.size(), BytesAllocated, + getTotalMemory()); } private: diff --git a/lib/Support/Allocator.cpp b/lib/Support/Allocator.cpp index ae861c8c4b6..7c306b2370e 100644 --- a/lib/Support/Allocator.cpp +++ b/lib/Support/Allocator.cpp @@ -21,6 +21,8 @@ namespace llvm { +namespace detail { + void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory) { errs() << "\nNumber of memory regions: " << NumSlabs << '\n' @@ -30,6 +32,8 @@ void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated, << " (includes alignment, etc)\n"; } +} // End namespace detail. + void PrintRecyclerStats(size_t Size, size_t Align, size_t FreeListSize) {