summaryrefslogtreecommitdiff
path: root/src/memory.hh
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2021-07-26 16:55:36 +1000
committerMaxime Coste <mawww@kakoune.org>2021-07-26 16:55:36 +1000
commitcbba348a835ef0e636d6e2015b4ef0d11bc476a4 (patch)
tree9ffa7feca9fc6437a605e9144363356ba5efd8c0 /src/memory.hh
parent15aa4fe1379c4cddb2e548bad0c1cd99f7fbf90e (diff)
always inline custom operator new/delete to avoid spurious warnings
GCC 11 warns incorrectly about mismatched new/delete because it auto inlines one but not the other, force inline those function to fix that.
Diffstat (limited to 'src/memory.hh')
-rw-r--r--src/memory.hh6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/memory.hh b/src/memory.hh
index aa71776a..02df470e 100644
--- a/src/memory.hh
+++ b/src/memory.hh
@@ -150,29 +150,35 @@ template<MemoryDomain d>
struct UseMemoryDomain
{
static constexpr MemoryDomain Domain = d;
+
+ [[gnu::always_inline]]
static void* operator new(size_t size)
{
on_alloc(Domain, size);
return ::operator new(size);
}
+ [[gnu::always_inline]]
static void* operator new[](size_t size)
{
on_alloc(Domain, size);
return ::operator new[](size);
}
+ [[gnu::always_inline]]
static void* operator new(size_t size, void* ptr)
{
return ::operator new(size, ptr);
}
+ [[gnu::always_inline]]
static void operator delete(void* ptr, size_t size)
{
on_dealloc(Domain, size);
::operator delete(ptr);
}
+ [[gnu::always_inline]]
static void operator delete[](void* ptr, size_t size)
{
on_dealloc(Domain, size);