[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] xalloc-oversized: improve performance with GCC 5
From: |
Paul Eggert |
Subject: |
[PATCH] xalloc-oversized: improve performance with GCC 5 |
Date: |
Fri, 13 Nov 2015 12:28:36 -0800 |
* lib/xalloc-oversized.h (xalloc_oversized):
Improve performance with GCC 5 by using __builtin_mul_overflow.
---
ChangeLog | 6 ++++++
lib/xalloc-oversized.h | 13 +++++++++++--
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 7bfce97..fffa98a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-11-13 Paul Eggert <address@hidden>
+
+ xalloc-oversized: improve performance with GCC 5
+ * lib/xalloc-oversized.h (xalloc_oversized):
+ Improve performance with GCC 5 by using __builtin_mul_overflow.
+
2015-11-10 Paul Eggert <address@hidden>
intprops: new public macro EXPR_SIGNED
diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h
index f0e9778..0e579de 100644
--- a/lib/xalloc-oversized.h
+++ b/lib/xalloc-oversized.h
@@ -16,9 +16,13 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef XALLOC_OVERSIZED_H_
-# define XALLOC_OVERSIZED_H_
+#define XALLOC_OVERSIZED_H_
-# include <stddef.h>
+#include <stddef.h>
+
+#ifndef __has_builtin
+# define __has_builtin(x) 0
+#endif
/* Return 1 if an array of N objects, each of size S, cannot exist due
to size arithmetic overflow. S must be positive and N must be
@@ -32,7 +36,12 @@
sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
exactly-SIZE_MAX allocations on such hosts; this avoids a test and
branch when S is known to be 1. */
+#if 5 <= __GNUC__ || __has_builtin (__builtin_mul_overflow)
+# define xalloc_oversized(n, s) \
+ ({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); })
+#else
# define xalloc_oversized(n, s) \
((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+#endif
#endif /* !XALLOC_OVERSIZED_H_ */
--
2.1.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] xalloc-oversized: improve performance with GCC 5,
Paul Eggert <=