From 72794f8ff1c1e79bd0350bb52fb3757bdf04d004 Mon Sep 17 00:00:00 2001 From: balr0g Date: Sun, 7 Jun 2015 10:20:43 -0400 Subject: [PATCH] Use attribute unused for inlined new/delete. (nw) This is still not compliant code, and will probably break with LTO, but is a cleaner fix for the warning. Using this attribute also ensures that the linker doesn't remove the code. --- scripts/genie.lua | 1 - src/lib/util/corealloc.h | 8 ++++---- src/osd/osdcomm.h | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/genie.lua b/scripts/genie.lua index bdd97f427c5..7a591db050b 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -923,7 +923,6 @@ end end if (version >= 30400) then buildoptions { - "-Wno-inline-new-delete", "-Wno-constant-logical-operand", } end diff --git a/src/lib/util/corealloc.h b/src/lib/util/corealloc.h index 5b002557769..a3f05ddd270 100644 --- a/src/lib/util/corealloc.h +++ b/src/lib/util/corealloc.h @@ -60,10 +60,10 @@ class zeromem_t { }; #ifndef NO_MEM_TRACKING // standard new/delete operators (try to avoid using) -ATTR_FORCE_INLINE inline void *operator new(std::size_t size) throw (std::bad_alloc) { return malloc_file_line(size, NULL, 0, false, true, false); } -ATTR_FORCE_INLINE inline void *operator new[](std::size_t size) throw (std::bad_alloc) { return malloc_file_line(size, NULL, 0, true, true, false); } -ATTR_FORCE_INLINE inline void operator delete(void *ptr) throw() { if (ptr != NULL) free_file_line(ptr, NULL, 0, false); } -ATTR_FORCE_INLINE inline void operator delete[](void *ptr) throw() { if (ptr != NULL) free_file_line(ptr, NULL, 0, true); } +ATTR_FORCE_INLINE ATTR_USED inline void *operator new(std::size_t size) throw (std::bad_alloc) { return malloc_file_line(size, NULL, 0, false, true, false); } +ATTR_FORCE_INLINE ATTR_USED inline void *operator new[](std::size_t size) throw (std::bad_alloc) { return malloc_file_line(size, NULL, 0, true, true, false); } +ATTR_FORCE_INLINE ATTR_USED inline void operator delete(void *ptr) throw() { if (ptr != NULL) free_file_line(ptr, NULL, 0, false); } +ATTR_FORCE_INLINE ATTR_USED inline void operator delete[](void *ptr) throw() { if (ptr != NULL) free_file_line(ptr, NULL, 0, true); } #endif diff --git a/src/osd/osdcomm.h b/src/osd/osdcomm.h index 2df16b8db02..e41d9663615 100644 --- a/src/osd/osdcomm.h +++ b/src/osd/osdcomm.h @@ -31,6 +31,7 @@ /* Some optimizations/warnings cleanups for GCC */ #if defined(__GNUC__) && (__GNUC__ >= 3) #define ATTR_UNUSED __attribute__((__unused__)) +#define ATTR_USED __attribute__((__used__)) #define ATTR_NORETURN __attribute__((noreturn)) #define ATTR_PRINTF(x,y) __attribute__((format(printf, x, y))) #define ATTR_MALLOC __attribute__((malloc))