From 4ad2fe110118cab212d40c40ffb8ee4a43e11d33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannik=20M=C3=BCller?= <y.mueller@fz-juelich.de>
Date: Tue, 26 Sep 2023 10:36:36 +0200
Subject: [PATCH] minimize macro code size

---
 benchmark/portals4_macros.h | 52 +++++++++++++++++++++++++++----------
 1 file changed, 38 insertions(+), 14 deletions(-)

diff --git a/benchmark/portals4_macros.h b/benchmark/portals4_macros.h
index 91fb342..4d63e56 100644
--- a/benchmark/portals4_macros.h
+++ b/benchmark/portals4_macros.h
@@ -1,18 +1,42 @@
 #ifndef LINKTEST_PORTALS4MACROS_H
 #define LINKTEST_PORTALS4MACROS_H
-// NOLINTBEGIN
-#define CHECK_RETURNVAL(x) do { int ret; \
-    switch (ret = x) { \
-        case PTL_IGNORED: \
-        case PTL_OK: break; \
-        case PTL_FAIL: fprintf(stderr, "=> %s returned PTL_FAIL (line %u)\n", #x, (unsigned int)__LINE__); abort(); break; \
-        case PTL_NO_SPACE: fprintf(stderr, "=> %s returned PTL_NO_SPACE (line %u)\n", #x, (unsigned int)__LINE__); abort(); break; \
-        case PTL_ARG_INVALID: fprintf(stderr, "=> %s returned PTL_ARG_INVALID (line %u)\n", #x, (unsigned int)__LINE__); abort(); break; \
-        case PTL_NO_INIT: fprintf(stderr, "=> %s returned PTL_NO_INIT (line %u)\n", #x, (unsigned int)__LINE__); abort(); break; \
-        case PTL_PT_IN_USE: fprintf(stderr, "=> %s returned PTL_PT_IN_USE (line %u)\n", #x, (unsigned int)__LINE__); abort(); break; \
-        case PTL_IN_USE: fprintf(stderr, "=> %s returned PTL_IN_USE (line %u)\n", #x, (unsigned int)__LINE__); abort(); break; \
-        default: fprintf(stderr, "=> %s returned failcode %i (line %u)\n", #x, ret, (unsigned int)__LINE__); abort(); break; \
-    } } while (0) 
-// NOLINTEND
+inline void check_returnval(int x, const char* x_str, unsigned int line) {
+    int ret;
+    switch (ret = x) {
+        case PTL_IGNORED:
+        case PTL_OK:
+            break;
+        case PTL_FAIL:
+            fprintf(stderr, "=> %s returned PTL_FAIL (line %u)\n", x_str, line);
+            abort();
+            break;
+        case PTL_NO_SPACE:
+            fprintf(stderr, "=> %s returned PTL_NO_SPACE (line %u)\n", x_str, line);
+            abort();
+            break;
+        case PTL_ARG_INVALID:
+            fprintf(stderr, "=> %s returned PTL_ARG_INVALID (line %u)\n", x_str, line);
+            abort();
+            break;
+        case PTL_NO_INIT:
+            fprintf(stderr, "=> %s returned PTL_NO_INIT (line %u)\n", x_str, line);
+            abort();
+            break;
+        case PTL_PT_IN_USE:
+            fprintf(stderr, "=> %s returned PTL_PT_IN_USE (line %u)\n", x_str, line);
+            abort();
+            break;
+        case PTL_IN_USE:
+            fprintf(stderr, "=> %s returned PTL_IN_USE (line %u)\n", x_str, line);
+            abort();
+            break;
+        default:
+            fprintf(stderr, "=> %s returned failcode %i (line %u)\n", x_str, ret, line);
+            abort();
+            break;
+    }
+}
+
+#define CHECK_RETURNVAL(x) check_returnval(x, #x, __LINE__) // NOLINT
 
 #endif //PORTALS4MACROS
\ No newline at end of file
-- 
GitLab