diff --git a/sys/include/benchmark.h b/sys/include/benchmark.h
index 9a321a3d4d5e0e89127ef67aecde7018c8c27e88..47beefa90605eb1ab562fe5488ecc2637f3c3273 100644
--- a/sys/include/benchmark.h
+++ b/sys/include/benchmark.h
@@ -29,13 +29,6 @@
 extern "C" {
 #endif
 
-/**
- * @brief   Prepare the current scope for running BENCHMARK_x() macros
- */
-#define BENCHMARK_SETUP()                       \
-    unsigned state;                             \
-    unsigned time
-
 /**
  * @brief   Measure the runtime of a given function call
  *
@@ -43,21 +36,21 @@ extern "C" {
  * using a preprocessor function, as going with a function pointer or similar
  * would influence the measured runtime...
  *
- * @note    BENCHMARK_SETUP() needs to be called in the same scope
- *
  * @param[in] name      name for labeling the output
  * @param[in] runs      number of times to run @p func
  * @param[in] func      function call to benchmark
  */
-#define BENCHMARK_FUNC(name, runs, func)        \
-    state = irq_disable();                      \
-    time = xtimer_now_usec();                   \
-    for (unsigned long i = 0; i < runs; i++) {  \
-        func;                                   \
-    }                                           \
-    time = (xtimer_now_usec() - time);          \
-    irq_restore(state);                         \
-    benchmark_print_time(time, runs, name)
+#define BENCHMARK_FUNC(name, runs, func)                    \
+    {                                                           \
+        unsigned _benchmark_irqstate = irq_disable();           \
+        uint32_t _benchmark_time = xtimer_now_usec();           \
+        for (unsigned long i = 0; i < runs; i++) {              \
+            func;                                               \
+        }                                                       \
+        _benchmark_time = (xtimer_now_usec() - _benchmark_time);\
+        irq_restore(_benchmark_irqstate);                       \
+        benchmark_print_time(_benchmark_time, runs, name);      \
+    }
 
 /**
  * @brief   Output the given time as well as the time per run on STDIO
diff --git a/tests/periph_gpio/main.c b/tests/periph_gpio/main.c
index f383f24b2be5efd5e8d8f9313af20c2d3b62f911..56bfd33b831f770ef46be563d5c3d43e124446db 100644
--- a/tests/periph_gpio/main.c
+++ b/tests/periph_gpio/main.c
@@ -221,7 +221,6 @@ static int bench(int argc, char **argv)
     }
 
     puts("\nGPIO driver run-time performance benchmark\n");
-    BENCHMARK_SETUP();
     BENCHMARK_FUNC("nop loop", runs, __asm__ volatile("nop"));
     BENCHMARK_FUNC("gpio_set", runs, gpio_set(pin));
     BENCHMARK_FUNC("gpio_clear", runs, gpio_clear(pin));