From b74deb9530ab9c7c843d8084bacd9e8e02a6542e Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Tue, 12 Aug 2014 07:29:54 +0200 Subject: [PATCH] More efficient MINOF/MAXOF macros for gnuc/clang --- libtu/minmax.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libtu/minmax.h b/libtu/minmax.h index eae545a0..29119660 100644 --- a/libtu/minmax.h +++ b/libtu/minmax.h @@ -10,8 +10,20 @@ #ifndef LIBTU_MINMAX_H #define LIBTU_MINMAX_H +#if defined(__GNUC__) || defined(__clang__) + +#define MINOF(a, b) __extension__ ({ \ + __typeof(a) a_ = (a); __typeof(b) b_ = (b); \ + ((a_) < (b_) ? (a_) : (b_)); }) +#define MAXOF(a, b) __extension__ ({ \ + __typeof(a) a_ = (a); __typeof(b) b_ = (b); \ + ((a_) > (b_) ? (a_) : (b_)); }) + +#else + #define MINOF(X,Y) ((X) < (Y) ? (X) : (Y)) #define MAXOF(X,Y) ((X) > (Y) ? (X) : (Y)) +#endif #endif /* LIBTU_MINMAX_H */ -- 2.11.4.GIT